极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22366|回复: 12

RGB LED 循环变色

[复制链接]
发表于 2015-7-17 11:48:04 | 显示全部楼层 |阅读模式
下面程序编译出差   求大神指教。。。。


int redPin   = 9;   // 红
int greenPin = 10;  // 绿
int bluePin  = 11;  // 蓝

// Program variables
int redVal   = 255;  
int greenVal = 1;   
int blueVal  = 1;

int i = 0;     
int wait = 50;
int DEBUG = 0;

void setup()
{
  pinMode(redPin,   OUTPUT);  
  pinMode(greenPin, OUTPUT);   
  pinMode(bluePin,  OUTPUT);
  if (DEBUG) {         
    Serial.begin(9600);  
  }
}


void loop()
{
  i += 1;     
  if (i < 255)
  {
    redVal   -= 1;
    greenVal += 1;
    blueVal   = 1;
  }
  else if (i < 509)
  {
    redVal    = 1;
    greenVal -= 1;
    blueVal  += 1;
  }
  else if (i < 763)
  {
    redVal  += 1;
    greenVal = 1;
    blueVal -= 1;
  }
  else
  {
    i = 1;
  }  

  analogWrite(redPin,   redVal);  
  analogWrite(greenPin, greenVal);
  analogWrite(bluePin,  blueVal);  

  if (DEBUG) {
    DEBUG += 1;     
    if (DEBUG > 10)
    {
      DEBUG = 1;     

      Serial.print(i);      
      Serial.print("\t");   
      Serial.print("R:");   
      Serial.print(redVal);  
      Serial.print("\t");   
      Serial.print("G:");   
      Serial.print(greenVal);
      Serial.print("\t");   
      Serial.print("B:");   
      Serial.println(blueVal);
    }
  }
  delay(wait);
}
回复

使用道具 举报

