さて、前回SoftwareSerialでAndroidとArduinoがお話できるようになったので、Arduinoのブートローダを焼いたATtiny 85を使って、かなり小さいLEDのBlinkモジュールを作りました。こんな感じにAndroid側から光らせるLEDを指定しています。
参考
ATtiny 85のArduino開発環境については下記の記事を参考に構築してみてください。
ATtiny 85のおさらい
ATtiny 85のピン配列はこんな感じでした。SoftwareSerialをPIN0とPIN1で利用しますが、PIN3とPIN4が余るのでこれを自由に使えます。今回はとりあえず2つのLEDをそれぞれ繋いでAndroid側からLEDを光らせてみます。
追記
よく考えればPIN2も開いてますね…
Arduino側
糞コードですみません。とりあえずAndroid側からピン番号の文字をArduino側に送ってそれをArduino側でPIN3かPIN4を判断して、LEDを光らせています。
#include "SoftwareSerial.h" #define StringMaxLength 32 SoftwareSerial mySerial(0, 1); // RX, TX char data[StringMaxLength]; int counter = 0; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(3, OUTPUT); pinMode(4, OUTPUT); mySerial.begin(9600); mySerial.println("Hello from Arduino SoftwareSerial!"); } // the loop routine runs over and over again forever: void loop() { if(mySerial.available()) { data[counter] = mySerial.read(); counter++; if(data[counter] == '\0' || counter == StringMaxLength) { data[counter] == '\0'; mySerial.print("Hi from Arduino "); mySerial.println(data); counter = 0; if(strcmp(data, "3") == 0) { mySerial.print("CMN3"); BlinkLed(3); } else if(strcmp(data, "4") == 0) { mySerial.print("CMN4"); BlinkLed(4); } } } } void BlinkLed(int led) { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); }