晩御飯を食べて、引き続きArduinoで遊ぶ。
教科書の本文には「割り込み処理」が載ってなかったのだが、巻末のリファレンスには割り込みの関数がちゃんとある。
押ボタンスイッチでトグルする処理は、やはりポーリングではなく、割り込みによらねば面白くない。
それで、押しボタンを押すたび、LEDの点灯の流れが変わるようなものをこしらえて遊ぶ。
// // LED3つを順々に点灯,割り込みがかかると反対向きになる。 // // 佐藤俊夫 // 27.4.29 1930 // const boolean FOW = true; const boolean REV = false; boolean STATUS = REV; int LED[] = {13, 12, 11}; int i = 0; int previ = 2; void setup() { // LED3つ初期化 for(int i = 0; i <= 2; i++){ pinMode(LED[i], OUTPUT); } // 0番割り込み(2番ピン)で反転 attachInterrupt(0, switchdirection, RISING); } void loop() { // 順々点灯 previ = i; if(STATUS == FOW){ i++; if(i > 2){ i = 0; } }else{ i--; if(i < 0){ i = 2; } } digitalWrite(LED[i], HIGH); digitalWrite(LED[previ], LOW); delay(1000); } // LED点灯方向を反転させる void switchdirection(){ if(STATUS == FOW){ STATUS = REV; }else{ STATUS = FOW; } }