2015年10月4日日曜日

Arduino UNOを使ってみた

入門者向けキット付きのArduino UNOの互換ボードを安く買ったので、使用してみました。osoyooという所のを買ったのですが、URLのリンクが切れていました。環境はCent OS 7です。
とりあえず公式サイトからlinux 64bitsのIDEをダウンロードして解凍します。arduinoというELFファイルがあったので、実行したらそのまま動作しました。

Arduino自体が電子回路などの入門者向けで、簡単に回路を作ることが可能です。そのため僅か数時間で液晶ボードに文字を表示させるに至りました。いくつか詰まった点を適当に書いていきます。

まず、IDEはルート権限で起動しないと書き込めませんでした。それから、プロジェクトを「main」という名前にしていたらコンパイルできませんでした。その辺で一旦つまづいたところで、まずはLEDを点滅させる回路を作りました。LEDを13番とGNDに直で繋ぎ、プログラムを書き込みます。
書き込む前にメニューバーの「ツール」->「ボード」みたいなところを選択しておかないといけません。届いたキットにマニュアルは付いていないし、製造元サイトも閉鎖されてたので困りましたが、どうやら普通のarduinoと全く同じ方法でやればいいようです。

void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

言語仕様も非常に分かり易いです。コンパイルして書き込みすると、LEDが点滅しました。わーい。
それだけでは物足りなかったので、セットに付いていたI2D 1602 LCDに文字を表示させようと考えました。かなり前にPIC kitとマイコンでやろうとして、一瞬で挫折した記憶があるLCDに挑戦です。
まずはライブラリをいれます。こちらからライブラリをダウンロードして展開します。これを、~/Arduino/にフォルダごといれ、IDEを再起動するとライブラリが使用できます。
その後もいろんなサイトを参考にしながら、
VCC - 5V
GND - GND
SDA - Analog 4
SCL - Analog 5
に接続して、サンプルのHello, world!を書き込みましたが、液晶画面が光だけで何も起こりません。ここで暫く詰まったのですが、いろいろ見ていると、LCDのアドレスとやらを調べないといけないらしいです。こちらのコードを書き込んで、シリアルモニタでアドレスを確認します。サンプルは0x27だったのに対し、自分のは0x3Fでした。これに書き換えて最初のHello, world!を書き込みました。すると、初期化処理で画面が暗くなる反応を見せたものの、文字は表示されません。さらに調べると、裏にコントラスト調整用の部品がありました。これを回転させると文字が表示されました。

最後に作った電光掲示板もどき。初めての言語なので汚いコードかもしれません。使用する際はLCDのアドレスや画面サイズを適宜変更してください。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

void display(String buf, int y);
LiquidCrystal_I2C lcd(0x3F,16,2);

int offset = 0;

void setup()
{
  lcd.init();
  lcd.backlight();
}

void loop()
{
  lcd.clear();
  display("Hello, world!", 0);
  delay(300);
}

void display(String buf, int y)
{
  lcd.setCursor(16 - offset, y);
  if ( offset > 16 ) {
    lcd.print(buf.substring(offset - 16));
  } else {
    lcd.print(buf);
  }
  offset = (offset + 1) % (16 * 2);
}

参考:
http://arduino.umemoto.org/home/i2c-lcd
http://forum.arduino.cc/index.php?topic=128635.0






1 件のコメント:

  1. 僕もosoyoo製品入手した、素晴らしい感じ
    サンプルプロジェクトなど http://osoyoo.com/ja/

    店舗 https://www.amazon.co.jp/gp/aag/main?ie=UTF8&asin=&isAmazonFulfilled=1&isCBA=&marketplaceID=A1VC38T7YXB528&orderID=&protocol=current&seller=A3HOL5FEZBI785&sshmPath=

    返信削除