|
|
代码如下,希望利用接收的呼吸数据转化为PWM控制电机的速度。
int motor=11;
int PWM=0;
void setup() {
Serial1.begin(115200);
Serial.begin(115200);
Serial1.write(0xFF);
Serial1.write(0xCC);
Serial1.write(0x03);
Serial1.write(0xA3);
Serial1.write(0xA0);//给传感器发送指令,让其工作,发送数据。
delay(1000);
}
byte jieshou[5];
byte flag=0;
byte inByte;
void loop() {
if (Serial1.available() > 0&&flag==0)
{
inByte=Serial1.read();
delay(10);
if(inByte==0xcc)
{
for(int i=0;i<5;i++)
{
if(Serial1.available())
jieshou[i]=Serial1.read();
delay(10);
}
if(Serial1.available())
inByte=Serial.read();
delay(10);
if(inByte==0xff)
flag=1;
}
}
if(flag==1)
{
int high=jieshou[3];
int low=jieshou[4];
int x=(high<<8)|low;//将传感器发送的十六进制数据转化为十进制
PWM=map(x,0,1023,0,255);
analogWrite(motor,PWM);
Serial.print(PWM);
for(int i=0;i<5;i++)
{
// Serial.write(jieshou[i]);
jieshou[i]=0x00;
}
flag=0;
}
}
但是接收的数据在串口助手上只有前几个是正确的,后面的就不知道是什么了,如下:
0
140
138
135
131
128
124
121
118
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-3254
-12
-62
-3254
-3254
-3254
-3254
-3254
请问是什么原因呢? |
|