Ⅰ 急求基于AT89C51单片机的循迹避障小车电路原理图和主程序(避障模块是超声波测距的),感激不尽啊。
#include<reg51.h>
#define ucharunsignedchar
#defineuintunsignedint
sbitP1_O=P1^;
sbitP1_1=P1^1;
sbitP1_2=P1^2;
sbitP1_3=P1^3;
sbitP0_2=P0^1;
sbitP0_3=P0^2;
voiddelaym1(uintz)
{
uinti;
for(i=0;i<z;i++);
}
voidmain(void)
{
while(1);
{
TRIG=1;
delay(1);
TRIG=0;
while(ECHO==0);
while(ECHO==1)a++;//a每次加1,所时间约21us
delay(30);
a=((340*a*21)/1000)/2;
display();
scan();
z=a;
a=0;
delay(200);}
voidliudianji1()
{
uinti,j;
P0=0X00;
//走直线
for(i=0;i<200;i++)
{for(i=0;i<500;i++)
{
P0_O=1;
P0_1=0;
delaym1(280);
P0_O=0;
P0_1=0;
P0_2=1;
P0_3=0;
delaym1(420);
P0_2=0;
P0_3=0;
}
P0=0X00;
delaym1(30000);
delaym1(30000);}
//右转弯
voidliudianji2()
{for(j=0;j<300;j++)
{P0_O=1;
P0_1=0;
delaym1(300);
P0_O=0;
P0_1=0;
P0_2=1;
P0_3=0;
delaym1(160);
P0_2=0;
P0_3=0;
}
P0=0X00;
delaym1(30000);
delaym1(30000);
//左转弯
voidliudianji3()
{for(i=0;i<600;i++)
{
P0_O=1;
P0_1=0;
delaym1(155);
P0_O=0;
P0_1=0;
P0_2=1;
P0_3=0;
delaym1(650);
P0_2=0;
P0_3=0;
}
P0=0X00;
delaym1(30000);
delaym1(30000);}
P0=0x00;
while(1);
}
}
voidmain(void)
{
while(1)
{
TRIG=1;
delay(1);
TRIG=0;
while(ECHO==0);
while(ECHO==1)a++;//a每次加1,所时间约21us
delay(30);
a=((340*a*21)/1000)/2;
if(a==50)
esle
{voidliudianji3();}
delay(200);
voidliudianji1();
z=a;
a=0;
delay(200);
}
Ⅱ 循迹小车不循迹代码怎么调试
使用digitalRead()函数读取数字引脚的高低电平,循迹模块检测到黑线为高电平HIGH(1),白线为低电平绝脊铅LOW(0),如果循迹模块的指示灯不灵敏或者一闪一闪的,就需要用螺丝刀调节蓝色的电位器,将循迹模块放在黑线上,把灯调亮,然后再回调一些,把灯调灭,这样循迹模块的阈值就刚好在临野旦界点了。
Sensor [0] = digitalRead(10);
Sensor [1] = digitalRead(11);
Sensor [2] = digitalRead(12);
Sensor [3] = digitalRead(13;
2.打印循迹模块的高低电平
使用Serial.print();函数打印循迹的值,在Arino的右上角有个放大镜,可以打开串口监视并好器,电脑连接Arino就可以看到串口的值了
Ⅲ 51单片机智能小车制作,求通俗易懂的讲解
系统的单片机程序:
#include"reg52.h"
#definedet_Dist2.55//
单个脉冲对应的小车行走距离,其值为车轮周长
/4#defineRD9//
小车对角轴长度。
#definePI3.1415926
#defineANG_9090
#defineANG_90_T102
#defineANG_180189/
全局变量定义区。
/sbitP10=P1^0;//
控制继电器的开闭sbitP11=P1^1;//
控制金属接近开关。
(3)基于pic的智能循迹避障小车代码扩展阅读:
控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。
执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。
对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。 传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。
Ⅳ 51单片机智能两路循迹小车程序,检测到黑线直走,检测不到黑线就左转或右转都可以,需要程序代码麻烦了
别想那么复杂。
首先,你把检测黑线的传感器就当一普通开关。因为,当照射在黑线上时,光线反射能力弱,输出低电平。照在黑线外,则输出高电平。只有高低两种电平,所以,你只需要把它当一个普通开关看待。
然后,既然是普通开关,写代码时只需要位声明以及设置gpio为双向或强拉模式,51单片机都不用设置gpio。
最后,程序里,检测到高电平然后io口电平取反就行。
Ⅳ 用单片机AT89C51设计智能小车,要有循迹、避障、计算路程的功能
这个很麻烦的 自己做不但要有单片机基础 还要花费很多精力
如果你只想应付的话就几个人凑钱 在淘宝上买到类似的小车 大概几百元
如果自己做的话 就花个100~200买个车模 然后自己做控制电路
这个得需要经验 慢慢来
Ⅵ 我是一名大一的学生,单片机学了一点,水平能够做出智能寻迹避障小车,我是看郭天祥的视频学的,现在在编
先买一个价格适中的开发板,如STM32,LPC,飞思卡尔tfu等均可,对照提供的例子程序一个个地进行学习调试。先吃透其中的原理,然后再进神搭漏行ucosii或linux的简游烂枝饥单搭建学习,最终进行系统的学习。
Ⅶ 用labview编程智能循迹小车的程序思路
胶带的宽度一定的话:
四个传感器一字排列的情况最简单:
按1234号传感器命名,照在胶带上状态位为A,否则为a.
直线正常行走时,23号持续为A,14号持续为a.
分析开始右转的逻辑:
2号变a,继续直线行走,直到4号变A,根据24号间的距离和小车在这段时间内行驶的距离计算出转动角度(这就是动态平面几何问题了,自己画图解一下,注意转弯时候前后中心点的轨迹,胶带宽度是关键,得到的角度不会也不必太精确。这里我只讨论逻辑),然后以比计算结果稍大(目的是确保能让2恢复状态A)的转动角度开始转弯,等到2和3都恢复状态A,小车变回直线行走,等到2号重新变a,小车再恢复到原先的转动角度……后面一直循环就行了
直线上如果车子前进方向倾斜,和转弯一样,下面以车子向右倾斜为例分析:
会出现3号变a的情况,继续保持直线行走,直到1号变A,计算出小车在这个过程中行进距离,结合胶带宽度,1和3号间的距离,就可以算出偏离的角度然后决定转动角度。后面具体调整和过弯道一样。
然后我来吐槽为什么要用labview,你是想着拿着笔记本进行无线操控么 - -,嵌入式的labview编程现在还不成熟好吧~
Ⅷ 避障小车原理
避障小车原理:
一、运动机理:
控制前面两个轮子的转动方向就可以控制整个机器人行进的方向:
1、左右两个前轮都向前转,则机器人向“正前方”直线前进;
2、左右两个前轮都向后转,则机器人向“正后方”直线倒退;
3、左前轮向后转,右前轮向前转,则机器人将以后轮为轴心逆时针转动,即实现向“右后方”转弯倒退;
4、左前轮向前转,右前轮向后转,则机器人将以后轮为轴心顺时针转动,即实现向“左后方”转弯倒退。
二、控制原理
在机器人的头部用钢丝做两根触须,一左一右各连接到一个碰撞开关,分别控制两个前轮的旋转方向。
特别注意,左右触须与对应控制的电机是交叉过来的,即:左边的触须连接右边的碰撞开关,控散穗制右边的电机;右边的触须连接左边的碰撞开关,控制左边的电机。
(1)无障碍物
当前方都没有障碍物,左右两个轮子都向前正转,则机器人向“前方”直线前进。
(2)左前方有障碍物
当左前方有障碍物,在左边触须碰到障碍物时,控制右边的轮子反转,则机器人向“左后方”倒退并转弯,即方向转向了障碍物的右边,从而避开了左边的障碍物。
向后倒退转弯会持续一会,在完成转弯之后,左边触须不再碰到障碍物,则两个轮子都正转,机器人继续向新的没有障碍物的“前方”直线前进。
(3)右前方有障碍物
当右前方有障碍物,在右边触须碰到障碍物时,控制左边的轮子反转,则机器人向“右后方”倒退并转弯,即方向转向了障碍物的左边,从而避开了右边的障碍物。
向后倒退转弯会持续一会,在完成转弯之后,右边触须不再碰到障碍物,则两个轮子都正转,机器人继续向新的没有障碍物的“前方”直线前进。
(4)正前方有障碍物
当正前方有障碍物,左右两边的触须都会碰到障碍物,控制左右两边的轮子都反转,则机器人向“正后方”倒退,从而避开障碍物。
在直线倒退持续了一会后,左右两边的触须都不再碰到障碍物,则两个轮子都正转又变成直线前进;然后又会遇到正前方的障碍物又会直线倒退,再直线前进……如此反复变成一个死循环。
三、电路原理
机器人头部有两根钢冲伏卜丝作的触须,触须分别连接在两个碰撞开关上(厅轮注意两根钢丝对应的碰撞开关是交叉的,即:“左—右”钢丝,对应“右—左”碰撞开关)。
(1)没有障碍物时,触须没有被挤压,不触发碰撞开关,碰撞开关默认的通路,给电机供给一个“正方向”的电流,电机于是“顺时针方向”旋转。
(2)有障碍物时,触须被挤压,触发碰撞开关,碰撞开关断开默认通路,连接另外的一组通路,给电机供一个“反方向”的电流,电机于是“逆时针方向”旋转。