crbgz 发表于 2016-8-19 15:23:50

arduino控制IC为WS2811的12伏LED灯条,做跑马灯,灯条裁智短了如何立刻做到循环?

#include <Adafruit_NeoPixel.h>

#define PIN 5      //#定義6 PIN


Adafruit_NeoPixel strip = Adafruit_NeoPixel(85, PIN, NEO_GRB + NEO_KHZ800);   
int redled2=11;
int redled=10;
int yellowled2=9;
int yellowled=8;
int greenled2=7;
int greenled=6;

int yellowpin=4;
int greenpin=3;
int redpin=2;
int red;
int yellow;
int green;


void setup()
{

   strip.begin();
strip.show(); // Initialize all pixels to 'off'      strip.show(); //初始化所有像素“關”

pinMode(redled2,OUTPUT);
pinMode(yellowled2,OUTPUT);
pinMode(greenled2,OUTPUT);
pinMode(redled,OUTPUT);
pinMode(yellowled,OUTPUT);
pinMode(greenled,OUTPUT);

pinMode(13,OUTPUT);
pinMode(14,OUTPUT);
pinMode(15,OUTPUT);

pinMode(redpin,INPUT);
pinMode(yellowpin,INPUT);
pinMode(greenpin,INPUT);
}
void loop()
{
red=digitalRead(redpin);
yellow=digitalRead(yellowpin);
green=digitalRead(greenpin);
if(red==LOW)RED_YES();
if(red==HIGH)RED_NO();

}

void RED_YES()//感应到人
/*{digitalWrite( redled,HIGH);
   digitalWrite( redled2,HIGH);
   digitalWrite(13,HIGH);
   delay(1000);

clear_led();
}*/

{ colorWipe(strip.Color(255, 0, 0), 1);
         }


void RED_NO()//无感应到人

{   //空隙環(){

rainbowCycle2(5);//5速度,越细越快

}

void rainbowCycle2(uint8_t wait) //無效rainbowCycle(uint8_t有等待){
{      
uint16_t i,j;
//uint16_t i,j;

for(j=0; j<256; j++)
       { // 5 cycles of all colors on wheel      對於(J = 0;Ĵ<256 * 5; J ++){// 5個週期輪上的所有顏色
    for(i=0; i< strip.numPixels(); i++)
         {            //對於(i = 0;我<strip.numPixels();我++){
            strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) - j) & 255));   // -i正转,+i 反转。+j前细后大,-j前大后细
            

                }
    strip.show();
    delay(wait);      //    延遲(等待);
}
}


uint32_t Wheel(byte WheelPos) {                   //uint32_t的車輪(字節WheelPos){
// WheelPos = 255 - WheelPos;
if(WheelPos < 30)//拖尾长度
       {                      //WheelPos = 100;   //如果(WheelPos <85){
               return strip.Color( 255 ,WheelPos , WheelPos );   //前跑馬灯颜色
         
      }




               else
               {         // }其他{
                   // WheelPos -= 170;      
                     return strip.Color( 0, 0, 0);   //背景灯光颜色
                   // return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);                // 返回strip.Color(WheelPos * 3,255 - WheelPos * 3,0);
               }
}




void colorWipe(uint32_t c, uint8_t wait) {                  //無效colorWipe(uint32_t的C,uint8_t有等待){
for(uint16_t i=0; i<strip.numPixels(); i++) {               //對於(uint16_t我= 0;我<strip.numPixels();我++){
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);                                          //    延遲(等待);
}
}

xinhoujue 发表于 2016-8-21 09:34:08

怪不得,你把灯条都截断了,那么硬件也改变了呀。想重新循环就要改动程序了!

crbgz 发表于 2016-8-22 17:37:35

嗯嗯!谢谢!
页: [1]
查看完整版本: arduino控制IC为WS2811的12伏LED灯条,做跑马灯,灯条裁智短了如何立刻做到循环?