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

避障車編程

發布時間: 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