教科書のコードをいろいろとカスタマイズ

投稿日:

 晩御飯を食べて、引き続き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;
  }
}



投稿者: 佐藤俊夫

 50代後半の爺。技術者。元陸上自衛官。2等陸佐で定年退官。ITストラテジストテクニカルエンジニア(システム管理)基本情報技術者

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください