include OLED h OLED my OLED DeclareRGB LED
作品製作與方法(軟體程式) 宣告 #include <OLED. h> OLED my. OLED; //-----Declare-RGB LED WS 2812 Driver ------#include "Fast. LED. h" #define NUM_LEDS 3 #define LED_PIN A 0 #define BRIGHTNESS 64 CRGB leds[NUM_LEDS]; #define KEY 1 2 #define KEY 2 6 int Demo. Func; void Flash_RGB(int m, char c, int n, int finv);
主程式 void setup() { //=======Setup-RS 232=============== Serial. begin(9600); pin. Mode(KEY 1, INPUT_PULLUP); pin. Mode(KEY 2, INPUT_PULLUP); delay( 100 ); // power-up safety delay Fast. LED. add. Leds<WS 2812 B, LED_PIN, RGB>(leds, NUM_LEDS); Fast. LED. set. Brightness( BRIGHTNESS ); SET_RGB(1 , 'D'); SET_RGB(2 , 'D'); SET_RGB(3 , 'D'); my. OLED. begin(FONT_8 x 16); //FONT_6 x 8 , FONT_8 x 16 my. OLED. println("Ex_RGB_KEY"); my. OLED. println("K 1 Run; K 2 Sel F"); }
副程式 void loop() { int Bn. State = digital. Read( KEY 1); if(Bn. State==0) { delay(500); switch(Demo. Func) { case 1: SET_RGB(1 , 'G'); SET_RGB(2 , 'D'); SET_RGB(3, 'D'); Serial. print("S 1"); break; case 2: SET_RGB(2 , 'Y'); SET_RGB(1 , 'D'); SET_RGB(3, 'D'); Serial. print("S 2"); break; case 3: SET_RGB(3 , 'R'); SET_RGB(2 , 'D'); SET_RGB(1, 'D'); Serial. print("S 3"); break; case 4: SET_RGB(1 , 'D'); SET_RGB(2 , 'D'); SET_RGB(3, 'D'); Serial. print("S 4"); break; case 5: Flash_RGB(1, 'G', 10, 200); ; SET_RGB(2 , 'D'); SET_RGB(3, 'D'); Serial. print("S 5"); break; case 6: Flash_RGB(1, 'Y', 10, 200); ; SET_RGB(1 , 'D'); SET_RGB(3, 'D'); Serial. print("S 6"); break;
Bn. State = digital. Read( KEY 2); if(Bn. State==0) { delay(700); // delay in between reads for stability if(Demo. Func>5) Demo. Func=1; else Demo. Func=Demo. Func+1; my. OLED. set. Posi(4, 0); my. OLED. print("Func No=: "); my. OLED. println(Demo. Func); } }
程式修改的部分 void SET_RGB(int m, char c) { m=m-1; if(c=='R') leds[m] = CRGB: : Red; if(c=='G') leds[m] = CRGB: : Green; if(c=='B') leds[m] = CRGB: : Blue; if(c=='Y') leds[m] = CRGB: : Yellow; if(c=='W') leds[m] = CRGB: : White; if(c=='D') leds[m] = CRGB: : Black; Fast. LED. show(); } void Flash_RGB(int m, char c, int n, int finv) { int i; m=m-1; leds[m] = CRGB: : Black; for(i=0; i<n; i++){ if(c=='R') leds[m] = CRGB: : Red; if(c=='G') leds[m] = CRGB: : Green; if(c=='B') leds[m] = CRGB: : Blue; if(c=='Y') leds[m] = CRGB: : Yellow; Fast. LED. show(); delay(finv); leds[m] = CRGB: : Black; Fast. LED. show(); delay(finv); } }
void Traffic. Light(int n, int m, int t) { // 1 R=n sec; 2 Y flash m; 3 G=t sec; //====step 1======= SET_RGB(1, 'R'); delay(n*1000); SET_RGB(1, 'D'); //====step 2========= Flash_RGB(2, 'Y', m, 200); SET_RGB(2, 'D'); // =====step 3 ========= SET_RGB(3, 'G'); delay(t*1000); SET_RGB(3, 'D'); }
- Slides: 16