1000円ではじめるArduino互換機入門
はじめに
Arduino互換機を使って、安く手軽に電子工作をはじめてみましょう。
用意するもの
- Arduino互換機 500円~
- 液晶表示装置(LCD)+キーパッドシールド 400円~
- 必要に応じて:USBケーブル 100円~
すべて購入してもたった1000円。やすい!
Arduino
Arduino は、もともと教育用に作られた単純なマイコンボードです。
手軽に扱えるマイコンボードとして人気があり、純正品の Arduino Uno でも3000円~購入できます。
マイコンボードとしては、十分安いのですが、今回は使いません。
最近(2015年~)では、Amazon.co.jp で Arduino 互換機がとても安価に購入できます。
たとえば、こちらは、なんと 435円(2017年1月4日現在)で入手できます。
この Arduino互換機に保障などは一切ないため、購入は自己責任でよろしくおねがいします。
LCD+キーパッドシールド
Arduino もコンピューターの3大要素、入力・出力・演算がきちんとあります。
- 入力/出力:シリアル通信, GPIO etc.
- 演算:8-bit AVR RISC-based microcontroller, 1KB EEPROM, 2KB SRAM
... 残念ながら単体でできることは、LEDの点滅がせいぜいです。
Arduino はシールドと呼ばれる外部機器を接続することで、自由に機能を追加できます。
LCD+キーパッドシールドを使うと、
- 16文字x2行の文字表示
-
analogRead(A0)
を利用した5個のボタン入力
ができるようになり、見た目を派手にできます。
こちらの LCD+キーパッドシールドは、351円(2017年1月4日現在)で入手できます。
購入は自己責任でおねがいします。
開発環境の準備
Arduino IDE のインストール
公式サイトから、自分の環境にあった Arduino IDE をダウンロードし、 Getting Started のページなどを参考にして、Arduino IDE をインストールします。
ドライバーのインストール
純正の Arduino の場合、PCへのドライバーの不要なのですが、安価な互換機の場合、USB-シリアルコンバーターのチップが変更されていることもあり、その場合、PCへのドライバーのインストールが必要です。
上述の Arduino 互換機の場合、Amazon.co.jp の商品の説明によると、
CH340G Driver
と記載があり、CH340Gのチップが使われているようなので、このドライバーをインストールします。
Aitendo の商品のページなどからPC用ドライバーをダウンロードして、インストールします。
macOSの場合は、次の記事が参考になるかと思います。
MacOSX+CH340G搭載Arduino互換ボードの動作メモ - Qiita
スケッチ例の書き込み
Arduino IDEを起動し、メニューから[ファイル]→[スケッチ例]→[01.Basics]→[Blink]を選択して、サンプルコードを開きます。
続いて、[ツール]→[シリアルポート]から、マイコンボードが接続されているシリアルポートを選択します。
書き込みボタン(右矢印ボタン)を押すと、30秒以内にプログラムがマイコンボードに書き込まれ、正常に書き込まれれば、自動的にスケッチが実行されます。
このスケッチ「Blink」は通称「Lチカ(LEDチカチカ)」と呼ばれるもので、実行されるとマイコンボードのLEDが1秒間隔で繰り返し点滅するはずです。
LCD+キーパッドシールドを使ってみる
Arduino 互換機のボードにLCD+キーパッドシールドを差し込んで、次のスケッチを書きこみます。
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
enum { RIGHT, UP, DOWN, LEFT, SELECT, NONE };
void setup() {
lcd.begin(16, 2);
lcd.print("Push the buttons");
}
void loop() {
lcd.setCursor(0,1);
switch (readKey()) {
case RIGHT: {
lcd.print("RIGHT ");
break;
}
case LEFT: {
lcd.print("LEFT ");
break;
}
case UP: {
lcd.print("UP ");
break;
}
case DOWN: {
lcd.print("DOWN ");
break;
}
case SELECT: {
lcd.print("SELECT");
break;
}
case NONE: {
lcd.print("NONE ");
break;
}
}
}
int readKey() {
int adc_key_in = analogRead(A0);
if (adc_key_in < 50) return RIGHT;
if (adc_key_in < 250) return UP;
if (adc_key_in < 450) return DOWN;
if (adc_key_in < 650) return LEFT;
if (adc_key_in < 850) return SELECT;
return NONE;
}
このスケッチは、公式サイトにあるものを参考にしています。
購入直後の状態では、コントラストが調整されていない為、LCDに何も表示されないと思います。
LCDの左上の半固定抵抗をマイナスドライバーで十数回まわし、見やすく表示されるように調節しましょう。
正常に書き込めることが確認できたので、他のスケッチ例を書き込んでみたり、自分で自由にスケッチを改造してみたいと思います。
年賀マイコン
お正月のあいさつをLCDに表示させて見ました。
UP/DOWNボタンを押すと、2017年から1年ずつ加算/減算できるので、西暦9999年まで新年のあいさつに活用できます。
スケッチは次のとおりです。
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup() {
byte de[8] = {
0x68>>3,
0x00>>3,
0xf8>>3,
0x20>>3,
0x20>>3,
0x20>>3,
0x40>>3,
};
byte go[8] = {
0x28>>3,
0xf8>>3,
0x08>>3,
0x08>>3,
0x08>>3,
0x08>>3,
0xf8>>3,
};
byte za[8] = {
0x58>>3,
0xf0>>3,
0x50>>3,
0x50>>3,
0x10>>3,
0x20>>3,
0x40>>3,
};
lcd.createChar(1, de);
lcd.createChar(2, go);
lcd.createChar(3, za);
lcd.begin(16, 2);
lcd.print("HappyNewYear");
lcd.setCursor(0, 1);
lcd.print("\xb1\xb9\xcf\xbc\xc3\xb5\xd2\x01\xc4\xb3\x02\x03\xb2\xcf\xbd!");
}
void loop() {
char year[4];
sprintf(year, "%4d", yearReadKey());
lcd.setCursor(12, 0);
lcd.print(year);
delay(200);
}
int yearReadKey() {
static int i = 2017;
int adc_key_in = analogRead(A0);
if (adc_key_in < 50) return i;
if (adc_key_in < 250) return ++i;
if (adc_key_in < 450) return --i;
return i;
}
ほぼ全てのキャラクタLCD製品には、日立 HD44780 互換ICが搭載されており、日本語カナに対応する文字コードを LiquidCrystal::print()
に与えるだけで表示できます。
表示文字数の都合上、濁音カナ文字3つ「デ(U+30c7)」「ゴ(U+30b4)」「ザ(U+30b6)」は k6x8フォント から抽出し、CGRAMに 0x01
~ 0x03
に格納しました。
引用元:HD44780U のデータシート - SparkFun Electronics
自由にコーディングして実際に思い通り動くとそれだけで楽しいですね。
読んでいただきありがとうございました。本年もよろしくお願いします。