奔跑的二毛 发表于 2014-9-30 04:22:44

用电位器调RGB灯的颜色,请问我这个出现什么错误了?



请问我的代码有什么问题?



还有一个是如何用电位器 只改变RGB灯中红色灯的值呢?

小白求大神解答!!

i7456 发表于 2014-9-30 09:53:53

你自己编译、下载到 UNO中看一下,就知道出现什么错误了。

xxllg 发表于 2014-9-30 10:04:50

我想应该是用电位器单独控制1中颜色吧,把电位器接入模拟端口(如A0),再用analogRead()读出模拟量,这样就可以进行控制了。

贱客 发表于 2014-9-30 10:37:56

delay(ms)

5 ms 肉眼反应不过来,看上去就是 RGB 都是亮的,变成白光。
如果想5秒就改为 5000

奔跑的二毛 发表于 2014-9-30 13:33:19

xxllg 发表于 2014-9-30 10:04 static/image/common/back.gif
我想应该是用电位器单独控制1中颜色吧,把电位器接入模拟端口(如A0),再用analogRead()读出模拟量,这样就 ...

就是控制RGB的颜色,可以调出不同的色,请问代码具体怎么写啊,新手不懂,求参考~

i7456 发表于 2014-9-30 13:53:30

奔跑的二毛 发表于 2014-9-30 13:33 static/image/common/back.gif
就是控制RGB的颜色,可以调出不同的色,请问代码具体怎么写啊,新手不懂,求参考~

把你的代码贴上来吧

奔跑的二毛 发表于 2014-9-30 14:13:45

i7456 发表于 2014-9-30 13:53 static/image/common/back.gif
把你的代码贴上来吧

int redPin = 11;
int greenPin = 10;
int bluePin = 9
int value = 5;

void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}

void loop() {
setColor(255, 0, 0);// 红色
delay(value);
setColor(0, 255, 0);// 绿色
delay(value);
setColor(0, 0, 255);// 蓝色
delay(value);

}

void setColor(int red, int green, int blue)
{
analogWrite(redPin, 255-red);
analogWrite(greenPin, 255-green);
analogWrite(bluePin, 255-blue);
}
就是上面的那个!
谢谢!

i7456 发表于 2014-9-30 14:29:45

奔跑的二毛 发表于 2014-9-30 14:13 static/image/common/back.gif
int redPin = 11;
int greenPin = 10;
int bluePin = 9


int redPin = 11;
int greenPin = 10;
int bluePin = 9;
int value = 0;

void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}

void loop()
{
        value = analogRead(5)/4;
        setColor(value, 70, 80);// 红色
}

void setColor(int red, int green, int blue)
{
analogWrite(redPin, 255-red);
analogWrite(greenPin, 255-green);
analogWrite(bluePin, 255-blue);
}

Super169 发表于 2014-9-30 15:48:07

i7456 发表于 2014-9-30 14:29 static/image/common/back.gif


或者直接 analogWrite(redPin, 255 - value) 可能簡單 D.

奔跑的二毛 发表于 2014-9-30 16:14:00

i7456 发表于 2014-9-30 14:29 static/image/common/back.gif


谢谢!等回去了试试!这是只控制红色通道的话, 如果我只是用电位器来调不同的颜色,转动电位器,什么色都能出来的那种,代码请问怎么改呢~

奔跑的二毛 发表于 2014-9-30 16:17:41

i7456 发表于 2014-9-30 14:29 static/image/common/back.gif


还有这个代码没有看懂,      setColor(value, 70, 80);// 红色
红色的话不应该是(255,0,0)吗?
请原谅我,小白问题比较多 ~ :)

i7456 发表于 2014-9-30 16:17:41

奔跑的二毛 发表于 2014-9-30 16:14 static/image/common/back.gif
谢谢!等回去了试试!这是只控制红色通道的话, 如果我只是用电位器来调不同的颜色,转动电位器,什么色都 ...

你需要3个电位器,每个电位器控制一个颜色的亮度。

i7456 发表于 2014-9-30 16:22:59

奔跑的二毛 发表于 2014-9-30 16:17 static/image/common/back.gif
还有这个代码没有看懂,      setColor(value, 70, 80);// 红色
红色的话不应该是(255,0,0)吗 ...

你的问题是“如何用电位器 只改变RGB灯中红色灯的值呢”,我给你的程序可以改变红色灯的亮度。

setColor(255, 0, 0);//你在程序中把亮度设定成常数值了,你还如何控制呢?

奔跑的二毛 发表于 2014-9-30 17:04:19

i7456 发表于 2014-9-30 16:22 static/image/common/back.gif
你的问题是“如何用电位器 只改变RGB灯中红色灯的值呢”,我给你的程序可以改变红色灯的亮度。

setCol ...

谢谢你解释的这么详细!
value = analogRead(5)/4;这个单杠4是什么意思呢?
setColor(value, 70, 80);// 红色这个我不懂的设为为什么是70,80这两个数值?

i7456 发表于 2014-9-30 17:15:01

奔跑的二毛 发表于 2014-9-30 17:04 static/image/common/back.gif
谢谢你解释的这么详细!
value = analogRead(5)/4;这个单杠4是什么意思呢?
setColor(value, 70, 80 ...

analogRead(5)/4;
把analogRead()的值除以4,analogRead()范围是0-1023,analogWrite()的范围是0-255;
70,80这两个数是我随便写的,你改成别的数值看下结果就好了。
页: [1] 2
查看完整版本: 用电位器调RGB灯的颜色,请问我这个出现什么错误了?