【程式設計篇】加入使用者控制的技巧- 下篇

表2 使用者控制 Led 程式二

使用者控制Led程式二(Water_light_Button_int)

const byte interruptPin = 2;

int LedDirection = 1 ;

int LedPins[] = {4,5,6,7,8,9,10,11} ;

int NowLedOn = 0 ;

// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin Blink_Led_Pin as an output.

    // pinMode(ButtonPin,INPUT) ;

    for(int i=0; i <8 ; i++)

        {

              pinMode(LedPins[i], OUTPUT);    //定義Blink_Led_Pin為輸出腳位

              digitalWrite(LedPins[i], LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

        }

  pinMode(interruptPin, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(interruptPin), ButtonisPressed, FALLING );

}

// the loop function runs over and over again forever

void loop() {

   // int btnValue = digitalRead(ButtonPin) ;

  //  if (!btnValue)

 //         LedDirection  = LedDirection* (-1 );

   //  if

       for (int i =0 ; i < 8; i++)

          {

              if (NowLedOn == i)

              {

                digitalWrite(LedPins[i], HIGH);   // turn on Led

              }

              else

              {

                digitalWrite(LedPins[i], LOW);    // turn off Led

              }

          }

          if (LedDirection == 1)

              {

                NowLedOn ++ ;   //right side move

              }

              else

              {

                NowLedOn -- ;     //left side move

              }

     if (NowLedOn >=8)      // check right side

          NowLedOn= 0 ;

     if (NowLedOn < 0)      // check left side

          NowLedOn= 7 ;

         delay(1000) ;  

}

void ButtonisPressed()

{

   LedDirection  = LedDirection* (-1 );

}

程式下載:
https://github.com/brucetsao/arduino_Programming_Trick

讀者也可以在作者 YouTube 頻道(https://www.youtube.com/user/UltimaBruce )中,在網址https://www.youtube.com/watch?v=Kbj_DLyvOa8&feature=youtu.be ,看到本次實驗-使用者控制 Led 程式二結果畫面。

當然、如下圖所示,我們可以看到使用者控制Led程式二結果畫面,。

【程式設計篇】加入使用者控制的技巧- 下篇
圖1 使用者控制 Led 程式二結果畫面

使用硬體插斷的好處

我們使用了『硬體插斷』這個技巧,並把實體按鈕的訊號輸出當成硬體插斷的觸發,透過硬體插斷執行函式來產生方向變數的變更,加快了使用者快速、有效的反應,並這樣的技巧,讓程式更加簡潔、方便。

硬體插斷這個技巧,這是又是我們再攥寫 Arduino 程式時,常常使用的一個技巧。希望讀者閱讀本文之後,可以學到這個技巧,並可以熟用這個技巧,在往後將會把程式寫得更加穩定,系統更加龐大,複雜與功能強大,但臭蟲(Bugs)會更少。

後續

本篇為『MAKER 系列』系列之程式設計篇子系列第五篇:加入使用者控制的技巧(下篇),針對在許多 I/O 腳位控制程序中,使用者操作使用硬體插斷來改變原有控制結果。相信讀者會對程序中加入使用者控制程序的寫作概念,有更進一步的了解與體認。

筆者本系列是針對非資訊、電機、電子等 Makers 攥寫的系列,這三、四年來在 Maker 領域寫書、發表文章、辦展、授課,常遇到許多學子訓練不足,以交作業的心態來學習,並沒有把程式底子打好。

後續筆者還會繼續發表『MAKER 系列』系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網(Internet of Thing:IOT)產品開發相關技術。

敬請期待更多的文章。

最後一頁是作者的介紹哦~

曹永忠
作者

曹永忠,國立中央大學資訊管理學系博士,目前在暨南大學電機工程學系兼任助理教授與自由作家,專注於軟體工程、軟體開發與設計、物件導向程式設計......並持續發表作相關專業著作。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則