2016年3月9日 星期三

第2課 — 太空船介面

教學影片的第二課是要製作一個70年代電中的太空船介面

這個程式在Arduino的官網中有一個StarterKit裡面就有程式和電路
https://www.arduino.cc/en/ArduinoStarterKit/Prj02
程式也不用再輸入了,只要執行Arduino程式後
點選那個往上的箭頭就是開啟舊檔,選擇10.StarterKit_BasicKit的P02—SpaceshipInterface開啟即可

官網中有詳細的接線圖
只是官網中的程式和Massimo Banzi先生影片中的程式剛好相反
影片中是按鈕前二個紅色LED閃爍,按下按鈕後亮綠色LED
而Starterkit網頁中的程式則是一開始亮綠色LED,按下按鈕後二個紅色LED閃爍
原因就是在程式中的IF敘述順序不同,可以和影片比對便知道當條件成立後執行的動作是不同的。
  if (switchstate == LOW) {   //當條件成立(按鈕沒按下)
    digitalWrite(3, HIGH); // turn the green LED on pin 3 on將位於PIN腳3的LED點亮
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off將位於PIN腳4的LED關閉
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off將位於PIN腳5的LED關閉
  }
  // this else is part of the above if() statement.
  // if the switch is not LOW (the button is pressed)
  // turn off the green LED and blink alternatively the red LEDs
  else {                         //否則(按鈕按下)
    digitalWrite(3, LOW);  // turn the green LED on pin 3 off 將位於PIN腳3的LED關閉
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off  將位於PIN腳4的LED關閉
    digitalWrite(5, HIGH); // turn the red LED on pin 5 on 將位於PIN腳5的LED點亮
    // wait for a quarter second before changing the light
    delay(250); //(延遲0.25秒)
    digitalWrite(4, HIGH); // turn the red LED on pin 4 on  將位於PIN腳4的LED點亮
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off 將位於PIN腳5的LED關閉
    // wait for a quarter second before changing the light
    delay(250);
  }

這個程式和第一個程式的最大不同就是在增加了PIN腳2的輸入選項
  // declare the switch pin as an input
  pinMode(2, INPUT);

和第一個閃爍LED程式只有輸出是不同的
另外開始使用了
if(){
...
}
eles{
...
}
的條件敘述語法來作判斷

另外在影片中的程式Massimo Banzi先生在程式的一開始就定義了
const int redLed1=5;
const int redLed2=4;
const int greenLed2=3;

所以程式中的
digitalWrite(4, LOW);
就可以寫成
digitalWrite(redLed2, LOW);
這樣的寫法增加了程式的可讀性,減少了程式變大時偵錯的困難

當然最後還是要放一張我做完成果的相片啦!
哈哈!沒錯,我多買了一塊麵包板,還把電池接上去用電池供電了。

沒有留言:

張貼留言