可以實(shí)現(xiàn)預(yù)定功能,但不明白為什么可以刪除的不能刪,不符合常理,是不是有啥缺陷,剛開(kāi)始學(xué)多線
- /*
- 設(shè)置3線程,可以運(yùn)行流水光帶燈、點(diǎn)亮光帶、判斷邏輯、讀取流水速率,但程序本身存在缺陷,可以刪除的不能刪,可以添加的也不能添加,暫時(shí)沒(méi)有解決,基本運(yùn)行狀態(tài)良好
- */
- #include <FastLED.h>
- #include <SCoop.h>
- #define Led 9 // PIN 信號(hào)燈引腳
- #define NUM_LEDS 32 // 燈殼內(nèi)發(fā)光點(diǎn)數(shù)量
- CRGB leds[NUM_LEDS]; // 彩燈控制的封裝函數(shù)
-
- void GDRon( unsigned int a ,unsigned int b );
- void GDGon( unsigned int a ,unsigned int b );
- void GDBon( unsigned int a ,unsigned int b );
- void GDoff( unsigned int a ,unsigned int b );
- void GDLiuR( unsigned int a ,unsigned int b );
- void GDLiuG( unsigned int a ,unsigned int b );
- unsigned int Between ;
- //定義燈 編號(hào)
- //9#引腳輸出光帶信號(hào)
- //定義燈 初始狀態(tài)
- int LED2 = 2; //報(bào)警2#引腳
- int LED3;int LED4;int LED5;int LED6 ;int LED7;int LED8;
- int LED10;int LED11 ;int LED12 ;
-
- int LEDA0;int LEDA1;int LEDA2 ;int LEDA3 ;int LEDA4;int LEDA5 ;
- defineTask(Task1)
- void Task1::setup()
- {
- pinMode( 3,INPUT_PULLUP);pinMode( 4,INPUT_PULLUP);
- pinMode( 5,INPUT_PULLUP);pinMode( 6,INPUT_PULLUP);pinMode( 7,INPUT_PULLUP);pinMode( 8,INPUT_PULLUP);pinMode(10,INPUT_PULLUP);pinMode(11,INPUT_PULLUP);pinMode( 12,INPUT_PULLUP);
-
- pinMode(A0,INPUT_PULLUP);pinMode(A1,INPUT_PULLUP);pinMode(A2,INPUT_PULLUP);pinMode(A3,INPUT_PULLUP);pinMode(A4,INPUT_PULLUP);pinMode(A5,INPUT_PULLUP);
-
- pinMode(9,OUTPUT);
- pinMode(LED2,OUTPUT); digitalWrite(LED2,HIGH);
-
- FastLED.addLeds<WS2812, Led, GRB>(leds, NUM_LEDS); // 選擇引腳作為發(fā)送信號(hào)口,僅用一個(gè)PIN
- unsigned int leds[] = { CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- };
- }
-
- void Task1::loop()
- {
- LED2 = digitalRead(2); LED3 = digitalRead(3); LED4 = digitalRead(4); LED5 = digitalRead(5); LED6 = digitalRead(6); LED7 = digitalRead(7);
- LED8 = digitalRead(8); LED10 = digitalRead(10); LED11 = digitalRead(11); LED12 = digitalRead(12);
- LEDA0 = analogRead(A0); LEDA1 = analogRead(A1); LEDA2 = analogRead(A2); LEDA3 = analogRead(A3); LEDA4 = analogRead(A4); LEDA5 = analogRead(A5);
-
- Between = map(LEDA0, 0, 1023, 50, 250);
- if( LED6 == 0 ) { GDLiuR( 11 , 29 ) ; } GDoff( 11 , 29 ) ;
-
- }
- defineTask(Task2)
- void Task2::setup(){
- pinMode( 3,INPUT_PULLUP);pinMode( 4,INPUT_PULLUP);
- pinMode( 5,INPUT_PULLUP);pinMode( 6,INPUT_PULLUP);pinMode( 7,INPUT_PULLUP);pinMode( 8,INPUT_PULLUP);pinMode(10,INPUT_PULLUP);pinMode(11,INPUT_PULLUP);pinMode( 12,INPUT_PULLUP);
-
- pinMode(A0,INPUT_PULLUP);pinMode(A1,INPUT_PULLUP);pinMode(A2,INPUT_PULLUP);pinMode(A3,INPUT_PULLUP);pinMode(A4,INPUT_PULLUP);pinMode(A5,INPUT_PULLUP);
-
- pinMode(9,OUTPUT);
- pinMode(LED2,OUTPUT); digitalWrite(LED2,HIGH);
-
- FastLED.addLeds<WS2812, Led, GRB>(leds, NUM_LEDS); // 選擇引腳作為發(fā)送信號(hào)口,僅用一個(gè)PIN
- unsigned int leds[] = { CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- };
- }
- void Task2::loop()
- {
- LED2 = digitalRead(2); LED3 = digitalRead(3); LED4 = digitalRead(4); LED5 = digitalRead(5); LED6 = digitalRead(6); LED7 = digitalRead(7);
- LED8 = digitalRead(8); LED10 = digitalRead(10); LED11 = digitalRead(11); LED12 = digitalRead(12);
- LEDA0 = analogRead(A0); LEDA1 = analogRead(A1); LEDA2 = analogRead(A2); LEDA3 = analogRead(A3); LEDA4 = analogRead(A4); LEDA5 = analogRead(A5);
-
- //光控邏輯
-
- if( LED3 == 0 ){ GDRon( 0 , 4 ) ; }else GDoff( 0 , 4 ) ;
-
- if( LED5 == 0 ){ GDBon( 10 , 10 ) ; }else GDoff( 10 , 10 ) ;
-
-
- // 報(bào)警邏輯
- if( LED3 ==0 && LED4 ==0 || LED4 ==0 && LED5 ==0 ) { digitalWrite(LED2,LOW); sleep(2); }
- else { digitalWrite(LED2,HIGH); sleep(2); } //報(bào)警設(shè)定
- }
- defineTask(Task3)
- void Task3::setup()
- {
- pinMode( 4,INPUT_PULLUP);
- pinMode( 5,INPUT_PULLUP);pinMode( 6,INPUT_PULLUP);pinMode( 7,INPUT_PULLUP);pinMode( 8,INPUT_PULLUP);pinMode(10,INPUT_PULLUP);pinMode(11,INPUT_PULLUP);pinMode( 12,INPUT_PULLUP);
-
- pinMode(A0,INPUT_PULLUP);pinMode(A1,INPUT_PULLUP);pinMode(A2,INPUT_PULLUP);pinMode(A3,INPUT_PULLUP);pinMode(A4,INPUT_PULLUP);pinMode(A5,INPUT_PULLUP);
-
- pinMode(9,OUTPUT);
- pinMode(LED2,OUTPUT); digitalWrite(LED2,HIGH);
-
- FastLED.addLeds<WS2812, Led, GRB>(leds, NUM_LEDS); // 選擇引腳作為發(fā)送信號(hào)口,僅用一個(gè)PIN
- unsigned int leds[] = { CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ), CRGB ( 0,0,0 ),
- };
- }
-
- void Task3::loop()
- {
- LED4 = digitalRead(4);
- LEDA0 = analogRead(A0);
-
- int Between = map(LEDA0, 0, 1023, 50, 250);
- if( LED4 == 0 ) { GDLiuG( 5 , 9 ) ; } GDoff( 5 , 9 ) ;
-
- }
- void setup(){ Serial.begin(9600); mySCoop.start(); }
- void loop(){ yield(); }
- void GDRon( unsigned int a ,unsigned int b )
- {
- int x = b - a ;
- for( int y = 0; y <= x ;y++ )
- {
- int i = y + a ;
- leds[i] = CRGB ( 150,0,0 );
- }
- FastLED.show(); sleep(1);
- }
- void GDGon( unsigned int a ,unsigned int b )
- {
- int x = b - a ;
- for( int y = 0; y <= x ;y++ )
- {
- int i = y + a ;
- leds[i] = CRGB ( 0,150,0 );
- }
- FastLED.show(); sleep(1);
- }
- void GDBon( unsigned int a ,unsigned int b )
- {
- int x = b - a ;
- for( int y = 0; y <= x ;y++ )
- {
- int i = y + a ;
- leds[i] = CRGB ( 0,0,150 );
- }
- FastLED.show(); sleep(1);
- }
- void GDoff( unsigned int a ,unsigned int b )
- {
- int x = b - a ;
- for( int y = 0; y <= x ;y++ )
- {
- int i = y + a ;
- leds[i] = CRGB ( 0,0,0 );
- }
- FastLED.show(); sleep(1);
- }
- void GDLiuR( unsigned int a ,unsigned int b )
- {
-
- int x = b - a;
- Serial.println( LEDA0 );
- Serial.println( Between );
- for( int y=2; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
- for( int y=0; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 150,0,0 ); } FastLED.show(); delay( Between ) ;
-
-
- for( int y=0; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
- for( int y=1; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 150,0,0 ); } FastLED.show(); delay( Between ) ;
-
- for( int y=1; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
- for( int y=2; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 150,0,0 ); } FastLED.show(); delay( Between ) ;
- }
- void GDLiuG( unsigned int a ,unsigned int b )
- {
- int x = b - a ;
- for( int y=2; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
- for( int y=0; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,150,0 ); } FastLED.show(); delay( Between ) ;
-
-
- for( int y=0; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
- for( int y=1; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,150,0 ); } FastLED.show(); delay( Between ) ;
-
- for( int y=1; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
- for( int y=2; y <= x ;y=y+3 )
- { int i = y + a ; leds[i] = CRGB ( 0,150,0 ); } FastLED.show(); delay( Between ) ;
- }
-
- // if( millis() - lastTime > 2 * Between )
-
-
- // leds[i] = CRGB ( 0,150,0 ); // 翠綠
- // leds[i] = CRGB ( 150,0,0 ); FastLED.show(); sleepMicroseconds(10); // 大紅
- // leds[i] = CRGB ( 100,100,0 ); FastLED.show(); sleepMicroseconds(10); // 中黃
- // leds[i] = CRGB ( 0,0,150 ); FastLED.show(); sleepMicroseconds(10); // 深藍(lán)
- // leds[i] = CRGB ( 100,0,100 ); FastLED.show(); sleepMicroseconds(10); // 絳紫
- // leds[i] = CRGB ( 0,100,100 ); FastLED.show(); sleepMicroseconds(10); // 天藍(lán)
復(fù)制代碼
以上代碼下載:
arduino光帶多線程帶報(bào)警邏輯模版.zip
(2.07 KB, 下載次數(shù): 37)
2021-1-28 17:28 上傳
點(diǎn)擊文件名下載附件
|