发表于 2015-7-17 14:32:09 | 显示全部楼层
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网页上用的转义改回来就行。用下面的试试。
  1. int redPin   = 9;   // 红
  2. int greenPin = 10;  // 绿
  3. int bluePin  = 11;  // 蓝

  4. // Program variables
  5. int redVal   = 255;  
  6. int greenVal = 1;   
  7. int blueVal  = 1;

  8. int i = 0;     
  9. int wait = 50;
  10. int DEBUG = 0;

  11. void setup()
  12. {
  13.   pinMode(redPin,   OUTPUT);  
  14.   pinMode(greenPin, OUTPUT);   
  15.   pinMode(bluePin,  OUTPUT);
  16.   if (DEBUG) {         
  17.     Serial.begin(9600);  
  18.   }
  19. }


  20. void loop()
  21. {
  22.   i += 1;     
  23.   if (i < 255)
  24.   {
  25.     redVal   -= 1;
  26.     greenVal += 1;
  27.     blueVal   = 1;
  28.   }
  29.   else if (i < 509)
  30.   {
  31.     redVal    = 1;
  32.     greenVal -= 1;
  33.     blueVal  += 1;
  34.   }
  35.   else if (i < 763)
  36.   {
  37.     redVal  += 1;
  38.     greenVal = 1;
  39.     blueVal -= 1;
  40.   }
  41.   else
  42.   {
  43.     i = 1;
  44.   }  

  45.   analogWrite(redPin,   redVal);  
  46.   analogWrite(greenPin, greenVal);
  47.   analogWrite(bluePin,  blueVal);  

  48.   if (DEBUG) {
  49.     DEBUG += 1;     
  50.     if (DEBUG > 10)
  51.     {
  52.       DEBUG = 1;     

  53.       Serial.print(i);      
  54.       Serial.print("\t");   
  55.       Serial.print("R:");   
  56.       Serial.print(redVal);  
  57.       Serial.print("\t");   
  58.       Serial.print("G:");   
  59.       Serial.print(greenVal);
  60.       Serial.print("\t");   
  61.       Serial.print("B:");   
  62.       Serial.println(blueVal);
  63.     }
  64.   }
  65.   delay(wait);
  66. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-17 16:17:22 | 显示全部楼层
liuxue4503 发表于 2015-7-17 14:32
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

   OK     谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-17 17:45:08 | 显示全部楼层
liuxue4503 发表于 2015-7-17 14:32
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

我要加一个声音传感器模块,控制灯随音乐变换颜色,怎么修改程序。。。求指教!
回复 支持 反对

使用道具 举报

发表于 2015-7-17 20:48:05 | 显示全部楼层
zch-Jerry 发表于 2015-7-17 17:45
我要加一个声音传感器模块,控制灯随音乐变换颜色,怎么修改程序。。。求指教!

这个从简单来讲,模拟口取到声音传感器的值,变换成你要控制的灯的值。这样的话,程序上再加上取值变换就可以实现。
从难了讲,比如说要做出EQ那样的,声音传感器这方面就要求多了解些。而且涉及到的程序也会多。
回复 支持 反对

使用道具 举报

发表于 2015-7-18 16:33:24 | 显示全部楼层
初学者学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-20 11:54:35 | 显示全部楼层
zch-Jerry 发表于 2015-7-17 17:45
我要加一个声音传感器模块,控制灯随音乐变换颜色,怎么修改程序。。。求指教!

我要用80个全彩灯拼出一个图。一个板子只有六个pwn口,也就是我只能控制两只灯。我要用尽量少的板子和线路怎么实现???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-22 10:57:33 | 显示全部楼层
liuxue4503 发表于 2015-7-17 14:32
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

if (DEBUG) {
    DEBUG += 1;     
    if (DEBUG > 10)
    {
      DEBUG = 1;     

      Serial.print(i);      
      Serial.print("\t");   
      Serial.print("R:");   
      Serial.print(redVal);  
      Serial.print("\t");   
      Serial.print("G:");   
      Serial.print(greenVal);
      Serial.print("\t");   
      Serial.print("B:");   
      Serial.println(blueVal);
    }
  }
这段代码什么意思??我想要串口监视器看R G B变化的值,怎么修改程序??、
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-22 10:58:32 | 显示全部楼层
liuxue4503 发表于 2015-7-17 14:32
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

if (DEBUG) {
    DEBUG += 1;     
    if (DEBUG > 10)
    {
      DEBUG = 1;     

      Serial.print(i);      
      Serial.print("\t");   
      Serial.print("R:");   
      Serial.print(redVal);  
      Serial.print("\t");   
      Serial.print("G:");   
      Serial.print(greenVal);
      Serial.print("\t");   
      Serial.print("B:");   
      Serial.println(blueVal);
    }
  }
这段代码什么意思??我想要串口监视器看R G B变化的值,怎么修改程序??、
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-22 17:18:15 | 显示全部楼层
zch-Jerry 发表于 2015-7-22 10:58
if (DEBUG) {
    DEBUG += 1;     
    if (DEBUG > 10)

   还要实现亮度调节怎么修改程序????
回复 支持 反对

使用道具 举报

发表于 2015-7-26 03:15:50 | 显示全部楼层
zch-Jerry 发表于 2015-7-22 10:58
if (DEBUG) {
    DEBUG += 1;     
    if (DEBUG > 10)

这是常用的一种输出调试信息的方法,需要这些信息的时候,把DEBUG这个值赋1就行。
具体的就是把程序前面的 int DEBUG = 0 这里,改成1。就能在串口看到输出了。
回复 支持 反对

使用道具 举报

发表于 2015-7-26 03:20:57 | 显示全部楼层
zch-Jerry 发表于 2015-7-22 17:18
还要实现亮度调节怎么修改程序????

亮度调节,需要同时调节三路的输出占空比
回复 支持 反对

使用道具 举报

发表于 2016-3-25 18:34:04 | 显示全部楼层
您好,有电路图连接吗?可以分享给我不?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 20:06 , Processed in 0.039306 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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