# 多個 LEDs 的使用 [TOC] --- <iframe src="//slides.com/shinjia/arduino_leds/embed?token=tFmNFHdQ" width="576" height="420" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> - [直接超連結開啟](https://slides.com/shinjia/arduino_leds/fullscreen?token=tFmNFHdQ) ## 補充 - 如何測量LED共陰或共陽 ([Google搜尋](https://www.google.com.tw/search?q=led+共陰測量)、[參考此處](http://content.saihs.edu.tw/contentbook/bep2/U1/07/b/b2_2.htm)) - 常用的Arduino板子 (Arduino UNO, Arduino Mega, Arduino Nano) - [74HC595](http://www.google.com.tw/search?q=74HC595+Arduino) 用3個輸入線控制8個針腳 - [WS2812B](http://www.google.com.tw/search?q=WS2812B+Arduino) 可定址的LED,用一條資料線控制全部LED ## 程式練習 ### Code1:隨機變換顏色 (此程式適用於共陰 LED) ```Arduino= const int pinR = 9; // 設定 bluePin 的 PWM 驅動腳位 const int pinG = 10; // 設定 greenPin 的 PWM 驅動腳位 const int pinB = 11; // 設定 redPin 的 PWM 驅動腳位 int valueR=0, valueG=0, valueB=0; void setup() { } void loop() { valueR = random(0,50); valueG = random(0,50); valueB = random(0,50); analogWrite(pinR,valueR); analogWrite(pinG,valueG); analogWrite(pinB,valueB); delay(2000); } ``` ### Code2:漸層效果的顏色變化 (此程式適用於共陰 LED) ```Arduino= const int pinR = 9; // 設定 bluePin 的 PWM 驅動腳位 const int pinG = 10; // 設定 greenPin 的 PWM 驅動腳位 const int pinB = 11; // 設定 redPin 的 PWM 驅動腳位 int maxR = 150; int maxG = 100; int maxB = 100; int count = 100; // 迴圈次數 float valueR, valueG, valueB; float valueR1, valueG1, valueB1; float valueR2, valueG2, valueB2; float stepR, stepG, stepB; void setup() { valueR1 = (float)random(1,maxR); valueG1 = (float)random(1,maxG); valueB1 = (float)random(1,maxB); } void loop() { valueR2 = (float)random(1,maxR); valueG2 = (float)random(1,maxG); valueB2 = (float)random(1,maxB); stepR = (valueR2-valueR1) / count; stepG = (valueG2-valueG1) / count; stepB = (valueB2-valueB1) / count; valueR = valueR1; valueG = valueG1; valueB = valueB1; for(int i=0; i<count; i++) { valueR += stepR; valueG += stepG; valueB += stepB; analogWrite(pinR,valueR); analogWrite(pinG,valueG); analogWrite(pinB,valueB); delay(30); } valueR1 = valueR2; valueG1 = valueG2; valueB1 = valueB2; } ``` ## 如果使用共陽的 LED 呢? - 最暗值? - 最亮值? ### Code1:隨機變換顏色 (此程式適用於共陽 LED) ```Arduino= const int pinR = 9; // 設定 bluePin 的 PWM 驅動腳位 const int pinG = 10; // 設定 greenPin 的 PWM 驅動腳位 const int pinB = 11; // 設定 redPin 的 PWM 驅動腳位 int valueR=0, valueG=0, valueB=0; void setup() { } void loop() { valueR = random(180,255); valueG = random(200,255); valueB = random(150,255); analogWrite(pinR,valueR); analogWrite(pinG,valueG); analogWrite(pinB,valueB); delay(2000); } ``` ### Code2:漸層效果的顏色變化 (此程式適用於共陽 LED) ```Arduino= const int pinR = 9; // 設定 bluePin 的 PWM 驅動腳位 const int pinG = 10; // 設定 greenPin 的 PWM 驅動腳位 const int pinB = 11; // 設定 redPin 的 PWM 驅動腳位 int maxR = 50; int maxG = 150; int maxB = 180; int count = 100; // 迴圈次數 float valueR, valueG, valueB; float valueR1, valueG1, valueB1; float valueR2, valueG2, valueB2; float stepR, stepG, stepB; void setup() { valueR1 = (float)random(maxR,255); valueG1 = (float)random(maxG,255); valueB1 = (float)random(maxB,255); } void loop() { valueR2 = (float)random(maxR,255); valueG2 = (float)random(maxG,255); valueB2 = (float)random(maxB,255); stepR = (valueR2-valueR1) / count; stepG = (valueG2-valueG1) / count; stepB = (valueB2-valueB1) / count; valueR = valueR1; valueG = valueG1; valueB = valueB1; for(int i=0; i<count; i++) { valueR -= stepR; valueG -= stepG; valueB -= stepB; analogWrite(pinR,valueR); analogWrite(pinG,valueG); analogWrite(pinB,valueB); delay(30); } valueR1 = valueR2; valueG1 = valueG2; valueB1 = valueB2; } ```