完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我做了个循迹小车,但是速度太快,改掉PWM数值后,小车的停顿的时间就变长了,是不是要改下定时器的数值?该怎么改?而且我的循迹小车不够灵敏,程序也容易跑飞....怎么办
#include #define uchar unsigned char #define uint unsigned int unsigned char zkb1=0 ; //**左边电机的占空比**// unsigned char zkb2=0 ; //**右边电机的占空比**// unsigned char t=0; //**定时器中断计数器**// ***it RSEN1=P1^0; // 右光对管1 ***it RSEN2=P1^1; //右光对管2 ***it LSEN1=P1^2; //左光对管1 ***it LSEN2=P1^3; //左光对管2 ***it IN1=P0^0; ***it IN2=P0^1; ***it IN3=P0^2; ***it IN4=P0^3; ***it ENA=P0^4; ***it ENB=P0^5; //****************延时函数****************// void delay(int z) { while (z--); } //**********初始化定时器,中断***********// void init() { TMOD=0x01; TH0=(65536-100)/256; TL0=(65536-100)%256; EA=1; ET0=1; TR0=1; } //***********中断函数+脉宽调制***********// void timer0() interrupt 1 { if(t ENA=1; else ENA=0; if(t ENB=1; else ENB=0; t++; if(t>=100) {t=0;} } //******************直行******************// void qianjin() { zkb1=30; zkb2=30; } //***************左转函数1***************// void turn_left1() { zkb1=0; zkb2=50; } //***************左转函数2***************// void turn_left2() { zkb1=0; zkb2=60; } //***************右转函数1***************// void turn_right1() { zkb1=50; zkb2=0; } //***************右转函数2***************// void turn_right2() { zkb1=60; zkb2=0; } //***************循迹函数*****************// void xunji() { uchar flag; if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) { flag=0; }//*******直行*******// else if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) { flag=1;} //***左偏1,右转1***// else if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=2;} //***左偏2,右转2***// else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1)) { flag=3; }//***右偏1,左转1***// else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)) { flag=4; }//***右偏2,左转2***// switch (flag) { case 0:qianjin(); break; case 1:turn_right1(); break; case 2:turn_right2(); break; case 3:turn_left1(); break; case 4:turn_left2(); break; default: break; } } //****************主程序****************// void main() { init(); zkb1=30; zkb2=30; while(1) { IN1=1; //******给电机加电启动******// IN2=0; IN3=1; IN4=0; ENA=1; ENB=1; while(1) { xunji(); //*********寻迹**********// } } } |
|
相关推荐
16个回答
|
|
提高PWM频率,降低占空比试一下
|
|
|
|
|
|
|
|
|
|
|
|
我试了一下你的程序,我怎么总是只有一边轮子跑,求解!!!
|
|
|
|
这个可能不是程序的问题吧,可能是硬件或是电机的问题,我也遇到过这种情况 |
|
|
|
我们的小车也有同样的问题,不知道现在该怎么解决了 ?哪位大神帮帮忙 !
|
|
|
|
检查下硬件 看它输出是否是对的 你的定时时间怎么取得 可以直接对IN1,2,3,4输出pwm吧,一样是两路啊
|
|
|
|
最近也在弄小车 试下用电平驱动 循迹是一边正转一边反转
|
|
|
|
最近也在搞小车 在程序出问题了
|
|
|
|
void xunji()
{ uchar flag; if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) { flag=0; }//*******直行*******// else if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) { flag=1;} //***左偏1,右转1***// else if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=2;} //***左偏2,右转2***// else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1)) { flag=3; }//***右偏1,左转1***// else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)) { flag=4; }//***右偏2,左转2***// switch (flag) { case 0:qianjin(); break; case 1:turn_right1(); break; case 2:turn_right2(); break; case 3:turn_left1(); break; case 4:turn_left2(); break; default: break; } } 我也刚刚独立做了一辆 目前用涂黑了的纸测试轮子转动正常,转弯是差动转弯还没加pwm 我编写循迹时用的是总线控制 比如p1=0x01的话 车就往左转 如果P1=0x08 车就往右转 我想知道一下我这样写和你这样的区别 c语言是个二把手 不专业 麻烦楼主赐教~ 谢谢 |
|
|
|
定时器没有重新赋值哦
|
|
|
|
有红外的吗?我正在做一个红外的,需要程序
|
|
|
|
扎心了,看不懂,还在自学中
|
|
|
|
寻迹小车主程序void main()
{ init(); zkb1=50; zkb2=50; while(1) { //******给电机加电启动****** IN1=1; IN2=0; IN3=1; IN4=0; ENA=1; ENB=1; while(1) { xunji(); //*********寻迹****** 为什么有两个while 循环 这不就一直执行循环 寻迹程序啊,上电不是加了while 也只执行一次啊,本人刚学,谢谢大神 |
|
|
|
支持,下载学习支持,下载学习支持,下载学习
|
|
|
|
支持,下载学习支持,下载学习支持,下载学习
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11764 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 01:58 , Processed in 0.862682 second(s), Total 100, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号