Try   HackMD

1.LED與開關控制(ArduinoDemo1)

tags: ArduinoDemo

分類:LED與開關控制
總覽:
41-1控制四個LED 執行霹靂燈閃爍移位變化。

49-2控制兩個LED 輪流由最暗變化至最亮,再由最亮變化至最暗。

54-2控制四個LED 亮度變化並依序來回左右移。每一個LED 亮度由暗逐漸變亮,再由亮逐漸變暗。

59-2控制四個LED 模擬拖尾霹靂燈變化。

69-2使用一個指撥開關控制一個LED,當開關接通(ON)時,LED 快速閃爍,反之當開關斷開(OFF)時,LED 慢速閃爍。

74-1使用一個指撥開關控制四個LED 移位方向。當開關斷開(OFF)時,LED 單燈閃爍右移;當開關接通(ON)時,LED 單燈閃爍左移。

80-2使用一個按鍵開關控制兩個LED。按一下按鍵開關時,LED 重覆快閃3 次再將LED 關閉1 秒,再按一下按鍵開關時,LED 暗。

81-1利用一個按鍵開關控制四個LED 移位方向。每按一下按鍵開關,LED 的移動方向 改變。若LED 原來移動方向為右移 ,按一下 按鍵開關時,改變為左移;若 LED 原來移動方向為左移,按一下按鍵開關時,改變為右移。


41-1控制四個LED 執行霹靂燈閃爍移位變化。

const int led[]={10,11,12,13}; int i; int j=0; int direct=0; void setup() { for(i=0;i<4;i++) pinMode(led[i],OUTPUT); } void loop() { for(i=0;i<4;i++) { digitalWrite(led[i],LOW); } digitalWrite(led[j],HIGH); delay(200); digitalWrite(led[j],LOW); delay(200); digitalWrite(led[j],HIGH); delay(200); if(direct==0) { if(j==3) direct=1; else j=j+1; } else { if(j==0) direct=0; else j=j-1; } }

49-2控制兩個LED 輪流由最暗變化至最亮,再由最亮變化至最暗。

