資料介紹
描述
大家好!這是我的下一個(gè)項(xiàng)目,智能手機(jī)控制的 Arduino 4WD 機(jī)器人汽車(chē)或藍(lán)牙 Arduino 機(jī)器人。它可以前后左右移動(dòng),改變速度,打開(kāi)/關(guān)閉前后燈,也可以喇叭。
這是一個(gè)非常簡(jiǎn)單的設(shè)計(jì)機(jī)器人,您可以輕松構(gòu)建它。
第 1 步:要求
所需零件:
- Arduino Uno R3 板
- 帶直流電機(jī)和車(chē)輪 x4 的底盤(pán) 4WD
- 電機(jī)驅(qū)動(dòng)器 L298N x2
- 藍(lán)牙模塊HC-06
- 鋰離子電池 18650 x2
- 蜂鳴器
第二步:組裝四驅(qū)機(jī)器人智能汽車(chē)底盤(pán)
="655" height="375" src="https://www.youtube.com/embed/oCacTJyINAM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen>
第 3 步:接線圖

第 4 步:上傳機(jī)器人代碼
#define light_FR 14 //LED Front Right pin A0 for Arduino Uno#define light_FL 15 //LED Front Left pin A1 for Arduino Uno #define light_BR 16 //LED Back Right pin A2 for Arduino Uno #define light_BL 17 //LED Back Left pin A3 for Arduino Uno #define horn_Buzz 18 //Horn Buzzer pin A4 for Arduino Uno#define ENA_m1 5 // Enable/speed motor Front Right #define ENB_m1 6 // Enable/speed motor Back Right #define ENA_m2 10 // Enable/speed motor Front Left #define ENB_m2 11 // Enable/speed motor Back Left#define IN_11 2 // L298N #1 in 1 motor Front Right #define IN_12 3 // L298N #1 in 2 motor Front Right #define IN_13 4 // L298N #1 in 3 motor Back Right #define IN_14 7 // L298N #1 in 4 motor Back Right#define IN_21 8 // L298N #2 in 1 motor Front Left #define IN_22 9 // L298N #2 in 2 motor Front Left #define IN_23 12 // L298N #2 in 3 motor Back Left #define IN_24 13 // L298N #2 in 4 motor Back Leftint command; //Int to store app command state. int speedCar = 100; // 50 - 255. int speed_Coeff = 4; boolean lightFront = false; boolean lightBack = false; boolean horn = false;void setup() { pinMode(light_FR, OUTPUT); pinMode(light_FL, OUTPUT); pinMode(light_BR, OUTPUT); pinMode(light_BL, OUTPUT); pinMode(horn_Buzz, OUTPUT); pinMode(ENA_m1, OUTPUT); pinMode(ENB_m1, OUTPUT); pinMode(ENA_m2, OUTPUT); pinMode(ENB_m2, OUTPUT); pinMode(IN_11, OUTPUT); pinMode(IN_12, OUTPUT); pinMode(IN_13, OUTPUT); pinMode(IN_14, OUTPUT); pinMode(IN_21, OUTPUT); pinMode(IN_22, OUTPUT); pinMode(IN_23, OUTPUT); pinMode(IN_24, OUTPUT);Serial.begin(9600); } void goAhead(){ digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar);}void goBack(){ digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar);}void goRight(){ digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar);}void goLeft(){digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar);}void goAheadRight(){ digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar/speed_Coeff);digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar/speed_Coeff);digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar); }void goAheadLeft(){ digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar/speed_Coeff);digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar/speed_Coeff); }void goBackRight(){ digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar/speed_Coeff);digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar/speed_Coeff);digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar);}void goBackLeft(){ digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar/speed_Coeff);digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar/speed_Coeff);}void stopRobot(){ digitalWrite(IN_11, LOW); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);digitalWrite(IN_13, LOW); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);digitalWrite(IN_21, LOW); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);digitalWrite(IN_23, LOW); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar); } void loop(){ if (Serial.available() > 0) { command = Serial.read(); stopRobot(); //Initialize with motors stopped.if (lightFront) {digitalWrite(light_FR, HIGH); digitalWrite(light_FL, HIGH);} if (!lightFront) {digitalWrite(light_FR, LOW); digitalWrite(light_FL, LOW);} if (lightBack) {digitalWrite(light_BR, HIGH); digitalWrite(light_BL, HIGH);} if (!lightBack) {digitalWrite(light_BR, LOW); digitalWrite(light_BL, LOW);} if (horn) {digitalWrite(horn_Buzz, HIGH);} if (!horn) {digitalWrite(horn_Buzz, LOW);}switch (command) { case 'F':goAhead();break; case 'B':goBack();break; case 'L':goLeft();break; case 'R':goRight();break; case 'I':goAheadRight();break; case 'G':goAheadLeft();break; case 'J':goBackRight();break; case 'H':goBackLeft();break; case '0':speedCar = 100;break; case '1':speedCar = 115;break; case '2':speedCar = 130;break; case '3':speedCar = 145;break; case '4':speedCar = 160;break; case '5':speedCar = 175;break; case '6':speedCar = 190;break; case '7':speedCar = 205;break; case '8':speedCar = 220;break; case '9':speedCar = 235;break; case 'q':speedCar = 255;break; case 'W':lightFront = true;break; case 'w':lightFront = false;break; case 'U':lightBack = true;break; case 'u':lightBack = false;break; case 'V':horn = true;break; case 'v':horn = false;break;} } }
第 5 步:注釋
在上傳代碼之前,您必須斷開(kāi)藍(lán)牙模塊與 Arduino Uno 板(引腳 0、1)的連接。
第 6 步:下載 Android 應(yīng)用程序
第 7 步:連接藍(lán)牙模塊
要將您的智能手機(jī)連接到 Arduino 藍(lán)牙模塊 HC-06,我們必須輸入 PIN CODE 1234 或 0000。
代碼::
第 8 步:完成
一旦您正確完成所有步驟,機(jī)器人就可以開(kāi)始使用了!
謝謝你們!
- 應(yīng)用程序控制的機(jī)器人
- 使用Arduino和Android設(shè)備控制Roomba機(jī)器人
- KUKA機(jī)器人編程 1次下載
- 可以用手機(jī)應(yīng)用程序控制的中型四足機(jī)器人
- 通過(guò)WiFi使用Android設(shè)備控制機(jī)器人汽車(chē)
- 基于ESP8266的自主輔助農(nóng)業(yè)機(jī)器人 0次下載
- 基于ESP32的藍(lán)牙控制機(jī)器人 0次下載
- 基于Arduino UNO的語(yǔ)音控制機(jī)器人 6次下載
- 手指在應(yīng)用程序上機(jī)器人
- 從Android應(yīng)用程序控制16x2 LCD
- 基于DSP和PC的農(nóng)業(yè)機(jī)器人控制系統(tǒng) 18次下載
- 基于DSP的排險(xiǎn)機(jī)器人車(chē)體控制系統(tǒng) 14次下載
- 機(jī)器人PID控制概述 27次下載
- 機(jī)器人設(shè)計(jì)教程之機(jī)器人控制和決策子系統(tǒng) 25次下載
- 機(jī)器人控制程序(舵機(jī)型) 16次下載
- 如何使用PLC控制機(jī)器人 1882次閱讀
- VASS 標(biāo)準(zhǔn)機(jī)器人的附加功能 873次閱讀
- 讀取機(jī)器人程序中的變量 1068次閱讀
- 利用STM32實(shí)現(xiàn)自平衡機(jī)器人功能項(xiàng)目 1081次閱讀
- KUKA機(jī)器人CELL程序分析 3140次閱讀
- 機(jī)器人程序中斷與相應(yīng)的恢復(fù)方式 5158次閱讀
- 機(jī)器人控制系統(tǒng)分類(lèi)_機(jī)器人控制系統(tǒng)有哪些 2.6w次閱讀
- 醫(yī)用機(jī)器人的定義_醫(yī)用機(jī)器人發(fā)展 3257次閱讀
- 機(jī)器人控制器有哪些類(lèi)型_機(jī)器人控制器發(fā)展 1.2w次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8322次閱讀
- 移動(dòng)機(jī)器人控制系統(tǒng)設(shè)計(jì)與仿真 3640次閱讀
- 機(jī)器人十大流行編程語(yǔ)言的介紹及機(jī)器人編程系統(tǒng)以及操作方法 4.2w次閱讀
- 機(jī)器人控制系統(tǒng)的基本單元與機(jī)器人控制系統(tǒng)的特點(diǎn)分析 1.1w次閱讀
- 創(chuàng)建智能車(chē)機(jī)器人smartcar的步驟教程詳解 4508次閱讀
- 機(jī)器人的運(yùn)動(dòng)控制的介紹和如何將機(jī)器人的運(yùn)動(dòng)控制分成4種任務(wù) 1w次閱讀
下載排行
本周
- 1NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊(cè)
- 0.40 MB | 4次下載 | 2 積分
- 2光伏并網(wǎng)逆變器原理
- 7.31 MB | 3次下載 | 2 積分
- 3T20電烙鐵原理圖資料
- 0.27 MB | 2次下載 | 免費(fèi)
- 4PL83081 雙路恒流同步降壓轉(zhuǎn)換器技術(shù)手冊(cè)
- 3.34 MB | 1次下載 | 免費(fèi)
- 5PL88052 4.8V至60V輸入,5A,同步降壓轉(zhuǎn)換器技術(shù)手冊(cè)
- 3.36 MB | 1次下載 | 免費(fèi)
- 6LX8201微孔霧化驅(qū)動(dòng)芯片電路圖資料
- 0.15 MB | 1次下載 | 免費(fèi)
- 7PC6200_7V直流電機(jī)驅(qū)動(dòng)器技術(shù)手冊(cè)
- 0.47 MB | 次下載 | 免費(fèi)
- 8恒溫晶體振蕩器(OCXO)FOC-2D:20.6×20.6mm在通信基站和測(cè)試設(shè)備中的應(yīng)用參數(shù)規(guī)格
- 485.75 KB | 次下載 | 免費(fèi)
本月
- 1如何看懂電子電路圖
- 12.88 MB | 329次下載 | 免費(fèi)
- 2RK3588數(shù)據(jù)手冊(cè)
- 2.24 MB | 14次下載 | 免費(fèi)
- 3PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
- 1.63 MB | 12次下載 | 免費(fèi)
- 4STM32F10x參考手冊(cè)資料
- 13.64 MB | 12次下載 | 1 積分
- 5OAH0428 V1.0英文規(guī)格書(shū)
- 5.86 MB | 8次下載 | 免費(fèi)
- 6NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊(cè)
- 0.40 MB | 4次下載 | 2 積分
- 7PID控制算法學(xué)習(xí)筆記資料
- 3.43 MB | 3次下載 | 2 積分
- 8光伏并網(wǎng)逆變器原理
- 7.31 MB | 3次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935132次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191415次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183349次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81599次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65990次下載 | 10 積分
評(píng)論