实验目标
串口调光的全彩LED灯,通过串口数据使LED显示各种不同的颜色。
材料
UNO板,面包板,1个共阳极的RGB LED,3个220欧电阻。
线路图
image.png方法解析
使用9,10,11三个带有PWM输出功能的引脚分别调节RGB三种颜色发光。
arduino接收到的只是一个字符串,需要做的工作是将该字符串的英文部分和数字部分分离开,用英文部分选择控制PWM调光引脚,用数字部分来指定PWM的数值。
代码
int i; //保存PWM需要输入的值
String inString = ""; //输入的字符串
char LED =""; //用于判断指定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;
inString= "";
LED="";
}
}
//使用串口事件
//读取并分离字母和数字
void serialEvent()
{
while(Serial.available())
{
//读取新的字符
char inChar = Serial.read();
//如果是英文则存到变量LED中,如果是中文则存到inString中
if(isDigit(inChar))
{
inString+=inChar;
}
else if(inChar == '\n')
{
stringComplete = true;
i= inString.toInt();
}
else LED=inChar;
}
}
网友评论