資料介紹
描述
一、簡(jiǎn)介
使用 Arduino 的自控機(jī)器人汽車(chē)。
這輛機(jī)器人汽車(chē)使用超聲波傳感器來(lái)檢測(cè)前方的障礙物,每當(dāng)它檢測(cè)到障礙物時(shí),它的超聲波傳感器就會(huì)在左右兩個(gè)方向上移動(dòng),以計(jì)算出自由移動(dòng)的最佳距離。
它的超聲波傳感器范圍高達(dá) 150 厘米。
2. 示范
3. 制作這款機(jī)器人汽車(chē)的步驟
在 Arduino IDE 中導(dǎo)入 Servo.h 和 NewPing.h 庫(kù)。
// Library
#include // Include Servo Library
#include // Include Newping Library
初始化引腳
// L298N Control Pins
const int LeftMotorForward = 4;
const int LeftMotorBackward = 5;
const int RightMotorForward = 6;
const int RightMotorBackward = 7;
const int LEDext = 1;
const int Buzzer = 0;
#define TRIGGER_PIN A1 // Arduino pin to trigger pin on the ultrasonic sensor.
#define ECHO_PIN A2 // Arduino pin to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 250 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 250cm.
創(chuàng)建對(duì)象和變量
Servo servo_motor; // Servo's name
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
boolean goesForward = false;
int distance = 50;
編寫(xiě) Arduino 代碼的設(shè)置部分
void setup()
{
// Set L298N Control Pins as Output
pinMode(RightMotorForward, OUTPUT);
pinMode(LeftMotorForward, OUTPUT);
pinMode(LeftMotorBackward, OUTPUT);
pinMode(RightMotorBackward, OUTPUT);
pinMode(LEDext, OUTPUT); //set led as output
pinMode(Buzzer, OUTPUT); //set buzzer as output
servo_motor.attach(9); // Attachs the servo on pin 9 to servo object.
servo_motor.write(115); // Set at 115 degrees.
delay(2000); // Wait for 2s.
distance = readPing(); // Get Ping Distance.
delay(100); // Wait for 100ms.
}
編寫(xiě) Arduino 代碼的無(wú)效循環(huán)部分
void loop()
{
int distanceRight = 0; //Initialize right side distance
int distanceLeft = 0; //Initialize left side distance
delay(50);
if (distance <= 30) //If distance of obstacle less than 30 cm from robot
{
Stop(); //call stop function to stop the robot
digitalWrite(LEDext, HIGH); //Turn led ON
digitalWrite(Buzzer, HIGH); //Turn Buzzer ON
delay(300); //wait for 300ms
moveBackward(); //call moveBackward function to move robot in backward direction
delay(400); //wait for 400ms
Stop(); //call stop function to stop the robot
delay(300); //wait for 300ms
distanceRight = lookRight(); //call lookRight function to save distance in distanceRight variable
delay(300); //wait for 300ms
distanceLeft = lookLeft(); //call lookLeft function to save distance in distanceLeft variable
delay(300); //wait for 300ms
if (distanceRight >= distanceLeft) //If distance of right greater or equall to distance of left
{
turnRight(); //call function to turn right robot
delay(300); //wait for 300ms
Stop(); //call stop function to stop robot
}
else //else
{
turnLeft(); //call function to turn left robot
delay(300); //wait for 300ms
Stop(); //call stop function to stop robot
}
}
else //else
{
moveForward(); //call moveForward function to move robot in forward direction
}
distance = readPing(); //call readPing function to calculate Distance
}
制作計(jì)算右側(cè)距離的函數(shù)
int lookRight() // lookRight Function for Servo Motor
{
servo_motor.write(0); //make servo position at 0 degree
delay(500); //wait for 500ms
int distance = readPing(); //read distance
delay(100); //wait for 100ms
servo_motor.write(90); //make servo position 90 degree
return distance; //return distance whenever lookRight function is called
}
制作計(jì)算左側(cè)距離的函數(shù)
int lookLeft() // lookLeft Function for Servo Motor
{
servo_motor.write(180); //make servo position at 0 degree
delay(500); //wait for 500ms
int distance = readPing(); //read distance
delay(100); //wait for 100ms
servo_motor.write(90); //make servo position 90 degree
return distance; //return distance whenever lookLeft function is called
}
使功能與超聲波傳感器保持距離
int readPing() // readPing Function for Ultrasonic Sensor.
{
delay(100); // Wait 100ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
int cm = sonar.ping_cm(); //Send ping, get ping distance in centimeters (cm).
if (cm==0)
{
cm=250;
}
return cm; //return distance whenever readPing function is called
}
制作停止機(jī)器人的功能
void Stop() // Stop Function for Motor Driver.
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, LOW);
}
使機(jī)器人向前移動(dòng)的功能
void moveForward() // Move Forward Function for Motor Driver.
{
digitalWrite(RightMotorForward, HIGH);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(LEDext, LOW);
digitalWrite(Buzzer, LOW);
}
使機(jī)器人向后移動(dòng)的功能
void moveBackward() // Move Backward Function for Motor Driver.
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, HIGH);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, HIGH);
}
使機(jī)器人向右移動(dòng)的功能
void turnRight() // Turn Right Function for Motor Driver.
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, HIGH);
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
}
使機(jī)器人在左側(cè)方向移動(dòng)的功能
void turnLeft() // Turn Left Function for Motor Driver.
{
digitalWrite(RightMotorForward, HIGH);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, HIGH);
}
將代碼上傳到您的 Arduino 板。
4. 按照原理圖連接所有組件。
- Arduino機(jī)器人開(kāi)源
- Arduino機(jī)器人
- Arduino飛行機(jī)器人
- Arduino藍(lán)牙控制的機(jī)器人汽車(chē)
- Arduino越野機(jī)器人
- Arduino滑冰機(jī)器人
- 谷歌助理和自控機(jī)器人汽車(chē)
- 使用HC 05藍(lán)牙的Arduino機(jī)器人汽車(chē)控制
- 基于Arduino的避障機(jī)器人汽車(chē)
- Arduino障礙物避免機(jī)器人汽車(chē)
- Arduino機(jī)器人螞蟻
- ARLOK arduino機(jī)器人
- 魔方機(jī)器人(三)Arduino
- Arduino教學(xué)機(jī)器人的使用教程免費(fèi)下載 38次下載
- Arduino開(kāi)發(fā)機(jī)器人經(jīng)典書(shū)籍推薦Arduino開(kāi)發(fā)實(shí)戰(zhàn)指南:機(jī)器人卷
- 基于智能制造的工業(yè)機(jī)器人應(yīng)用實(shí)踐 1484次閱讀
- 如何使用Arduino制造一個(gè)自動(dòng)平衡機(jī)器人 4833次閱讀
- 面對(duì)疫情 醫(yī)療機(jī)器人能幫上什么忙? 2236次閱讀
- dfrobotSparki機(jī)器人套裝簡(jiǎn)介 2207次閱讀
- dfrobotDevastator履帶機(jī)器人移動(dòng)平臺(tái)簡(jiǎn)介 1657次閱讀
- 焊接機(jī)器人的現(xiàn)狀及前景分析 1.2w次閱讀
- 工業(yè)機(jī)器人編程入門(mén)_工業(yè)機(jī)器人的編程要求 9787次閱讀
- 弧焊機(jī)器人結(jié)構(gòu)組成及性能參數(shù) 6214次閱讀
- 醫(yī)用機(jī)器人的定義_醫(yī)用機(jī)器人發(fā)展 3257次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8322次閱讀
- 機(jī)器視覺(jué)的機(jī)器人取代四臺(tái)傳統(tǒng)的火焰處理機(jī)器人 3370次閱讀
- 如何區(qū)分機(jī)器人、協(xié)作機(jī)器人和移動(dòng)機(jī)器人? 7029次閱讀
- 軟體機(jī)器人 前所未見(jiàn)的機(jī)器人 3770次閱讀
- 機(jī)器人的最佳編程語(yǔ)言是什么?機(jī)器人十大流行編程語(yǔ)言匯總 3.5w次閱讀
- 【盤(pán)點(diǎn)】工業(yè)機(jī)器人技術(shù)性能特點(diǎn) 1328次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多