当前位置:首页 » 编程软件 » 避障车编程

避障车编程

发布时间: 2022-05-23 07:42:31

❶ 求arino避障小车程序,急!(高额悬赏)

//舵机和超声波调试代码
#include <Servo.h>
#include <Metro.h>
Metro measureDistance = Metro(50);
Metro sweepServo = Metro(20);

unsigned long actualDistance = 0;

Servo myservo; //创建舵机
int pos = 60;
int sweepFlag = 1;

int URPWM = 3; //PWM输出0-25000us,每50us代表1cm
int URTRIG= 10; // PWM trigger pin PWM串口为10
uint8_t EnPwmCmd[4]={0x44,0x02,0xbb,0x01}; // distance measure command 距离测量命令

void setup(){ // Serial initialization 串行初始化
myservo.attach(9); //舵机串口为9
Serial.begin(9600); // Sets the baud rate to 9600
SensorSetup();
}

void loop(){
if(measureDistance.check() == 1){
actualDistance = MeasureDistance();
// Serial.println(actualDistance);
// delay(100);
}

if(sweepServo.check() == 1){
servoSweep();
}

}

void SensorSetup(){
pinMode(URTRIG,OUTPUT); // A low pull on pin COMP/TRIG
digitalWrite(URTRIG,HIGH); // Set to HIGH
pinMode(URPWM, INPUT); // Sending Enable PWM mode command 发送使能控制模式命令
for(int i=0;i<4;i++){
Serial.write(EnPwmCmd[i]);
}
}

int MeasureDistance(){ // a low pull on pin COMP/TRIG triggering a sensor reading 触发传感器读数
digitalWrite(URTRIG, LOW);
digitalWrite(URTRIG, HIGH); // reading Pin PWM will output pulses 读引脚脉宽调制将输出脉冲
unsigned long distance=pulseIn(URPWM,LOW);
if(distance==50000){ // the reading is invalid.阅读无效
Serial.print("Invalid");
}else{
distance=distance/50; // every 50us low level stands for 1cm
}
return distance;
}

void servoSweep(){
if(sweepFlag ){
if(pos>=60 && pos<=120){
pos=pos+1; // in steps of 1 degree 1度角度的转动
myservo.write(pos); // tell servo to go to position in variable 'pos' 告诉舵机转动的角度
}
if(pos>119) sweepFlag = false; // assign the variable again 重新分配变量
}else {
if(pos>=60 && pos<=120){
pos=pos-1;
myservo.write(pos);
}
if(pos<61) sweepFlag = true;
}
}

////////////////////////////////////////////////////////////

需要加载一个Metro.h的库,这只是调试机器,余下的完全看你的发挥了,加上电机

❷ 避障小车原理

避障小车原理:

一、运动机理:

控制前面两个轮子的转动方向就可以控制整个机器人行进的方向:

1、左右两个前轮都向前转,则机器人向“正前方”直线前进;

2、左右两个前轮都向后转,则机器人向“正后方”直线倒退;

3、左前轮向后转,右前轮向前转,则机器人将以后轮为轴心逆时针转动,即实现向“右后方”转弯倒退;

4、左前轮向前转,右前轮向后转,则机器人将以后轮为轴心顺时针转动,即实现向“左后方”转弯倒退。

二、控制原理

在机器人的头部用钢丝做两根触须,一左一右各连接到一个碰撞开关,分别控制两个前轮的旋转方向。

特别注意,左右触须与对应控制的电机是交叉过来的,即:左边的触须连接右边的碰撞开关,控制右边的电机;右边的触须连接左边的碰撞开关,控制左边的电机。

(1)无障碍物

当前方都没有障碍物,左右两个轮子都向前正转,则机器人向“前方”直线前进。

(2)左前方有障碍物

当左前方有障碍物,在左边触须碰到障碍物时,控制右边的轮子反转,则机器人向“左后方”倒退并转弯,即方向转向了障碍物的右边,从而避开了左边的障碍物。

向后倒退转弯会持续一会,在完成转弯之后,左边触须不再碰到障碍物,则两个轮子都正转,机器人继续向新的没有障碍物的“前方”直线前进。

(3)右前方有障碍物

