我在设置RGB LED时遇到了一些麻烦。它不是共阳极,因此它只有2个引脚。不是4.我似乎无法设置指示灯来改变颜色。它只会闪烁红色。我希望led能够循环使用颜色。谢谢你的帮助!
int led1 = 2; //Don't worry about the other led variables, they work
int led2 = 7;
int led3 = 9;
int led4 = 12;
int led5 = 13;
int redPin = 5;int greenPin = 4;
int bluePin = 3;
//#define COMMON_ANODE
void setup(){
pinMode(led1, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop(){
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000);
}
void setColor(int red, int green, int blue){
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
答案 0 :(得分:3)
首先,这不是一个软件问题。
当遇到问题时,2个固定的LED不能像4个固定的LED一样工作。如果您使用的是带有2个引脚的LED,您可以给它们一个电压并等待它们随时间改变颜色。
但是,你可以改变它们的'换色时间',将PWM应用到它的Vcc引脚。但另一方面,它使它变得更少。
答案 1 :(得分:1)
由于您的换色器较慢,因此无法通过PWM控制时序。 PWM将以高速率打开LED然后关闭。当您施加电压时,那些2针慢/快换色器LED中的变色电路会打开。只要通电,程序就会运行。当您将其关闭然后再打开时(除非它存储内部数据)它将重置并从其编程周期的开始开始。
尝试这个小实验:打开LED并等待5秒钟。注意颜色模式。将其关闭并等待2秒钟。然后再打开它。
如果颜色图案重新开始,则该LED"忘记"它在哪里,并在每次通电时重置。
如果它从中断处继续(我非常怀疑),那么它具有内部NV存储器,您可能能够控制变化速度,但只能使速度变慢。
如果5秒后LED永远不会改变,我不得不说这是一个普通的单色LED。要查看它是否为双色类型,请尝试反转极性。如果你得到另一种颜色,你有我正向反转双色LED。如果没有,你有一个普通的LED。
希望有所帮助!