Digital 數位輸入與輸出

5 Digital 數位輸入與輸出

5.1 Digital Output設定 Pin 的輸出霹靂燈範例

pinMode (pin,mode)

pinMode函數是用以配置接腳為輸入或輸出模式,它是一個無返回值函數,函數

有兩個參數pinmode,pin參數表示所要配置的接腳,mode參數表示設置的模 式——INPUT(輸入)OUTPUT(輸出)

pinMode(13, OUTPUT); // 這裡設定所要輸出的PIN腳模式

digitalWrite(13, HIGH); // 設定PIN13腳位為高電位 = 5V

digitalWrite(13, LOW); // 設定PIN13腳位為低電位 = 0V

介紹:

我們等下就利用Digital output 的數位輸出功能,來設計一個霹靂燈的硬體。

會透過以下的函數達到這樣的效果,首先在初始化的時候,設定特定的

pinMode(13, OUTPUT); 做數位輸出的動作

函後再來設定電位高輸出5V 的電壓,來顯示LED

digitalWrite(13, HIGH);

並且在透過

digitalWrite(13, LOW);

來降低電壓到0V,來關閉LED

透過delay(200)來延遲時間0.2 秒。

硬體接線:

5-1-1 霹靂燈的硬體接線

範例程式:

範例 Ch4-1 DancingLEDs.ino(範例程式中sample\ch04\DancingLEDs\

  1. int ledPin1 = 10; // 這裡設定所要閃爍的LED燈腳位
  2. int ledPin2 = 11;
  3. int ledPin3 = 12;
  4. void setup()
  5. {
  6. pinMode(ledPin1, OUTPUT); // 這裡設定所要輸出的PIN腳模式
  7. pinMode(ledPin2, OUTPUT);
  8. pinMode(ledPin3, OUTPUT);
  9. }
  10. void loop()
  11. {
  12. digitalWrite(ledPin1, HIGH); // 設定PIN13腳位為高電位 = 5V
  13. delay(200); // 設定延遲時間,200 = 0.2
  14. digitalWrite(ledPin2, HIGH);
  15. delay(200);
  16. digitalWrite(ledPin3, HIGH);
  17. delay(200);
  18. digitalWrite(ledPin1, LOW); // 設定PIN13腳位為低電位 = 0V
  19. delay(200); // 設定延遲時間 200 = 0.2
  20. digitalWrite(ledPin2, LOW);
  21. delay(200);
  22. digitalWrite(ledPin3, LOW);
  23. delay(200);
  24. }

程式解說:

  • 9 pinMode(ledPin1, OUTPUT); //設定ledPin1 腳位為高電位 =
  • 17 delay(200); //設定延遲時間,1000 = 1秒 延遲
  • 11 digitalWrite(ledPin1, HIGH); //設定ledPin1 腳位為高電位 = 5V LED
  • 21 digitalWrite(ledPin1, LOW); //設定ledPin1 腳位為低電位 = 0V LED  

Loop()中 我們依序:

  1. 亮第一個LED
  2. 亮第一個LED
  3. 亮第一個LED
  4. 暗第一個LED
  5. 暗第一個LED
  6. 暗第一個LED

這樣持續的執行。

使用長高科技的ADK 的實驗版的讀者:

請把接腳修改成實驗版上內建的LED的接腳。

int ledPin1 = 54;

int ledPin2 = 57;

int ledPin3 = 60;

執行效果:

5-1-2 霹靂燈的範例,在ADK 上程式執行的情況。

5.2 Digital Input –讀取按鈕訊號數值code

digitalRead 函數用在接腳為輸入的情況下,可以獲取接腳的電壓情況HIGH (高電平)LOW(低電平),參數 pin 表示所要獲取電壓值的接腳,該函數返回值為 int ,表示接腳的電壓情況。

硬體設備:

  • Arduino 板子
  • 一個LED
  • 按鈕一個
  • 10k 歐姆的電阻
  • 麵包版
  • 線材

硬體接線:

5-2-1 按鍵的硬體接線圖

範例 Ch5-2 DigitalRead.ino(範例程式中sample\ch05\DigitalRead\

  1. int Key1Pin = 2;
  2. int ledPin1= 13;
  3. void setup()
  4. {
  5. pinMode(ledPin1, OUTPUT); // 這裡設定所要輸出的PIN腳模式
  6. pinMode(Key1Pin, INPUT); // 這裡設定所要讀入的PIN腳模式
  7. }
  8. void loop()
  9. {
  10. int keystate = digitalRead(Key1Pin); // 取得數位輸入PIN 腳的值
  11. if(keystate == 0) // 如果沒被按下的話
  12. {
  13. digitalWrite(ledPin1, LOW); // LED
  14. }else{
  15. digitalWrite(ledPin1, HIGH); // LED
  16. }
  17. }

程式碼介設:

  • 9 digitalRead 取得數位輸入PIN 腳的值
  • Loop()中 我們依序:讀取數位接腳。

    判斷是否按下後,設定LED 是否亮或暗。

使用長高科技的ADK 的實驗版的讀者:

請把接腳修改成實驗版的接腳。

int Key1Pin= 2;

int ledPin1= 54;

執行效果:

Screen Shot 2014-10-30 at 9.52.37 AM

 按鍵的範例,在Chang高科技ADK 上程式執行的情況。