我在设置我的RGB led时遇到了一些问题。它不是普通的阳极,所以它只有2个引脚。不是4。我好像不能把led设置成改变颜色。它只会闪烁红色。我想让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);
}发布于 2014-04-14 03:46:46
首先,这不是一个软件问题。
当涉及到你的问题时,2个固定的LED不能像4个固定的那样工作。如果您使用的是带2个引脚的LED,您可以给它们一个电压,然后等待它们随时间改变颜色。
然而,你可以改变他们的‘颜色改变时间’应用PWM到它的Vcc引脚。但从另一方面来说,这让它变得更少了。
发布于 2014-11-29 04:39:31
因为你有一个缓慢的颜色转换,你不能通过PWM控制时间。PWM将以高速率打开和关闭LED。当您施加电压时,这些2针慢/快颜色转换器LED中的颜色转换电路就会亮起。只要通电,程序就会运行。当您将其关闭然后再打开时(除非它正在存储内部数据),它将重置并从其编程周期的开始处开始。
试试这个小实验:打开LED,等待5秒钟。注意颜色模式。关闭它并等待2秒。然后再次打开它。
如果颜色模式重新开始,那么该LED就会“忘记”它曾经在哪里,并且在每次通电时被重置。
如果它继续它停止的地方(我非常怀疑),那么它有内部NV存储器,你也许能够控制变化的速度,但只能让它变得更慢。
如果5秒后LED一直没有变化,我不得不说这是一个普通的单色LED。若要查看它是否为双色类型,请尝试反转极性。如果你得到另一种颜色,你有我正向反向双色LED。如果没有,说明您有一个普通的LED。
希望这能有所帮助!
https://stackoverflow.com/questions/23046248
复制相似问题