Arduino 一次淡入和淡出LED条的部分
我的代码有一些问题。我希望它做什么:Arduino 一次淡入和淡出LED条的部分,arduino,led,Arduino,Led,我的代码有一些问题。我希望它做什么: 淡入式LED 0-12 延迟0.5秒 淡入式LED 13-26 延迟(x金额) 淡出发光二极管0-12 延迟0.5秒(同上) 淡出发光二极管13-26 它的作用是: 淡入式LED 0-12 延迟(x金额) 淡出发光二极管0-12 淡入式LED 13-26 延迟(x金额) -淡出发光二极管13-26 这是我的密码: #include <Adafruit_NeoPixel.h> #define SENSORPIN 4 #define LEDP
- 淡入式LED 0-12
- 延迟0.5秒
- 淡入式LED 13-26
- 延迟(x金额)
- 淡出发光二极管0-12
- 延迟0.5秒(同上)
- 淡出发光二极管13-26
- 淡入式LED 0-12
- 延迟(x金额)
- 淡出发光二极管0-12
- 淡入式LED 13-26
- 延迟(x金额) -淡出发光二极管13-26
#include <Adafruit_NeoPixel.h>
#define SENSORPIN 4
#define LEDPIN 13
// variables will change:
int sensorState = 0, lastState=0; // variable for reading the pushbutton status
int PIN = 6;
int totalLEDs = 26;
int ledFadeTime = 10;
int lightuptime = 7000;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(totalLEDs, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
pinMode(SENSORPIN, INPUT);
digitalWrite(SENSORPIN, HIGH); // turn on the pullup
Serial.begin(9600);
}
void loop() {
// read the state of the sensor value:
sensorState = digitalRead(SENSORPIN);
// check if the sensor beam is broken
// if it is, the sensorState is LOW:
if (sensorState == LOW) {
rgbFadeInAndOut(255, 255, 255, ledFadeTime,0,13);
delay(50);
rgbFadeInAndOut(255, 255, 255, ledFadeTime,13,26);
}
else {
}
lastState = sensorState;
}
void rgbFadeInAndOut(uint8_t red, uint8_t green, uint8_t blue, uint8_t wait, uint8_t ledStart, uint8_t ledEnd) {
for(uint8_t b = 0; b <255; b++) {
for(uint8_t i=ledStart; i < ledEnd; i++) {
strip.setPixelColor(i, red * b/255, green * b/255, blue * b/255);
}
delay(25);
strip.show();
//delay(wait);
};
delay(lightuptime);
for(uint8_t b=255; b > 0; b--) {
for(uint8_t i = ledStart; i < ledEnd; i++) {
strip.setPixelColor(i, red * b/255, green * b/255, blue * b/255);
if(b==1){
strip.setPixelColor(i, 0, 0, 0);
}
}
strip.show();
delay(wait);
};
};
#包括
#定义传感器针脚4
#定义LED引脚13
//变量将发生变化:
int sensorState=0,lastState=0;//用于读取按钮状态的变量
int引脚=6;
整数=26;
int-ledFadeTime=10;
int-lightuptime=7000;
Adafruit_NeoPixel条=Adafruit_NeoPixel(总计、销、NEO_GRB+NEO_KHZ800);
无效设置(){
strip.begin();
strip.show();//将所有像素初始化为“关闭”
引脚模式(传感器引脚,输入);
digitalWrite(传感器引脚,高);//打开上拉
Serial.begin(9600);
}
void循环(){
//读取传感器值的状态:
sensorState=数字读取(SENSORPIN);
//检查传感器光束是否损坏
//如果是,则传感器状态为低:
如果(传感器状态==低){
rgbFadeInadount(255,255,255,ledFadeTime,0,13);
延迟(50);
RGbFadeFinandout(255、255、255、ledFadeTime、13、26);
}
否则{
}
lastState=传感器状态;
}
无效RGBFADEINADUNT(uint8_t红色、uint8_t绿色、uint8_t蓝色、uint8_t等待、uint8_t LED开始、uint8_t LED结束){
对于(uint8_t b=0;b0;b--){
对于(uint8_t i=ledStart;i
我缺少什么?在将控制权返回调用函数之前,您的函数
rgbFadeInAndOut
将淡入然后淡出指定的LED
如果您想要您想要的行为,只需将淡入淡出分割为两个单独的函数:rgbFadeIn(…)
和rgbFadeOut(…)
然后你会:
rgbFadeIn(0..12);
delay(500); // note that 0.5 seconds is 500ms not 50
rgbFadeIn(13..26);
delay(x amount)
rgbFadeOut(0..12);
delay(500);
rgbFadeOut(13..26);
这就成功了。谢谢你的帮助:)