完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
硬件菜单
硬件组装大概按照上面两张图片组装就行。
程序代码 #include "headfile.h" /******************* * 用于初始化PWM的 *******************/ void All_Init(void) { pwm_init(PWMA_CH1P_P60, 10000, 0); pwm_init(PWMA_CH2P_P62, 10000, 0); pwm_init(PWMA_CH3P_P64, 10000, 0); pwm_init(PWMA_CH4P_P66, 10000, 0); } /******************* * 车子左转 *******************/ void turn_left(int duty) { pwm_duty(PWMA_CH1P_P60, duty); pwm_duty(PWMA_CH2P_P62, 0); pwm_duty(PWMA_CH3P_P64, 0); pwm_duty(PWMA_CH4P_P66, duty); } /******************* * 车子右转 *******************/ void turn_right(int duty) { pwm_duty(PWMA_CH1P_P60, 0); pwm_duty(PWMA_CH2P_P62, duty); pwm_duty(PWMA_CH3P_P64, duty); pwm_duty(PWMA_CH4P_P66, 0); } /******************* * 车子直行 *******************/ void go_straight(void) { pwm_duty(PWMA_CH1P_P60, 7000); pwm_duty(PWMA_CH2P_P62, 0); pwm_duty(PWMA_CH3P_P64, 7000); pwm_duty(PWMA_CH4P_P66, 0); } /******************* * 车子停止 *******************/ void go_stop(void) { pwm_duty(PWMA_CH1P_P60, 0); pwm_duty(PWMA_CH2P_P62, 0); pwm_duty(PWMA_CH3P_P64, 0); pwm_duty(PWMA_CH4P_P66, 0); } /***************************************** * OUT1 P27 * OUT2 P26 * OUT3 P25 * OUT4 P24 * 如图循迹小车2所示,从左到右分别为OUT1、2、3、4 * 检测到黑线或悬空LED灭,输出高电平 * 对单片机的IO口状态进行判断,这样可以得到是哪个 * 传感器检测到了黑线,然后再 * 做出相对应的行为。 *****************************************/ void scan(void) { if ((P26 == 0)&&(P25 == 0)&&(P27 == 0)&&(P24 == 0)) { // 未检测到黑线 go_straight(); } else if ((P26 == 1)&&(P25 == 1)&&(P27 == 1)&&(P24 == 1)) { // 悬空 go_stop(); } else if ((P26 == 0)&&(P25 == 1)&&(P27 == 0)&&(P24 == 0)) { // 车头右偏(相对于前进方向) 向左转(幅度较小) turn_left(7000); } else if ((P26 == 1)&&(P25 == 0)&&(P27 == 0)&&(P24 == 0)) { // 车头左偏 向右转(幅度较小) turn_right(7000); } else if ((P26 == 0)&&(P25 == 0)&&(P27 == 1)&&(P24 == 0)) { // 向左转(幅度较大) turn_left(9500); } else if ((P26 == 0)&&(P25 == 0)&&(P27 == 0)&&(P24 == 1)) { // 向右转(幅度较大) turn_right(9500); } } void main() { DisableGlobalIRQ(); //关闭总中断 board_init(); //初始化寄存器 All_Init(); //总中断最后开启 EnableGlobalIRQ(); //开启总中断 while(1) { scan(); } } 程序代码大概就像上面那样。其中有些参数,比如说小车行进速度和转弯占空比该给多少。这个东西需要自己测试然后填写,也就是自己慢慢调参测试,找到合适的数值就行。 |
|
|
|
只有小组成员才能发言,加入小组>>
2472 浏览 0 评论
1040浏览 2评论
656浏览 1评论
419浏览 0评论
110浏览 0评论
245浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-29 03:18 , Processed in 1.306206 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号