zch-Jerry 发表于 2015-7-17 11:48:04

RGB LED 循环变色

下面程序编译出差   求大神指教。。。。


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);
}

liuxue4503 发表于 2015-7-17 14:32:09

代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网页上用的转义改回来就行。用下面的试试。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);
}

zch-Jerry 发表于 2015-7-17 16:17:22

liuxue4503 发表于 2015-7-17 14:32 static/image/common/back.gif
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

:handshake   OK   谢谢

zch-Jerry 发表于 2015-7-17 17:45:08

liuxue4503 发表于 2015-7-17 14:32 static/image/common/back.gif
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

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

liuxue4503 发表于 2015-7-17 20:48:05

zch-Jerry 发表于 2015-7-17 17:45 static/image/common/back.gif
我要加一个声音传感器模块,控制灯随音乐变换颜色,怎么修改程序。。。求指教!

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

mondaywoo 发表于 2015-7-18 16:33:24

初学者学习

zch-Jerry 发表于 2015-7-20 11:54:35

zch-Jerry 发表于 2015-7-17 17:45 static/image/common/back.gif
我要加一个声音传感器模块,控制灯随音乐变换颜色,怎么修改程序。。。求指教!

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

zch-Jerry 发表于 2015-7-22 10:57:33

liuxue4503 发表于 2015-7-17 14:32 static/image/common/back.gif
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

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变化的值,怎么修改程序??、

zch-Jerry 发表于 2015-7-22 10:58:32

liuxue4503 发表于 2015-7-17 14:32 static/image/common/back.gif
代码是网页上复制来的吧。
下次请把出错的信息一并弄来,更直观点。
其实代码没什么问题,把里面的一些网 ...

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变化的值,怎么修改程序??、

zch-Jerry 发表于 2015-7-22 17:18:15

zch-Jerry 发表于 2015-7-22 10:58 static/image/common/back.gif
if (DEBUG) {
    DEBUG += 1;   
    if (DEBUG > 10)


   还要实现亮度调节怎么修改程序????

liuxue4503 发表于 2015-7-26 03:15:50

zch-Jerry 发表于 2015-7-22 10:58 static/image/common/back.gif
if (DEBUG) {
    DEBUG += 1;   
    if (DEBUG > 10)


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

liuxue4503 发表于 2015-7-26 03:20:57

zch-Jerry 发表于 2015-7-22 17:18 static/image/common/back.gif
还要实现亮度调节怎么修改程序????

亮度调节,需要同时调节三路的输出占空比

小B爱 发表于 2016-3-25 18:34:04

您好,有电路图连接吗?可以分享给我不?
页: [1]
查看完整版本: RGB LED 循环变色