arduino小车程序求教

arduino小车程序求教,第1张

看你的程序用的是H桥驱动两个直流电机正反转绝哪。

调试时不用接电机,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

Arduino Nano是Arduino USB接口的微型版本和颤,最大的不同是没有电源插座以及USB接口是Mini-B型插座。Arduino Nano是尺寸非常

小的而且可以直接插在面包板上使用。其处理器核心是ATmega168(Nano2.x)和ATmega328(Nano3.0),,同时具有14路数字

输入/输出口(其中6路可作为PWM输出),8路模拟输入,一个16MHz晶体振荡器,一个mini-B USB口,一个ICSP header和一个复位按钮。

14路数字输入输出口:工作电压为5V,每一路能咐州输出和接入最大电流为40mA。

1) 外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。

2) 脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。

3) SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。

4) LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。

5) 6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通衡棚蔽过AREF调整

输入上限。TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。

6) AREF:模拟输入信号的参考电压。

7) Reset:信号为低时复位单片机芯片。(使用方法:开关一头接RST引脚,另一头接GND引脚,按下开关后断开,实现单片机复位。

8) 串口:ATmega328内置的UART可以通过数字口0(RX接收)和1(TX发送)与外部实现串口通信;ATmega16U2可以访问数字口

实现USB上的虚拟串口。(使用方法:路由TX连接单片机RX,路由GND接单片机GND,目前703N暂时实现发送命令给单片机,对于单片机

发送的信号,路由模块无法正确接收,原因在于两个硬件系统TTL电平电压不同).


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12473303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存