极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17329|回复: 2

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

[复制链接]
发表于 2016-8-19 15:23:50 | 显示全部楼层 |阅读模式
#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;&#308;<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);                                            //    延遲(等待);
  }
}
回复

使用道具 举报

发表于 2016-8-21 09:34:08 | 显示全部楼层
怪不得,你把灯条都截断了,那么硬件也改变了呀。想重新循环就要改动程序了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-22 17:37:35 | 显示全部楼层
嗯嗯!谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 09:33 , Processed in 0.060631 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表