マイコンArduinoを使って電光掲示板を作る。
続き
今回はandroid端末との接続でデータの書換えが出来るかを試していきます。
android端末とUSBケーブルを介してシリアル通信するプログラム
byte address = {5, 4, 3, 2}; // アドレスは扱いやすい様に配列で持つ
short data_hex = {0x0000, 0x0200, 0x0200, 0x3ff8, 0x0200, 0x0220, 0x03f0, 0x0628,
0x1a44, 0x1244, 0x2284, 0x2304, 0x260c, 0x3d18, 0x0070, 0x0000,
0x0000, 0x0000, 0x0000, 0x2010, 0x2018, 0x2008, 0x200c, 0x2004,
0x3004, 0x3004, 0x1186, 0x1106, 0x1b00, 0x0e00, 0x0400, 0x0000};
int pos = 0;
short inData = 0;
short value = 0;
boolean toggle = false;
void setup() {
for (int i = 2; i < 13; i++) {
pinMode(i, OUTPUT); // 各ピンの設定 全てアウトプット
}
digitalWrite(11,LOW); // SE L 自動でRAM切り替わり
digitalWrite(12,LOW); // A/BB 書き込み用RAM選択
digitalWrite(6,LOW); // GREEN 緑データ
digitalWrite(7,LOW); // CLK クロック
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(10,LOW);// ALE アドレスラッチ Hで有効
Serial.begin(19200);
}
void loop() {
if (Serial.available() > 0) {
inData = Serial.read();
if (!toggle) {
value = inData * 256;
}
else {
value |= inData;
data_hex[pos++] = value;
}
toggle = !toggle;
}
disp();
}
void disp() {
for (int i = 0; i < 16; i++) { // アドレス0~15
for (int j = 0; j < sizeof(address); j++)
if ((i & 0x1 << j) != 0) // address[0]~address[3]にビットをセット
digitalWrite(address[j], HIGH);
else
digitalWrite(address[j], LOW);
for (int k = 0;k < 32;k++) {
if ((data_hex[k] & 0x8000 >> i) != 0)
digitalWrite(9,HIGH); // RED 赤データ // データのセット
else
digitalWrite(9,LOW); // RED 赤データ // データのセット
shift_clock(); // クロック
}
write_ale_we(); // 書き込み操作 関数にまとめて有る
}
}
void shift_clock() {
digitalWrite(7,HIGH); // クロック
digitalWrite(7,LOW); // クロック
}
void write_ale_we() {
digitalWrite(10,HIGH);// ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
}
太字の部分を追加
d0,d1はシリアルで使うのでd11,d12に変更
loop()の中でシリアルデータを受信してデータを受け取ったらdata_hex[]を書き換える
実験の様子
「かき」と書き替えられました。文字が逆さまなのはご愛敬。
Androidのアプリ
アプリはusb-serial-for-android(githubで入手)のライブラリを使って作りました。
これで書き替えは出来ました。
ただ、このままでは電源が落ちるとデータが消滅します。
そこで次回、Arduino Nanoに搭載せれているEEPROMに書き込んでデータが記憶できる様に改造して行きます。
では、また。