调试时不用接电机,H桥驱动有指示灯就可以看到4个端口的状态。
你的else这段不知道怎么回事,是把所有不是123的变为右转。。。
程序修改了一些,刚才试试可以编译通过。在串口调试软件可以看到PC键盘发送1/2/3/4给arduino,能收到arduino的反馈。因为串口有缓冲区,程序自动发送连续的1时会造成arduino 持续响应这个1,而等很久并槐码才相应改变后的按键。这点需要仔明竖细调试发送端程序。
这个程序不推荐Ctrl+Shift+M ,用 STC-ISP 6.76 或更高版本有自动发送字符功能,更容易调试串口。PC键盘串口调试好后再换成蓝牙串口板。
#define p11 9
#define p12 10
#define p21 11
#define p22 12
void setup()
{
Serial.begin(9600)
pinMode(p11,OUTPUT)
pinMode(p12,OUTPUT)
pinMode(p21,OUTPUT)
pinMode(p22,OUTPUT)
}
void loop()
{
pinMode(p11,OUTPUT)
pinMode(p12,OUTPUT)
pinMode(p21,OUTPUT)
pinMode(p22,OUTPUT)
int a=0,b=1
while (Serial.available() >0)
{
Serial.flush() //清除串口缓存
delay(500)//等待小段时间
int inChar = Serial.read()
inChar=inChar-0x30 // 数字1的 ASCII码是 16进制0x31
if(inChar == 1) //foward
{
Serial.print("key 1 pressed") //调试目的
digitalWrite(p11,LOW)
digitalWrite(p12,HIGH)
digitalWrite(p21,LOW)
digitalWrite(p22,HIGH)
delay(1000) // 按键后作用时长
}
else if(inChar == 2) //back
{
Serial.print("key 2 pressed") //调试目的
digitalWrite(p11,HIGH)
digitalWrite(p12,LOW)
digitalWrite(p21,HIGH)
digitalWrite(p22,LOW)
delay(1000)
}
else if(inChar == 3) // turn left
{
Serial.print("key 3 pressed") //调试目的
digitalWrite(p11,HIGH)
digitalWrite(p12,LOW)
digitalWrite(p21,LOW)
digitalWrite(p22,HIGH)
delay(1000)
}
else if(inChar == 4) // turn right
{
Serial.print("key 4 pressed") //调试目的
digitalWrite(p11,LOW)
digitalWrite(p12,HIGH)
digitalWrite(p21,HIGH)
digitalWrite(p22,LOW)
delay(1000)
}
else //其他按键,停止
{
Serial.print("key other pressed") //调试目的
digitalWrite(p11,LOW)
digitalWrite(p12,LOW)
digitalWrite(p21,LOW)
digitalWrite(p22,LOW)
}
}
}
NRF24L01作为双工的通信模块,可以帮助你通过遥感将指令发送到小车。首先你要清楚遥感发出来的信号,然后再小车接收之后能够顺利的解析并做出反应。
其次就是通信模块需要保证通信顺畅,它有很多个寄饥键存器,但是常用的不多,比如工作方式、地址等等设置好了之后直接往数据寄存器赋值发送即可。
具体的使用方法可以雀肢樱参考以下文章,写得很详细,有示例代顷丛码以及原厂配套手册,相信看一下然后根据例程改改应该可以使用。
希望能够帮到你
祝你的问题早日得到解决~~
文章地址:http://blog.csdn.net/mc_hust/article/details/39473913
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)