當前位置:首頁 » 編程軟體 » 小車避障編程

小車避障編程

發布時間: 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 16:13:38 瀏覽:503
如何使用wifi熱點配置網路 發布:2025-07-18 16:06:25 瀏覽:968
android軟鍵盤數字 發布:2025-07-18 16:03:18 瀏覽:610
三菱plc編程軟體官網 發布:2025-07-18 15:59:59 瀏覽:436
gse源碼 發布:2025-07-18 15:58:15 瀏覽:626
編譯鏈c語言執行速度 發布:2025-07-18 15:52:51 瀏覽:554
在線編程課程 發布:2025-07-18 15:46:56 瀏覽:172
生兔子演算法循環 發布:2025-07-18 15:44:32 瀏覽:46
背包規劃演算法 發布:2025-07-18 15:44:27 瀏覽:109
微信安卓手機哪裡設置鈴聲 發布:2025-07-18 15:36:54 瀏覽:780