Arduinoでラリコン作る話(2)→ATtiny44でラリコン作る話(2)
Arduino UNOでGPS使った簡易ラリコンを作った話を「Arduinoでラリコン作る話」としてまとめようと思っていたんですが、ATtiny44が来ちゃったのでこっちに載せ替えることにしました。
ほら、現在進行系でハマってるほうが楽しいでしょ?
構成要素と方針
基本同じです(ATtiny44+GPSモジュール+LCD1602+スイッチボード)。
ただ、Arduino UNOよりGPIOが少ないので、LCDはI2Cで制御してみます(今回)。
しかし、ここにGPSのソフトウェアシリアルとかタイマー割り込みかけると結構CPU負荷高そうだけど大丈夫かな・・・
もしダメそうなら、またその時に対応考えます(泥縄式)
ちなみに、それぞれCPUの違いなどはこのページが詳しいです↓
Arduinoで作った回路の小型化(Arduino互換機の製作)(10) - しなぷすのハード製作記
まずはArduino UNOでLCD1602を動かしてみる
これまでは4bitパラレルで接続して表示させていたので、I2Cで動かすのは初めてです。
とりあえず、Arduino UNOを使って、ちゃんと動作するか確認します。
ライブラリは"liquidcrystal-i2c"を使います。
普通にIDEの スケッチ|ライブラリをインクルード|ライブラリを管理 からインストールしてやればOK。
www.arduino.cc
ソースは適当に拾ってコピペします(苦笑)
#include <LiquidCrystal_I2C.h> // I2C address 0x27 16x2 LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Hello world"); lcd.setCursor(0, 1); // キョウハイイテンキ lcd.print("\xb7\xae\xb3\xca\xb2\xb2\xc3\xdd\xb7"); } void loop() { }
Arduino UNOとの接続ですが、
- SDA→A4
- SCL→A5
としてあげれば良いようです(D4/D5ではありません!チューイせよ)
接続したらスケッチをコンパイルしてアップロード
簡単ですね!
ライブラリがいろいろ揃っていると本当に楽です。
はい!次行ってみよー!(cv.いかりや長介)
ATtiny44でもLCD1602を動かしてみる
さて本日のメインイベント。
ネット見てみたんですが、あんまりATtiny44でLCD1602動かしたみたいなページないんですよね・・・
ということはアレだ、むっちゃ簡単かむっちゃ難しいの2択だ!
多分むっちゃ簡単なんだろう(←楽観的)
まず配線ですが、ATtiny44の場合、
- SDA→PA6
- SCL→PA4
となっているようです(ピン配置などはここにデータシートがあります←ぶん投げ)。
スケッチの書き込みにはさっきのArduino UNOを使うので、ごちゃごちゃ配線する前にArduinoISPを書き込んでおかないと・・・ほらさっき試しにUNOで1602動かしたでしょ?
忘れるとハマりますよ!ハマるからね!ほらハマった!
配線は次のようにしました↓
で、ソースはどうなんだろう・・・
なんか、このままコンパイルしたら動く気がする・・・
ていうか、きっと動く!
ライブラリの中の人が設定とかいい感じにしてくれるに違いない!
じゃ、そのままコンパイル・・・の前に、ボードの設定をUNOからATtiny44にしないと・・・
忘れるとハマ(以下略)
こんな設定ですな。
じゃあコンパイルしてアップロード(「書き込み装置を使って書き込む」)。
SUGEEEEEEEEEE!!!
ほんとに動いた!
これ何気なく動いてますが、割りとスゴいことなんでは?
上位CPUのスケッチをコンパイルし直すだけで動かせるなんて・・・
本当にプロトタイピングに向いているんだな!Arduinoは!(富野話法)
次どうする?
今回表示が動いたので、最低限の情報が確認できるようになりました。
となればGPSモジュールを動かしてみるのになんの躊躇(ちゅうちょ)がありましょうか、いやない(反語)
ていうか、ソフトウェアシリアルがI2Cとバッティングしないのか?ちょっと心配^^;(←キモい絵文字)