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

小车避障编程

发布时间: 2023-05-23 03:16:10

A. 求避障小车的程序

#include<reg52.h> //或核添加函数库敏团携
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit s=P3^5; //定义红外避障检测端口
sbit m1=P3^4; //定义电机M1电平输出端口
sbit m2=P3^6; //定义电桥伏机M2电平输出端口
void delay_ms(uint z); //声明延时函数

main() //主函数
{
uint i=0; //初始值设定
m1=1;
m2=1;
while(1) //无限循环
{
if(s==0) //S=0表示前方有障碍物 进行转向
{
for(i=0;i<5;i++)
{
m1=0;
m2=1;
delay_ms(15);//状态保持15ms
m1=1;
m2=1;
delay_ms(5);//状态保持5ms
}
}
if(s==1) //S=1表示前方无障碍物 直线行驶
{
m1=1;
m2=1;
delay_ms(10);//状态保持10ms
}
}
}

void delay_ms(uint z) //延时函数 循环嵌套原理
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

B. 求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的库,这只是调试机器,余下的完全看你的发挥了,加上电机

C. 基于模糊控制的智能小车避障C语言程序

这个模糊控制的需求真是很模糊啊。呵呵。。。
模糊控制需要有输入,而不是闷着头随便乱想。输出倒是很简单,一个三态的值。输入都输出写啥啊?

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

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

热点内容
安卓泰拉瑞亚去哪里买 发布:2025-07-18 20:01:05 浏览:694
flash编译器 发布:2025-07-18 19:49:38 浏览:487
memcached源码分析 发布:2025-07-18 19:22:42 浏览:866
android展示图片 发布:2025-07-18 19:21:24 浏览:594
一台服务器5个IP怎么分配 发布:2025-07-18 19:12:34 浏览:862
贵阳分布式存储行情 发布:2025-07-18 19:12:31 浏览:361
车场服务器和工控机是如何连接的 发布:2025-07-18 19:10:19 浏览:938
计算机编程学什么好 发布:2025-07-18 19:06:49 浏览:410
网吧用的服务器是什么服务器 发布:2025-07-18 18:40:15 浏览:938
ftp命令使用 发布:2025-07-18 18:13:05 浏览:47