非常感谢邵兄帮忙!
我发现收到超范围的数据是因为上位机在极短的时间里连续发送的结果. 估计修改一下上位机程序就可以了.
楼主我爱死你了!要是你弄个控制6路led的出来我就更爱你了;P
对了,顺便帮我看一下这个为什么没作用:
int ledCount = 6; //LED的总数量.
int ledOut[] = { 11, 10, 9, 6, 5, 3};//6个PWM输出,LED从11脚开始到3脚.
int b1; //1灯亮度.
int b2; //2灯亮度.
int b3; //3灯亮度.
int b4; //4灯亮度.
int b5; //5灯亮度.
int b6; //6灯亮度.
byte brigh [] = { b1, b2, b3, b4, b5, b6};//将6个亮度合成一个数组,方便调用.
int i = 0 ; //设定一个变量.
void setup() {
Serial.begin(115200); //设置串口波特率,使用蓝牙模块时,注意收发引脚交叉(T-R,R-T).
}
void loop() {
char ch;
if (Serial.available() > 0) //如果串口数据>0.
{
ch = Serial.read(); //读取串口数据到ch中.
switch (ch ) {
case '1': //根据发送的字符'1'-'6',赋值i '0'-'5'.
i = 0;
break;
case '2':
i = 1;
break;
case '3':
i = 2;
break;
case '4':
i = 3;
break;
case '5':
i = 4;
break;
case '6':
i = 5;
break;
}
}
if (ch = 'z' || ch = "Z")
{
if (i >= 0 && i <= 6)
{
if (ch == 'z' && brigh < 248) //小写字母'z'用于增加亮度,每次加8
{
brigh = brigh + 8;
}
if (ch == 'Z' && brigh > 0 ) //大写字母'Z'用于减小亮度,每次减8
{
brigh = brigh - 8;
}
}
analogWrite(ledOut, brigh ); //
}
}