LittleBits はくっつけて遊んでいるだけで楽しい、大変良くできた電子工作・学習デバイスで、文章だけだと伝えることができないので一度は実物の LittleBits を触ってみて欲しい!!
というのはさておき、この LittleBits に Arduino (Leonard) としてプログラミングできるモジュール があるんだけど、Arduino を知ってる人にとってこれだけ解れば OK という所のメモ。
基板まわり
Getting Started with Arduino の図の通り。
LittleBits のマグネットでくっつくイン(d0, a0, a1) とアウトに (d1, d5, d9) ピンのマッピングされてる。特徴的なのが d5 と d9 で、Arduino の analogWrite() で出力される PWM のみならず、スイッチで analog に切り替えることができる。Leonard に D/A コンバータでの出力はなかったと思うけど、LittleBits のアウトとしては D/A して欲しいことがあると思うのでなるほど感。
スケッチをコンパイルして動かす
ふつうに Leonard を選択するだけでおk。かんたん。
LittleBits 以外の機器との連携
LittleBits 以外からもデータの入出力したいよね、というときのために a2, a3, a4 と d10, d11, d13 がある。I2C 用の d2, d3 もあるし ICSP もある。しかし物理的なピンヘッダが無いのでピンヘッダを半田付けする必要がある。特に I2C はプリント基板用なので使いにくいけど、僕は半田でピンヘッダつけました…(不格好)。
なんでこんな面倒くさい作りになってるんだというと、たぶん LittleBits の設計思想の問題で、基本簡単に IN / OUT をモジュールでつなげていくシンプルな姿勢を崩したくなくて、そのため Arduino モジュールでのプログラミングも、IN / OUT のデータをいじれるだったり、USBシリアルでPCとインタラクションしたり、そういう用途に基本使って欲しい、どうしても拡張したい人用にはちょっと手間だけど自分でやってね、みたいな感じなんだろうなーと思ってる。
電源をどうするか
外部機器をつなげるとき、VDD と GND をどうするかという問題があるけど、そんなときは ISCP のピンヘッダに VDD(+5V) と GND があるので、そこから持ってくれば OK。
ISPC は
GND --> 0 0 <-- RESET
MOSI (d16) --> 0 0 <-- SCK (d15)
VDD (+5V) --> 0 0 <-- MISO (d14)
という配置なので、左上のピンを GND、左下のピンを VDD として使えるのでこれを利用する。
写真とスケッチのコードは、I2C に秋月の液晶 AQM0802A つないで、その画面に Arduino の可変抵抗モジュールの値と、外部から A2 に繋いだ光センサー(CDS) の値を表示させてる。なお AQM0820A は 3.3V の電圧が必要なので、抵抗分圧 で 5V -> 約 3.3V へ降圧し取得してる。
# include <Wire.h>
# include <ST7032.h>
const int CDS_IN = A2;
const int A_IN = A0;
ST7032 lcd;
void setup () {
lcd.begin(8, 2);
lcd.setContrast(30);
}
void loop () {
int cds = analogRead(CDS_IN), a0 = analogRead(A_IN);
lcd.setCursor(0, 0);
lcd.print("CDS: " + (String)cds);
lcd.setCursor(0, 1);
lcd.print("A0:" + (String)a0);
delay(100);
}
その他
LittleBits もエコシステムやコミニュティを持っているので、いろんな人がいろいろやってる。例えば
では、LittleBits のキーボードモジュールから押されたアナログ電圧値をマッピングしてるソースコードを公開してたりする(右サイドバーのADDITIONAL FILESにある)。