int led1 = 10; int led2 = 11; void setup() { } void loop() { byte bt; //led1 for(bt=0;bt<255;bt+=5){ analogWrite(led1,bt); delay(50); } for(bt=255;bt>0;bt-=5){ analogWrite(led1,bt); delay(50); } analogWrite(led1,0); //led2 for(bt=0;bt<255;bt+=5){ analogWrite(led2,bt); delay(50); } for(bt=255;bt>0;bt-=5){ analogWrite(led2,bt); delay(50); } analogWrite(led2,0); }

54-2控制四個LED 亮度變化並依序來回左右移。每一個LED 亮度由暗逐漸變亮,再由亮逐漸變暗。

int leds[] = {3,9,10,11}; void setup() { } void loop() { int bt; //led1 for(int led=0;led<4;led++){ //循環四顆led for(bt=0;bt<255;bt+=5){ //漸亮 analogWrite(leds[led],bt); delay(20); } for(bt=255;bt>0;bt-=5){ //漸暗 analogWrite(leds[led],bt); delay(20); } analogWrite(leds[led],0); //關閉led } //for(byte led=0;led<4;led++){ //循環四顆led for(int led=3;led>=0;led--){ for(bt=0;bt<255;bt+=5){ //漸亮 analogWrite(leds[led],bt); delay(20); } for(bt=255;bt>0;bt-=5){ //漸暗 analogWrite(leds[led],bt); delay(20); } analogWrite(leds[led],0); //關閉led } }

59-2控制四個LED 模擬拖尾霹靂燈變化。

const int led[] ={3,9,10,11}; int varNums; int ledNums; const int brightness[7][4]= {{250, 0, 0, 0}, {100,250, 0, 0}, { 50,100,250, 0}, { 5, 50,100,250}, { 0, 5, 50,100}, { 0, 0, 5, 50}, { 0, 0, 0, 5} }; void setup() { } void loop() { for(varNums=0;varNums<7;varNums++) { for(ledNums=0;ledNums<4;ledNums++) analogWrite(led[ledNums],brightness[varNums][ledNums]); delay(100); } for(varNums=0;varNums<7;varNums++) { for(ledNums=0;ledNums<4;ledNums++) analogWrite(led[ledNums],brightness[varNums][3-ledNums]); delay(100); } }

69-2使用一個指撥開關控制一個LED,當開關接通(ON)時,LED 快速閃爍,反之當開關斷開(OFF)時,LED 慢速閃爍。

const int sw=2; const int led=13; int val; void setup() { pinMode(sw,INPUT); pinMode(led,OUTPUT); } void loop() { val=digitalRead(sw); if(val==HIGH) { digitalWrite(led,HIGH); //點亮LED。 delay(500); //延遲0.5 秒。 digitalWrite(led,LOW); //關閉LED。 delay(500); //延遲0.5 秒。 } else if(val==LOW) { digitalWrite(led,HIGH); //點亮LED。 delay(1000); //延遲1 秒。 digitalWrite(led,LOW); //關閉LED。 delay(1000); //延遲1 秒。 } }

74-1使用一個指撥開關控制四個LED 移位方向。當開關斷開(OFF)時,LED 單燈閃爍右移;當開關接通(ON)時,LED 單燈閃爍左移。

const int sw=2; const int led[]={10,11,12,13}; int i; int j=0; int val; void setup() { pinMode(sw,INPUT_PULLUP); for(i=0;i<4;i++) { pinMode(led[i],OUTPUT); } } void loop() { val=digitalRead(sw); for(i=0;i<4;i++) { digitalWrite(led[i],LOW); } if(val==HIGH) { digitalWrite(led,HIGH); //點亮LED。 delay(200); //延遲0.2 秒。 digitalWrite(led,LOW); //關閉LED。 delay(200); //延遲0.2 秒。 digitalWrite(led,HIGH); //點亮LED。 delay(200); //延遲0.2 秒。 if(j==0) j=3; else j=j-1; } else if(val==LOW) { digitalWrite(led,HIGH); //點亮LED。 delay(200); //延遲0.2 秒。 digitalWrite(led,LOW); //關閉LED。 delay(200); //延遲0.2 秒。 digitalWrite(led,HIGH); //點亮LED。 delay(200); //延遲0.2 秒。 if(j==3) j=0; else j=j+1; } }

80-2使用一個按鍵開關控制兩個LED。按一下按鍵開關時,LED 重覆快閃3 次再將LED 關閉1 秒,再按一下按鍵開關時,LED 暗。

const int sw=2; const int led=13; const int debounceDelay=20; int ledStatus=LOW; int val; void setup() { pinMode(sw,INPUT); digitalWrite(sw,HIGH); pinMode(led,OUTPUT); } void loop() { val=digitalRead(sw); if(val==LOW) { delay(debounceDelay); while(digitalRead(sw)==LOW) ; ledStatus=!ledStatus; //digitalWrite(led,ledStatus); } if (ledStatus){ digitalWrite(led,HIGH); delay(200); digitalWrite(led,LOW); delay(200); digitalWrite(led,HIGH); delay(200); digitalWrite(led,LOW); delay(200); digitalWrite(led,HIGH); delay(200); digitalWrite(led,LOW); delay(1000); } else{ digitalWrite(led,LOW); } }

81-1利用一個按鍵開關控制四個LED 移位方向。每按一下按鍵開關,LED 的移動方向 改變。若LED 原來移動方向為右移 ,按一下 按鍵開關時,改變為左移;若 LED 原來移動方向為左移,按一下按鍵開關時,改變為右移。

const int sw=2; int led[] = {10,11,12,13}; const int debounceDelay=20; int ledStatus=LOW; int i; int j=0; int val; void setup() { pinMode(sw,INPUT); digitalWrite(sw,HIGH); for(i=0;i<4;i++) { pinMode(led[i], OUTPUT); } } void loop() { val=digitalRead(sw); if(val==LOW) { delay(debounceDelay); while(digitalRead(sw)==LOW) ; ledStatus=!ledStatus; //digitalWrite(led,ledStatus); } if (ledStatus){ for(i=0;i<4;i++){ digitalWrite(led[i],LOW); } digitalWrite(led[j], HIGH); delay(1000); j++; if(j==4) j=0; } else{ for(i=0;i<4;i++) { digitalWrite(led[i],LOW); } digitalWrite(led[j], HIGH); delay(1000); j--; if(j==-1) j=3; } }