資料介紹
描述
一、簡介
使用 Arduino 的自控機器人汽車。
這輛機器人汽車使用超聲波傳感器來檢測前方的障礙物,每當它檢測到障礙物時,它的超聲波傳感器就會在左右兩個方向上移動,以計算出自由移動的最佳距離。
它的超聲波傳感器范圍高達 150 厘米。
2. 示范
3. 制作這款機器人汽車的步驟
在 Arduino IDE 中導入 Servo.h 和 NewPing.h 庫。
// 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)建對象和變量
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;
編寫 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.
}
編寫 Arduino 代碼的無效循環(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
}
制作計算右側(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
}
制作計算左側(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
}
制作停止機器人的功能
void Stop() // Stop Function for Motor Driver.
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, LOW);
}
使機器人向前移動的功能
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);
}
使機器人向后移動的功能
void moveBackward() // Move Backward Function for Motor Driver.
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, HIGH);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, HIGH);
}
使機器人向右移動的功能
void turnRight() // Turn Right Function for Motor Driver.
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, HIGH);
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
}
使機器人在左側(cè)方向移動的功能
void turnLeft() // Turn Left Function for Motor Driver.
{
digitalWrite(RightMotorForward, HIGH);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, HIGH);
}
將代碼上傳到您的 Arduino 板。
4. 按照原理圖連接所有組件。
- Arduino機器人開源
- Arduino機器人
- Arduino飛行機器人
- Arduino藍牙控制的機器人汽車
- Arduino越野機器人
- Arduino滑冰機器人
- 谷歌助理和自控機器人汽車
- 使用HC 05藍牙的Arduino機器人汽車控制
- 基于Arduino的避障機器人汽車
- Arduino障礙物避免機器人汽車
- Arduino機器人螞蟻
- ARLOK arduino機器人
- 魔方機器人(三)Arduino
- Arduino教學機器人的使用教程免費下載 37次下載
- Arduino開發(fā)機器人經(jīng)典書籍推薦Arduino開發(fā)實戰(zhàn)指南:機器人卷
- 基于智能制造的工業(yè)機器人應(yīng)用實踐 820次閱讀
- 如何使用Arduino制造一個自動平衡機器人 4429次閱讀
- 面對疫情 醫(yī)療機器人能幫上什么忙? 2126次閱讀
- dfrobotSparki機器人套裝簡介 2064次閱讀
- dfrobotDevastator履帶機器人移動平臺簡介 1515次閱讀
- 焊接機器人的現(xiàn)狀及前景分析 1.2w次閱讀
- 弧焊機器人結(jié)構(gòu)組成及性能參數(shù) 5994次閱讀
- 醫(yī)用機器人的定義_醫(yī)用機器人發(fā)展 3122次閱讀
- 醫(yī)用機器人的功能_醫(yī)用機器人分類 2227次閱讀
- 協(xié)作機器人的起源_為什么需要協(xié)作機器人 8127次閱讀
- 機器視覺的機器人取代四臺傳統(tǒng)的火焰處理機器人 3270次閱讀
- 如何區(qū)分機器人、協(xié)作機器人和移動機器人? 6828次閱讀
- 軟體機器人 前所未見的機器人 3692次閱讀
- 機器人的最佳編程語言是什么?機器人十大流行編程語言匯總 3.4w次閱讀
- 【盤點】工業(yè)機器人技術(shù)性能特點 1292次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多