天天看点

Ardunio实现RGB调光原理PWM调光具体代码

原理

RGB灯一共四个接口,除去一个GND接口,余下三个接口分别对应红绿蓝三色,因此将三个接口分别连接三个不同的模拟口上进行PWM调光。

PWM调光

PWM是指脉冲宽度调制,用这种方式达到模拟值输出的效果函数为:

analogWrite(pin,value);

pin为引脚,value为应输出的值。PWM会使引脚产生一个高低电平不断变化的一个固定周期(490Hz)的方波。

具体代码

A、B、C代表三个颜色,数字代表PWM的输出值通过这些来达到不同颜色的效果。

//rgb调光
int i;
String instring="";
char LED="";
boolean stringcomplete=false;
void setup(){
  Serial.begin(9600);
}
void loop(){
  if(stringcomplete){
    if(LED=="A"){
      analogWrite(9,i);
    }
    else if(LED=="B"){
      analogWrite(10,i);
    }
    else if(LED=="C"){
      analogWrite(11,i);
    }
    stringcomplete=false;//将所有数据初始化,为下一次做准备
    LED="";
    instring="";
  }
}
void serialEvent()
{
  while(Serial.available()){
    char inchar=Serial.read();
    if(isDigit(inchar)){//判断是否为数字,是将数字赋给inspring,随后给i
      instring+=inchar;
    }
    else if(inchar=='\n'){//出现换行符(结束符)证明数据接收完毕,可以执行loop循环
      stringcomplete=true;
      i=instring.toInt(); //将instring中的数字转化为INT型
    }
    else LED=inchar;//英文将赋值给LED
  }
}
           

其中在串口事件中,字符为一个一个扫描并读取,例如串口输入A95,首先读取A存入inchar中,随后读取9存入instring再读取5存入instring中,最后读取==\N并将stringcomplete改为true==;最后把读取到的所有数字(也就是insting)转化为Int型并赋值给i。

串口事件.的一些用法在左边。

确实,引入串口事件后,整个程序会更有脉络感

继续阅读