學習控制 rgb(紅、綠、藍)的三色led燈。
二、接線圖
RGB LED依序為紅、最長腳、藍、綠
RGB LED的共陰極(最長腳)串接一個330的電阻後再接地(GND)。
RGB LED的R接Arduino腳位11。
RGB LED的G接Arduino腳位10。
RGB LED的B接Arduino腳位9。
三、程式碼
1.每隔一秒改變LED的顏色,紅、綠、藍、黃、青、洋紅、白
#define LEDR 9
#define LEDG 10
#define LEDB 11
int timelimit=100;
// 關閉LED的函式
void turnoff(){
digitalWrite(LEDR, LOW);
digitalWrite(LEDG, LOW);
digitalWrite(LEDB, LOW);
}
void setup() {
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
turnoff();
}
// 每隔一秒改變LED的顏色
void loop() {
turnoff();
digitalWrite(LEDR, HIGH);
delay(500);
digitalWrite(LEDR, LOW);
delay(500);
}
// 根據接線圖定義控制R、G、B的腳位
#define LEDR 9
#define LEDG 10
#define LEDB 11
// 關閉LED的函式
void turnoff(){
digitalWrite(LEDR, LOW);
digitalWrite(LEDG, LOW);
digitalWrite(LEDB, LOW);
}
void setup() {
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
turnoff();
}
// 每隔一秒改變LED的顏色
void loop() {
turnoff();
digitalWrite(LEDR, HIGH);
delay(1000);
turnoff();
digitalWrite(LEDG, HIGH);
delay(1000);
turnoff();
digitalWrite(LEDB, HIGH);
delay(1000);
turnoff();
digitalWrite(LEDR, HIGH);
digitalWrite(LEDG, HIGH);
delay(1000);
turnoff();
digitalWrite(LEDG, HIGH);
digitalWrite(LEDB, HIGH);
delay(1000);
turnoff();
digitalWrite(LEDB, HIGH);
digitalWrite(LEDR, HIGH);
delay(1000);
turnoff();
digitalWrite(LEDR, HIGH);
digitalWrite(LEDB, HIGH);
digitalWrite(LEDG, HIGH);
delay(1000);
}
2.利用pwm輸出,每一秒隨機出現顏色
#define LEDR 11
#define LEDG 10
#define LEDB 9
void setup() {
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
}
int r = 0;
int g = 0;
int b = 0;
void loop() {
r = random(0, 255);
g = random(0, 255);
b = random(0, 255);
analogWrite(LEDR, r);
analogWrite(LEDG, g);
analogWrite(LEDB, b);
delay(1000);
}
wemos用
// 根據接線圖定義控制R、G、B的腳位
#define LEDR D4
#define LEDG D3
#define LEDB D2
int t = 5;
// 關閉LED的函式
void turnoff() {
digitalWrite(LEDR, LOW);
digitalWrite(LEDG, LOW);
digitalWrite(LEDB, LOW);
}
void setup() {
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
turnoff();
}
// 每隔一秒改變LED的顏色
void loop() {
// turnoff();
playOne();
}
//依序亮一個燈
void playOne() {
digitalWrite(LEDR, HIGH);
delay(t);
digitalWrite(LEDR, LOW);
delay(t);
digitalWrite(LEDG, HIGH);
delay(t);
digitalWrite(LEDG, LOW);
delay(t);
digitalWrite(LEDB, HIGH);
delay(t);
digitalWrite(LEDB, LOW);
delay(t);
}
//依序亮二個燈
void playTwo() {
digitalWrite(LEDR, HIGH);
digitalWrite(LEDG, HIGH);
delay(t);
digitalWrite(LEDR, LOW);
digitalWrite(LEDG, LOW);
delay(t);
digitalWrite(LEDB, HIGH);
digitalWrite(LEDG, HIGH);
delay(t);
digitalWrite(LEDB, LOW);
digitalWrite(LEDG, LOW);
delay(t);
digitalWrite(LEDB, HIGH);
digitalWrite(LEDR, HIGH);
delay(t);
digitalWrite(LEDB, LOW);
digitalWrite(LEDR, LOW);
delay(t);
}
四、作業
1.請加入一個可變電阻,可改變其delay的時間。
五、參考資源
http://yehnan.blogspot.tw/2013/01/arduinorgb-led.html
http://forum.arduino.cc/index.php/topic,8320.0.html
http://howtomechatronics.com/tutorials/arduino/how-to-use-a-rgb-led-with-arduino/

沒有留言:
張貼留言