學習控制 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輸出,每一秒隨機出現顏色
wemos用
- #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);
- }
四、作業 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/
- // 根據接線圖定義控制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);
- }