极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24471|回复: 19

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

[复制链接]
发表于 2014-9-30 04:22:44 | 显示全部楼层 |阅读模式


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



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

小白求大神解答!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-9-30 09:53:53 | 显示全部楼层
你自己编译、下载到 UNO中看一下,就知道出现什么错误了。
回复 支持 反对

使用道具 举报

发表于 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
我想应该是用电位器单独控制1中颜色吧,把电位器接入模拟端口(如A0),再用analogRead()读出模拟量,这样就 ...

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

使用道具 举报

发表于 2014-9-30 13:53:30 | 显示全部楼层
奔跑的二毛 发表于 2014-9-30 13:33
就是控制RGB的颜色,可以调出不同的色,请问代码具体怎么写啊,新手不懂,求参考~

把你的代码贴上来吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-30 14:13:45 | 显示全部楼层
i7456 发表于 2014-9-30 13:53
把你的代码贴上来吧

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);  
}
就是上面的那个!
谢谢!
回复 支持 反对

使用道具 举报

发表于 2014-9-30 14:29:45 | 显示全部楼层
奔跑的二毛 发表于 2014-9-30 14:13
int redPin = 11;
int greenPin = 10;
int bluePin = 9
  1. int redPin = 11;
  2. int greenPin = 10;
  3. int bluePin = 9;
  4. int value = 0;

  5. void setup()
  6. {
  7. pinMode(redPin, OUTPUT);
  8. pinMode(greenPin, OUTPUT);
  9. pinMode(bluePin, OUTPUT);
  10. }

  11. void loop()
  12. {
  13.         value = analogRead(5)/4;
  14.         setColor(value, 70, 80);  // 红色  
  15. }

  16. void setColor(int red, int green, int blue)
  17. {
  18.   analogWrite(redPin, 255-red);
  19.   analogWrite(greenPin, 255-green);
  20.   analogWrite(bluePin, 255-blue);  
  21. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2014-9-30 15:48:07 | 显示全部楼层
i7456 发表于 2014-9-30 14:29

或者直接 analogWrite(redPin, 255 - value) 可能簡單 D.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-30 16:14:00 | 显示全部楼层
i7456 发表于 2014-9-30 14:29

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

使用道具 举报

 楼主| 发表于 2014-9-30 16:17:41 | 显示全部楼层
i7456 发表于 2014-9-30 14:29

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

使用道具 举报

发表于 2014-9-30 16:17:41 | 显示全部楼层
奔跑的二毛 发表于 2014-9-30 16:14
谢谢!等回去了试试!这是只控制红色通道的话, 如果我只是用电位器来调不同的颜色,转动电位器,什么色都 ...

你需要3个电位器,每个电位器控制一个颜色的亮度。
回复 支持 反对

使用道具 举报

发表于 2014-9-30 16:22:59 | 显示全部楼层
奔跑的二毛 发表于 2014-9-30 16:17
还有这个代码没有看懂,        setColor(value, 70, 80);  // 红色  
红色的话不应该是(255,0,0)吗 ...

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

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

使用道具 举报

 楼主| 发表于 2014-9-30 17:04:19 | 显示全部楼层
i7456 发表于 2014-9-30 16:22
你的问题是“如何用电位器 只改变RGB灯中红色灯的值呢”,我给你的程序可以改变红色灯的亮度。

setCol ...

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

使用道具 举报

发表于 2014-9-30 17:15:01 | 显示全部楼层
奔跑的二毛 发表于 2014-9-30 17:04
谢谢你解释的这么详细!
value = analogRead(5)/4;  这个单杠4是什么意思呢?
setColor(value, 70, 80 ...

analogRead(5)/4;
把analogRead()的值除以4,analogRead()范围是0-1023,analogWrite()的范围是0-255;
70,80这两个数是我随便写的,你改成别的数值看下结果就好了。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 13:34 , Processed in 0.038667 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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