よりぶろ

アプリのUIとかについて書いてく予定

Arduino LeonardoでOLEDに文字を表示する

最近は会社から早く帰ってこれた日は大体Arduinoを触ってました。

Arduinoの中でも触っているのはLeonardoというやつで、キーボードやマウスの入力がこいつを介してパソコンに簡単に出力できるという便利なやつです。

 

で、先日、シリコンハウスでOLEDを買いまして。あ、OLEDっていうのは有機ELディスプレイね。ここで買えます。

Arduinoに繋げばすぐ使える!簡単なコードで表示できる!との謳い文句に惹かれて買ってみました。

 

void setup(){

  Serial.begin(9600); //9600bpsでポートを開く

}

 

void loop(){

  Serial.print("hogehoge"); //表示するテキスト

  delay(1000); //1秒表示

}

 
なんとこれだけでディスプレイに文字が表示できる!すごい!Arduinoすごい!

うまくいけば、Leonardo経由でボタンを押したらディスプレイに何か表示される、そんな素敵なことが起こるんじゃないかと妄想したわけですよ。

そしたら出ないのな。文字。

いや出るんだけど、

f:id:ryo_pan:20121017214413j:plain

なぜかこんな表示になる。何これ?バグ?ちょっと「笹」っぽい。

 

で、久しぶりの半田付けだからすわショートか!と焦りました。

(実際、ピン同士を半田で繋げてしまって回路がめっちゃ熱くなった)

 

そんなわけで次の日に2つ目を買ってきました。ちなみにこれ、1つ3,000円な!

でも同じ文字が出る。半田付けはうまくいってる。

 

…ひょっとしてLeonardoが悪いんじゃね?

僕は長い間置物にしていたDuemilanoveを繋げた。

 

 

で、で、で、でたーーーーーーーーー!

まさかの1発OK!

 

おいまじかよ俺の3,000円…

こうなるともう原因は明確なわけで、さっそくインターネットをさまようことにした。

海外のForumとかを覗いて、ようやく Serial. ではなく Serial1. と書けばいけるということがわかりました。

ていうかLeonardoの紹介ページを見ると実は書いてあったりする。気が付かなかった…

 

そういうわけで、これからLeonardo使って文字表示しようと考えてる人はSerial1でいきましょー

 

ちなみに、printで入れた文字が表示されるはされるのですが、うまく改行してくれなかったり(シリコンハウスの説明PDFには 0x0a は改行として機能するって書いてあるのに…)したので、なんともめんどくさいことにアスキーコードで1文字ずつ入れました。

アスキーコードとかなにそれって自分には全くもって何から始めればいいかわからなかったのですが、こちらこちらのページを見つけて、無事文字を表示したり改行したりすることができました。多謝。