久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: arduino_WS2812光帶源程序,多線程分段流水效果 [打印本頁]

作者: wuhaishou    時間: 2021-1-28 17:30
標題: arduino_WS2812光帶源程序,多線程分段流水效果
可以實現預定功能,但不明白為什么可以刪除的不能刪,不符合常理,是不是有啥缺陷,剛開始學多線
  1. /*
  2.   設置3線程,可以運行流水光帶燈、點亮光帶、判斷邏輯、讀取流水速率,但程序本身存在缺陷,可以刪除的不能刪,可以添加的也不能添加,暫時沒有解決,基本運行狀態良好
  3. */
  4. #include <FastLED.h>
  5. #include <SCoop.h>

  6. #define Led      9  // PIN 信號燈引腳
  7. #define NUM_LEDS  32  // 燈殼內發光點數量
  8. CRGB leds[NUM_LEDS]; // 彩燈控制的封裝函數

  9. void GDRon( unsigned int a ,unsigned int b );
  10. void GDGon( unsigned int a ,unsigned int b );
  11. void GDBon( unsigned int a ,unsigned int b );
  12. void GDoff( unsigned int a ,unsigned int b );

  13. void GDLiuR( unsigned int a ,unsigned int b );
  14. void GDLiuG( unsigned int a ,unsigned int b );
  15. unsigned int Between ;
  16. //定義燈 編號

  17. //9#引腳輸出光帶信號

  18. //定義燈 初始狀態
  19.   int LED2 = 2; //報警2#引腳
  20.   int LED3;int LED4;int LED5;int LED6 ;int LED7;int LED8;
  21.   int LED10;int LED11 ;int LED12 ;
  22.   
  23.   int LEDA0;int LEDA1;int LEDA2 ;int LEDA3 ;int LEDA4;int LEDA5 ;

  24.   defineTask(Task1)
  25.   void Task1::setup()
  26.    {
  27.        pinMode( 3,INPUT_PULLUP);pinMode( 4,INPUT_PULLUP);
  28.        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);
  29.    
  30.        pinMode(A0,INPUT_PULLUP);pinMode(A1,INPUT_PULLUP);pinMode(A2,INPUT_PULLUP);pinMode(A3,INPUT_PULLUP);pinMode(A4,INPUT_PULLUP);pinMode(A5,INPUT_PULLUP);
  31.    
  32.        pinMode(9,OUTPUT);
  33.        pinMode(LED2,OUTPUT); digitalWrite(LED2,HIGH);   
  34.   
  35.        FastLED.addLeds<WS2812, Led, GRB>(leds, NUM_LEDS);                      // 選擇引腳作為發送信號口,僅用一個PIN

  36.        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 ),
  37.                                 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 ),
  38.                                 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 ),
  39.                                 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 ),
  40.                               };
  41.    }
  42.    
  43.   void Task1::loop()
  44.    {  
  45.       LED2   = digitalRead(2);  LED3   = digitalRead(3);  LED4   = digitalRead(4);  LED5  = digitalRead(5); LED6  = digitalRead(6); LED7  = digitalRead(7);
  46.       LED8   = digitalRead(8);  LED10  = digitalRead(10); LED11  = digitalRead(11); LED12  = digitalRead(12);
  47.       LEDA0  = analogRead(A0);  LEDA1  = analogRead(A1);  LEDA2  = analogRead(A2);  LEDA3  = analogRead(A3);  LEDA4  = analogRead(A4);  LEDA5 = analogRead(A5);  
  48.    
  49.       Between = map(LEDA0, 0, 1023, 50, 250);
  50.       if( LED6 == 0 ) {  GDLiuR( 11 , 29 ) ; }    GDoff( 11 , 29 ) ;   
  51.       
  52.     }

  53.   defineTask(Task2)
  54.   void Task2::setup(){
  55.    pinMode( 3,INPUT_PULLUP);pinMode( 4,INPUT_PULLUP);
  56.    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);
  57.    
  58.    pinMode(A0,INPUT_PULLUP);pinMode(A1,INPUT_PULLUP);pinMode(A2,INPUT_PULLUP);pinMode(A3,INPUT_PULLUP);pinMode(A4,INPUT_PULLUP);pinMode(A5,INPUT_PULLUP);
  59.    
  60.    pinMode(9,OUTPUT);
  61.    pinMode(LED2,OUTPUT); digitalWrite(LED2,HIGH);   
  62.   
  63.   FastLED.addLeds<WS2812, Led, GRB>(leds, NUM_LEDS);                      // 選擇引腳作為發送信號口,僅用一個PIN

  64.   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 ),
  65.                            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 ),
  66.                            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 ),
  67.                            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 ),
  68.                         };
  69. }

  70. void Task2::loop()
  71. {
  72.   LED2   = digitalRead(2);  LED3   = digitalRead(3);  LED4   = digitalRead(4);  LED5  = digitalRead(5); LED6  = digitalRead(6); LED7  = digitalRead(7);
  73.   LED8   = digitalRead(8);  LED10  = digitalRead(10); LED11  = digitalRead(11); LED12  = digitalRead(12);
  74.   LEDA0  = analogRead(A0);  LEDA1  = analogRead(A1);  LEDA2  = analogRead(A2);  LEDA3  = analogRead(A3);  LEDA4  = analogRead(A4);  LEDA5 = analogRead(A5);  



  75.   //光控邏輯  
  76.   
  77.   if( LED3 == 0 ){ GDRon( 0 , 4 ) ; }else GDoff( 0 , 4 ) ;
  78.   
  79.   if( LED5 == 0 ){ GDBon( 10 , 10 ) ; }else GDoff( 10 , 10 ) ;

  80.    
  81.   
  82.   // 報警邏輯
  83.   if( LED3  ==0 && LED4  ==0 || LED4 ==0 && LED5  ==0 )   { digitalWrite(LED2,LOW);  sleep(2);  }  
  84.   else { digitalWrite(LED2,HIGH); sleep(2);  }     //報警設定      
  85. }

  86.   defineTask(Task3)
  87.   void Task3::setup()
  88.    {
  89.        pinMode( 4,INPUT_PULLUP);
  90.        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);
  91.    
  92.        pinMode(A0,INPUT_PULLUP);pinMode(A1,INPUT_PULLUP);pinMode(A2,INPUT_PULLUP);pinMode(A3,INPUT_PULLUP);pinMode(A4,INPUT_PULLUP);pinMode(A5,INPUT_PULLUP);
  93.    
  94.        pinMode(9,OUTPUT);
  95.        pinMode(LED2,OUTPUT); digitalWrite(LED2,HIGH);   
  96.   
  97.        FastLED.addLeds<WS2812, Led, GRB>(leds, NUM_LEDS);                      // 選擇引腳作為發送信號口,僅用一個PIN

  98.        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 ),
  99.                                 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 ),
  100.                                 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 ),
  101.                                 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 ),
  102.                               };
  103.    }
  104.    
  105.   void Task3::loop()
  106.    {  
  107.       LED4   = digitalRead(4);
  108.       LEDA0  = analogRead(A0);
  109.    
  110.       int Between = map(LEDA0, 0, 1023, 50, 250);
  111.       if( LED4 == 0 ) {  GDLiuG( 5 , 9 ) ; }    GDoff( 5 , 9 ) ;   
  112.       
  113.     }



  114. void setup(){ Serial.begin(9600); mySCoop.start();  }
  115. void  loop(){ yield();  }

  116. void GDRon( unsigned int a ,unsigned int b )
  117.     {
  118.       int x = b - a ;
  119.        for( int y = 0; y <= x ;y++ )
  120.            {
  121.             int i = y + a ;
  122.             leds[i] = CRGB ( 150,0,0 );            
  123.             }
  124.             FastLED.show(); sleep(1);
  125.     }
  126. void GDGon( unsigned int a ,unsigned int b )
  127.     {
  128.       int x = b - a ;
  129.        for( int y = 0; y <= x ;y++ )
  130.            {
  131.             int i = y + a ;
  132.             leds[i] = CRGB ( 0,150,0 );            
  133.             }
  134.             FastLED.show(); sleep(1);
  135.     }     

  136. void GDBon( unsigned int a ,unsigned int b )
  137.     {
  138.       int x = b - a ;
  139.        for( int y = 0; y <= x ;y++ )
  140.            {
  141.             int i = y + a ;
  142.             leds[i] = CRGB ( 0,0,150 );            
  143.             }
  144.             FastLED.show(); sleep(1);
  145.     }     

  146. void GDoff( unsigned int a ,unsigned int b )
  147.     {
  148.        int x = b - a ;
  149.        for( int y = 0; y <= x ;y++ )
  150.            {
  151.             int i = y + a ;
  152.             leds[i] = CRGB ( 0,0,0 );            
  153.             }  
  154.             FastLED.show(); sleep(1);
  155.     }

  156. void GDLiuR( unsigned int a ,unsigned int b )
  157.     {   

  158.             int x = b - a;
  159.         Serial.println( LEDA0 );   
  160.         Serial.println( Between );
  161.         for( int y=2; y <= x ;y=y+3 )
  162.            { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
  163.         for( int y=0; y <= x ;y=y+3 )
  164.            { int i = y + a ; leds[i] = CRGB ( 150,0,0 ); }   FastLED.show();   delay( Between ) ;
  165.          
  166.          
  167.         for( int y=0; y <= x ;y=y+3 )
  168.            { int i = y + a ; leds[i] = CRGB ( 0,0,0 );  }  
  169.         for( int y=1; y <= x ;y=y+3 )
  170.            { int i = y + a ; leds[i] = CRGB ( 150,0,0 );   }  FastLED.show(); delay( Between ) ;
  171.            
  172.         for( int y=1; y <= x ;y=y+3 )
  173.            { int i = y + a ; leds[i] = CRGB ( 0,0,0 );  }  
  174.         for( int y=2; y <= x ;y=y+3 )
  175.            { int i = y + a ; leds[i] = CRGB ( 150,0,0 );   }  FastLED.show(); delay( Between ) ;
  176.     }  
  177. void GDLiuG( unsigned int a ,unsigned int b )
  178.     {   
  179.          int x = b - a ;
  180.         for( int y=2; y <= x ;y=y+3 )
  181.            { int i = y + a ; leds[i] = CRGB ( 0,0,0 ); }
  182.         for( int y=0; y <= x ;y=y+3 )
  183.            { int i = y + a ; leds[i] = CRGB ( 0,150,0 ); }   FastLED.show();   delay( Between ) ;
  184.          
  185.          
  186.         for( int y=0; y <= x ;y=y+3 )
  187.            { int i = y + a ; leds[i] = CRGB ( 0,0,0 );  }  
  188.         for( int y=1; y <= x ;y=y+3 )
  189.            { int i = y + a ; leds[i] = CRGB ( 0,150,0 );   }  FastLED.show(); delay( Between ) ;
  190.            
  191.         for( int y=1; y <= x ;y=y+3 )
  192.            { int i = y + a ; leds[i] = CRGB ( 0,0,0 );  }  
  193.         for( int y=2; y <= x ;y=y+3 )
  194.            { int i = y + a ; leds[i] = CRGB ( 0,150,0 );   }  FastLED.show(); delay( Between ) ;
  195.     }  

  196.   // if( millis() - lastTime > 2 * Between  )
  197.         
  198.         

  199. //  leds[i] = CRGB ( 0,150,0 );    // 翠綠
  200. //  leds[i] = CRGB ( 150,0,0 ); FastLED.show(); sleepMicroseconds(10);   // 大紅
  201. //  leds[i] = CRGB ( 100,100,0 ); FastLED.show(); sleepMicroseconds(10); // 中黃
  202. //  leds[i] = CRGB ( 0,0,150 ); FastLED.show(); sleepMicroseconds(10);   // 深藍
  203. //  leds[i] = CRGB ( 100,0,100 ); FastLED.show(); sleepMicroseconds(10); // 絳紫
  204. //  leds[i] = CRGB ( 0,100,100 ); FastLED.show(); sleepMicroseconds(10); // 天藍
復制代碼

以上代碼下載: arduino光帶多線程帶報警邏輯模版.zip (2.07 KB, 下載次數: 37)

作者: dj3365191    時間: 2021-1-29 11:37
我試驗了,不亮




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 九色综合网 | 亚洲精品国产综合区久久久久久久 | 中文字幕亚洲精品 | 久久a久久 | 欧美一区二区三区在线观看视频 | yiren22 亚洲综合 | 成人精品视频免费 | 久久免费观看一级毛片 | 在线一区二区国产 | 亚洲欧美另类在线观看 | 黄视频免费观看 | 69精品久久久久久 | 日本午夜视频 | 盗摄精品av一区二区三区 | 欧美v在线观看 | 欧美日韩成人在线 | 欧美激情一区二区三区 | 欧美中文字幕一区 | 亚洲看片网站 | av国产精品毛片一区二区小说 | 国产成人精品免高潮在线观看 | 欧美精品一区二区三区一线天视频 | 国产激情在线 | 蜜桃视频一区二区三区 | 国产欧美精品一区二区 | 成人在线视频网 | 久久久精品综合 | 欧美大片一区 | 天堂av免费观看 | 高清免费在线 | 国产东北一级毛片 | 亚洲 成人 在线 | 亚洲国产成人精品女人 | 欧美日韩一区二区三区视频 | 亚洲第一女人av | 天天拍天天操 | 日韩一区在线播放 | 日本一级淫片免费啪啪3 | 一区二区三区不卡视频 | 亚洲一区在线观看视频 | 美女久久视频 |