Tentang proyek ini
Saya menemukan desain asli di Instructables dan membuat versinya. Yang asli adalah Track Vehicle dan yang ini 4WD. Penyesuaian ke desain asli datang dalam pengaturan IR. Desain asli mengalami umpan balik saat motor berjalan yang mengganggu penerima IR. Motor bertindak sebagai generator di mana kabel ground bertemu. Saya mengubah pin dan tugas untuk IR
Pasang dudukan mobil menggunakan petunjuk yang diberikan jika menggunakan kit penjelajah SAINSMART. Ditemukan Di Sini
Penerima inframerah :
int penerima_pin =4; //Hubungkan pin keluaran 4 pada pengontrol ke penerima IR Y
int vcc =5; //Hubungkan pin keluaran 5 pada pengontrol ke penerima IR V
int gnd =6; //Hubungkan pin keluaran 4 pada pengontrol ke penerima IR G
Modul penggerak motor L298N :
// motor A
int enA =8;
int in1 =12;
int in2 =11;
// motor B
int enB =7;
int in3 =10;
int in4 =9;
Modul penggerak motor L298N GND ke pengontrol GND
Modul penggerak motor L298N ke motor :
//Motor set sisi kanan A
Hubungkan sisi "+" (Merah) dari motor ke Out 4
Hubungkan sisi "-" (Hitam) motor ke Out 3
// Motor set B sisi kiri
Hubungkan sisi "+" (Merah) dari motor ke Out 2
Hubungkan sisi "-" (Hitam) motor ke Out 1
Hubungkan baterai ke modul drive L298N "+" (Merah) ke VCC dan "-" (Hitam) ke GND
Diagram Lengkap
Kode
- Mobil kendali jarak jauh IR
Mobil kendali jarak jauh IRC#
#include perintah char;int receiver_pin =4; //Hubungkan pin keluaran penerima IR pada pin 4int vcc =5; //VCC untuk sensor IR gnd =6; //GND untuk sensor IR berstatus =13;IRrecv irrecv(receiver_pin);hasil decode_results;// menghubungkan pin pengontrol motor ke pin digital Arduino// motor Aint enA =8;int in1 =12;int in2 =11;// motor Bint enB =7;int in3 =10;int in4 =9;void setup(){Serial.begin(9600);irrecv.enableIRIn();pinMode(statusled,OUTPUT);digitalWrite(statusled,LOW);// set semua pin kontrol motor ke output pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(vcc, OUTPUT); pinMode(gnd, OUTPUT); // Inisialisasi pin vcc high digitalWrite(vcc, HIGH);}void loop() {if (irrecv.decode(&results))) {digitalWrite(statusled,LOW);irrecv.resume();if (results.value ==0xFF18E7 ){ // ketik tombol 2 kontrol robot maju // fungsi ini akan menjalankan motor di kedua arah dengan kecepatan tetap Serial.println("Tombol 2"); // hidupkan motor A digitalWrite(in1, HIGH); digitalWrite(dalam2, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, HIGH); digitalWrite(dalam4, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100);}else if(results.value ==0xFF10EF){ // ketik tombol 4 belok kiri kontrol robot // fungsi ini akan menjalankan motor A di arah maju motor B stop Serial.println("Tombol 4"); // hidupkan motor A digitalWrite(in1, HIGH); digitalWrite(dalam2, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, LOW); digitalWrite(dalam4, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100); }else if(results.value ==0xFF30CF){ // ketik tombol 1 putar kontrol robot kiri // fungsi ini akan menjalankan motor A ke arah depan motor B ke arah belakang Serial.println("Tombol Belok Kanan"); // hidupkan motor A digitalWrite(in1, HIGH); digitalWrite(dalam2, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, LOW); digitalWrite(dalam4, TINGGI); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100); }else if(results.value ==0xFF5AA5){ // ketik tombol 6 kontrol robot belok kanan // fungsi ini akan menghentikan motor A menjalankan motor B ke arah depan Serial.println("Tombol Belok Kiri"); // hidupkan motor A digitalWrite(in1, LOW); digitalWrite(dalam2, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, HIGH); digitalWrite(dalam4, RENDAH); // atur kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100);}else if(results.value ==0xFF7A85){ // ketik tombol 3 putar kontrol robot kanan // fungsi ini akan menjalankan motor A di arah mundur motor B arah maju // hidupkan motor A digitalWrite(in1, LOW); digitalWrite(dalam2, TINGGI); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, HIGH); digitalWrite(dalam4, RENDAH); // atur kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100);} else if(results.value ==0xFF4AB5){ // ketik tombol 8 kontrol robot mundur// fungsi ini akan menjalankan motor A dan motor B dalam arah mundur // hidupkan motor A digitalWrite(in1, LOW); digitalWrite(dalam2, TINGGI); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, LOW); digitalWrite(dalam4, TINGGI); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100);}else if(results.value ==0xFF38C7){ // ketik tombol 5 stop kontrol robot // fungsi ini akan menghentikan motor A dan motor B // hidupkan motor A digitalWrite(in1, LOW); digitalWrite(dalam2, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enA, 100); // hidupkan motor B digitalWrite(in3, LOW); digitalWrite(dalam4, RENDAH); // setel kecepatan ke 200 di luar kisaran yang memungkinkan 0~255 analogWrite(enB, 100); }}}
Skema