当右前方有障碍物,在右边触须碰到障碍物时,控制左边的轮子反转,则机器人向“右后方”倒退并转弯,即方向转向了障碍物的左边,从而避开了右边的障碍物。

向后倒退转弯会持续一会,在完成转弯之后,右边触须不再碰到障碍物,则两个轮子都正转,机器人继续向新的没有障碍物的“前方”直线前进。

(4)正前方有障碍物

当正前方有障碍物,左右两边的触须都会碰到障碍物,控制左右两边的轮子都反转,则机器人向“正后方”倒退,从而避开障碍物。

在直线倒退持续了一会后,左右两边的触须都不再碰到障碍物,则两个轮子都正转又变成直线前进;然后又会遇到正前方的障碍物又会直线倒退,再直线前进……如此反复变成一个死循环。

三、电路原理

机器人头部有两根钢丝作的触须,触须分别连接在两个碰撞开关上(注意两根钢丝对应的碰撞开关是交叉的,即:“左—右”钢丝,对应“右—左”碰撞开关)。

(1)没有障碍物时,触须没有被挤压,不触发碰撞开关,碰撞开关默认的通路,给电机供给一个“正方向”的电流,电机于是“顺时针方向”旋转。

(2)有障碍物时,触须被挤压,触发碰撞开关,碰撞开关断开默认通路,连接另外的一组通路,给电机供一个“反方向”的电流,电机于是“逆时针方向”旋转。

❸ 51单片机红外避障小车教程

time=th1*256+tl1;
这是用定时器t1做计数,time=th1*256+tl1;
这是根据定时器/计数器t1的计数值计算时间,th1是计数器的高8位,计数结果当然要乘256倍了,再加上低8位的值tl1。
th1=0;
tl1=0;
是计算完了,重新写0,准备下一次计数。

❹ 我要做一个基于51单片机的智能避障小车,而且要显示行走距离,要怎么做要用到什么器件什么原理

可以通过轮轴转圈数来计数(可以通过感应端口扫描实现),然后乘以轮胎的周长就是行走路程。

至于避障可以通过红外实现。

❺ 循迹避障小车C语言编程

利用红外传感器接收障碍物信号。。用2路PWM对俩电机进行调速。。实现转弯和前进。 不知道障碍物是什么样的。。所以传感器你最好找个好位置装好。这个直接影响整体效果。。

❻ STC89C52单片机避障小车程序编写

void	Avoid()
{
while(S<400)//小于避障距离就停车同时报警
{
beep=0;//使能蜂鸣器
stop();//停车
}
beep=1;//一直到移除障碍,则关闭蜂鸣器报警回到主程序。
}

❼ 制作循迹避障小车都需要什么

需要摄像头,和距离传感器,即时通信和信息处理中心,运动信号发射线路系统,和执行运动设备,按照一定的编程即可。

❽ 循迹避障小车编程时,cc2530的程序和51单片机程序在编写时有什么不同,可以把51的程序直接放到cc2530上吗

CC2530 和 51单片机 一样 端口操作多了端口功能寄存器和输入输出方向寄存器,多了个无线特殊寄存器。

❾ 写一个避障小车的程序

很简单啊,传感器当做I/O输入,电机当做I/O输出,首先需要进行转定义,将地址映射为变量。
#define SENSOR_LEFT 0x????
#define SENSOR_RIGHT 0x????
#define MOTOR_LEFT 0x????
#define MOTOR_RIGHT 0x????

int Func()
{
while (1)
{
if ((1 ==SENSOR_LEFT) && (1 ==SENSOR_RIGHT))
{
MOTOR_LEFT = 0;
MOTOR_RIGHT = 0;
}
else if (1 ==SENSOR_LEFT)
{
MOTOR_LEFT = 1;
MOTOR_RIGHT = 0;
}
else if (1 ==SENSOR_RIGHT)
{
MOTOR_LEFT = 0;
MOTOR_RIGHT = 1;
}
else
{
MOTOR_LEFT = 1;
MOTOR_RIGHT = 1;
}
}
}

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:968
python中的init方法 发布:2025-10-20 08:17:33 浏览:676
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:828
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:737
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1076
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:308
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:188
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:829