2014年2月9日 星期日

[Arduino Starter Kit 05] Spaceship Interface - 利用開關控制 led 燈

image
接著 starter kit 教我們怎麼利用簡單的 switch bottom 當作控制 LED 閃光的開關鍵,英文名稱取的很炫,spaceship interface - 太空艙操作介面!

Step .1 準備材料:
Switch bottom x1
LDE 紅色 x2
LDE 綠色 x1
電阻 10k ohm x1
電阻 220 ohm x2

Step .2 接線圖:
image

Step .3 原理與解說:
解說一下這個接線設計的原理與 coding 語言,首先 Arduino 右手邊一排為數位輸入/輸出 pin (相關介紹可以看這篇),這個設計中的按鈕式 switch bottom ,按下會使 Pin 2 收到 5V(HIGH) 的訊號;反之沒按的話,這組線路沒導通 Pin 2 收到的就是 0V(LOW) 的訊號,搭配 Pin 2 收到的訊號不同,我們可以隨意控制 LED 閃光的時機。

這邊說明幾個重要的 coding 語法:
pinMode(3,OUTPUT),設定 Arduino 的第 3 個 pin 為輸出訊號源
pinMode(2,INPUT),設定 Arduino 的第 2 個 pin 為輸入訊號源
digitalRead(2),令 Arduino 讀取來自 Pin 2 的訊號,這個例子裡按鈕按下去會是 HIGH,沒按會是 LOW
digitalWrite(3,HIGH),令 Arduino 由 Pin 3 發送 HIGH 的訊號,也就是 5V
digitalWrite(4,LOW),令 Arduino 由 Pin 4 發送 HIGH 的訊號,也就是 0V
delay(250),暫停所有動作 250 毫秒,注意單位是毫秒,1000 毫秒 = 1秒

完整 sketch,也可以在 IDE 中的 starter kit 中找到:

int switchstate = 0;
void setup(){
  // 宣告各 pin 為 out/pin
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);  
  pinMode(2,INPUT);
}

void loop(){
  // 讀取 pin2 的狀態 (HIGH or LOW)
  switchstate = digitalRead(2);

  // 如果按鈕被下壓,讓紅色 LED 閃光
  if (switchstate == LOW) { // 按鈕沒被下壓的時候
    digitalWrite(3, HIGH);   //亮綠燈
    digitalWrite(4, LOW);   //紅燈不亮
    digitalWrite(5, LOW);
  }
  // 按鈕被下壓時
  else {
    digitalWrite(3, LOW);  // 綠燈不亮
    digitalWrite(4, LOW);  // 兩顆紅燈交互閃光
    digitalWrite(5, HIGH);
    delay(250);
    digitalWrite(4, HIGH);
    digitalWrite(5, LOW);
    delay(250);
  }
}


影片

沒有留言:

張貼留言

Anything That's Worth Chatting

Related Posts Plugin for WordPress, Blogger...