Proses manufaktur
![]() |
| × | 2 | |||
![]() |
| × | 2 | |||
| × | 1 | ||||
![]() |
| × | 2 | |||
| × | 1 | ||||
![]() |
| × | 3 | |||
![]() |
| × | 2 | |||
![]() |
| × | 2 | |||
| × | 2 | ||||
| × | 1 | ||||
![]() |
| × | 1 |
![]() |
|
![]() |
|
Cerita
Halo semuanya! Ini adalah project saya selanjutnya - Arduino 4WD RC Car with Joystick Controller atau Betapa mudahnya mengontrol Arduino 4WD Smart Car dengan Joystick analog.
Mobil yang dikendalikan joystick RC ini menggunakan NRF24l01 sebagai pemancar dan penerima. Ini memiliki jangkauan hingga 1 kilometer di ruang terbuka. Juga sangat sederhana dan mudah dibuat.
1. Pengontrol Joystick
Komponen untuk Joystick:
Pelindung joystick berada di atas Arduino Anda dan mengubahnya menjadi pengontrol sederhana. 7 tombol tekan sesaat (4 tombol besar, 2 tombol kecil, dan tombol pilih joystick) dan joystick ibu jari dua sumbu memberikan fungsionalitas Arduino Anda setingkat dengan pengontrol Nintendo lama. Unit ini juga menawarkan antarmuka LCD Nokia 5110 dan nRF24L01.
Fitur:
Sebenarnya, ini diberi label sebagai BTE16-49 - modul komunikasi nirkabel nRF24L01+RFX2401C +PA+LNA dengan pelindung antena 2.4GHz 20dbm 1000m.
Karakteristik yang ditentukan oleh penjual:
2. Pengontrol Joystick
Joystick Shield memiliki 4 tombol besar + 2 tombol kecil + tombol pilih joystick dan joystick ibu jari dua sumbu (sumbu X dari 0 hingga 1023, sumbu Y dari 0 hingga 1023) Pelindung berada di atas Arduino Anda dan mengubahnya menjadi pengontrol sederhana. Dalam sketsa saya Button Up adalah untuk Buzzer (klakson), Tombol Kanan - lampu depan (LED + resistor 200 Ohm), Tombol Kiri - lampu belakang (LED + resistor 200 Ohm). Tombol lain tidak digunakan.
Pengujian Joystick:
Status idle:X=499, Y=502, Atas=1, Kanan=1, Bawah=1, Kiri=1
3. Mobil RC Arduino 4WD
Buat sambungan seperti pada gambar wiring diagram di atas.
Catatan:sebelum mengupload kode Anda harus melepaskan kabel jumper dari board Arduino Uno (pin 0, 1).
Bahwa setelah Anda melakukan semua langkah dengan benar Mobil siap digunakan!
Setelah menyalakan pengontrol Arduino Car dan Joystick Anda dapat menggunakan Joystick untuk mengontrol mobil dengan menggerakkan Joystick ke depan dan ke belakang mobil akan bergerak ke arah Maju atau Mundur, dan menggerakkan Joystick ke kiri dan ke kanan akan membuat mobil berbelok ke kiri dan kanan.
Tetap disini!
/* Kode penerima modul JoyStick - KONEKSI:Modul nRF24L01 Lihat:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE ke Arduino pin 6 4 - CSN ke Arduino pin 8 5 - SCK ke Arduino pin 13 6 - MOSI ke Arduino pin 11 7 - MISO ke Arduino pin 12 8 - TIDAK DIGUNAKAN *///-----( Impor perpustakaan yang diperlukan )-----#include#include #include /*-----( Deklarasikan Konstanta dan Nomor Pin )-----* /#define CE_PIN 6#define CSN_PIN 8// CATATAN:"LL" di akhir konstanta adalah "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Tentukan pipa transmisi#define light_Front 18 //LED Front Right pin A4 untuk Arduino Uno#define light_Back 19 //LED Back Right pin A5 untuk Arduino Uno#define horn_Buzz 7 #define ENA_m1 3 // Aktifkan/kecepatan motor Front Right #define ENB_m1 5 // Aktifkan/kecepatan motor Belakang Kanan#define ENA_m2 9 // Aktifkan/kecepatan motor Kiri Depan#define ENB_m2 10 // Aktifkan/kecepatan motor Belakang Kiri#define IN_11 0 // L298N #1 dalam 1 motor Kanan Depan #define IN_12 1 // L298N #1 in 2 motor Kanan Depan#define IN_13 2 // L298N #1 in 3 motor Belakang Kanan#define IN_14 4 // L298N #1 in 4 motor Kanan Belakang#define IN_21 14 // L298N # Motor 2 in 1 Kiri Depan#define IN_22 15 // L298N #2 in 2 motor Kiri Depan#define IN_23 16 // L298N #2 in 3 motor Kiri Belakang#define IN_24 17 // L298N #2 in 4 motor Kiri Belakang/* -----( Deklarasikan objek )-----*/RF24 radio(CE_PIN, CSN_PIN); // Buat Radio/*-----( Deklarasikan Variabel )-----*/int joystick[6]; // 6 elemen larik menahan pembacaan Joysticksint speedRight =0;int speedLeft =0;int xAxis, yAxis;// empat variabel tombol dari joystickint buttonUp;int buttonRight;int buttonDown;int buttonLeft;void setup(){ pinMode(light_Front, KELUARAN); pinMode(light_Back, 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); Serial.println("Penerima Nrf24L01 Mulai"); */ radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening();}void loop(){ if ( radio.available() ) { radio.read( joystick, sizeof(joystick) ); xSumbu =joystick[0]; yAxis =joystick[1]; // empat variabel tombol dari array joystick int buttonUp =joystick[2]; int buttonKanan =joystick[3]; int buttonDown =joystick[4]; int buttonLeft =joystick[5]; //Serial.println(); // untuk debugging // Ambil payload data - Kode debug di bawah if (buttonUp ==HIGH){digitalWrite(horn_Buzz, LOW);} else {digitalWrite(horn_Buzz, HIGH);} if (buttonRight ==HIGH){digitalWrite( light_Front, LOW);} else {digitalWrite(light_Front, HIGH);} if (buttonLeft ==HIGH){digitalWrite(light_Back, LOW);} else {digitalWrite(light_Back, HIGH);}// Sumbu Y digunakan untuk meneruskan dan kontrol mundur if (yAxis <470) { // Atur Motor Kanan mundur digitalWrite(IN_11, LOW); digitalWrite(IN_12, TINGGI); digitalWrite(IN_13, TINGGI); digitalWrite(IN_14, RENDAH); // Atur Motor Kiri mundur digitalWrite(IN_21, HIGH); digitalWrite(IN_22, RENDAH); digitalWrite(IN_23, RENDAH); digitalWrite(IN_24, TINGGI); // Ubah pembacaan sumbu Y yang menurun untuk mundur dari 470 ke 0 menjadi nilai 0 hingga 255 untuk sinyal PWM untuk meningkatkan kecepatan motor Kanan =map(yAxis, 470, 0, 0, 255); speedLeft =peta(yAxis, 470, 0, 0, 255); }else if (yAxis> 550) { // Atur Motor Kanan maju digitalWrite(IN_11, HIGH); digitalWrite(IN_12, RENDAH); digitalWrite(IN_13, RENDAH); digitalWrite(IN_14, TINGGI); // Atur Motor Kiri maju digitalWrite(IN_21, LOW); digitalWrite(IN_22, TINGGI); digitalWrite(IN_23, TINGGI); digitalWrite(IN_24, RENDAH); // Ubah pembacaan sumbu Y yang meningkat untuk maju dari 550 ke 1023 menjadi nilai 0 hingga 255 untuk sinyal PWM untuk meningkatkan kecepatan motor Kanan =peta(yAxis, 550, 1023, 0, 255); speedLeft =peta(yAxis, 550, 1023, 0, 255); } // Jika joystick tetap di tengah motor tidak bergerak lagi { speedRight =0; kecepatanKiri =0; }// Sumbu X digunakan untuk kontrol kiri dan kanan if (xAxis <470) { // Mengonversi pembacaan sumbu X yang menurun dari 470 ke 0 menjadi nilai peningkatan 0 hingga 255 int xMapped =map(xAxis, 470, 0, 0 , 255); // Pindah ke kiri - kurangi kecepatan motor kiri, tambah kecepatan motor kanan Kiri =speedLeft - xMapped; speedRight =speedRight + xMapped; // Batasi rentang dari 0 hingga 255 if (speedLeft <0) { speedLeft =0; } if (speedRight> 255) { speedRight =255; } } if (xAxis> 550) { // Mengonversi pembacaan sumbu X yang meningkat dari 550 ke 1023 menjadi nilai 0 hingga 255 int xMapped =map(xAxis, 550, 1023, 0, 255); // Pindah ke kanan - kurangi kecepatan motor kanan, tambah kecepatan motor kiri kiri =speedLeft + xMapped; speedRight =speedRight - xMapped; // Batasi rentang dari 0 hingga 255 if (speedLeft> 255) { speedLeft =255; } if (speedRight <0) { speedRight =0; } } // Mencegah buzzing pada kecepatan rendah (Sesuaikan dengan motor Anda. Motor saya tidak dapat mulai bergerak jika nilai PWM di bawah nilai 70) if (speedLeft <70) { speedLeft =0; } if (speedRight <70) { speedRight =0; } analogWrite(ENA_m1, speedRight); // Mengirim sinyal PWM ke motor A analogWrite(ENB_m1, speedRight); analogWrite(ENA_m2, speedLeft); // Mengirim sinyal PWM ke motor B analogWrite(ENB_m2, speedLeft); /* Serial.print("X ="); Serial.print(xAxis); Serial.print("Y ="); Serial.print(yAxis); Serial.print("Atas ="); Serial.print(joystick[2]); Serial.print("Kanan ="); Serial.print(joystick[3]); Serial.print("Bawah ="); Serial.print(joystick[4]); Serial.print("Kiri ="); Serial.println(joystick[5]); */ } }
/* Kode transceiver modul JoyStick - KONEKSI:Modul nRF24L01 Lihat:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE ke Arduino pin 9 4 - CSN ke Arduino pin 10 5 - SCK ke Arduino pin 13 6 - MOSI ke Arduino pin 11 7 - MISO ke Arduino pin 12 8 - Default Button Pins TIDAK DIGUNAKAN:Atas - pin 2 Kanan - pin 3 Bawah - pin 4 Kiri - pin 5 - Modul Joystick Analog GND ke Arduino GND VCC ke Arduino +5V X Pot ke Arduino A0 Y Pot ke Arduino A1/*-----( Impor perpustakaan yang diperlukan )----- */#include#include "nRF24L01.h"#include "RF24.h"#define CE_PIN 9#define CSN_PIN 10#define xAxis 14 // A0 for Arduino UNO#define yAxis 15 // A1 for Arduino UNO// CATATAN:"LL" di akhir konstanta adalah "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Tentukan pipa transmisi/*-----( Deklarasikan objek )-----*/RF24 radio(CE_PIN, CSN_PIN); // Buat Radio/*-----( Deklarasikan Variabel )-----*/int joystick[6]; // 6 elemen larik menahan pembacaan Joystick dan 4 tombolint buttonUp =2;int buttonRight =3;int buttonDown =4;int buttonLeft =5;void setup() { Serial.begin(9600); radio.mulai(); radio.openWritingPipe(pipa); radio.stopListening(); //deklarasikan pinMode untuk semua tombol dan status awal pinMode(buttonUp,INPUT_PULLUP); pinMode(buttonRight,INPUT_PULLUP); pinMode(buttonDown,INPUT_PULLUP); pinMode(buttonLeft,INPUT_PULLUP); digitalWrite(buttonUp,LOW); digitalWrite(tombolKanan,RENDAH); digitalWrite(tombolBawah,RENDAH); digitalWrite(buttonLeft,LOW);}void loop() { joystick[0] =analogRead(xAxis); joystick[1] =analogRead(yAxis); joystick[2] =digitalRead(buttonUp); joystick[3] =digitalRead(buttonRight); joystick[4] =digitalRead(buttonDown); joystick[5] =digitalRead(buttonLeft); radio.write( joystick, sizeof(joystick) ); penundaan (20); Serial.print("X ="); Serial.print(analogRead(xAxis)); Serial.print("Y ="); Serial.print(analogRead(yAxis)); Serial.print("Atas ="); Serial.print(digitalRead(buttonUp)); Serial.print("Kanan ="); Serial.print(digitalRead(buttonRight)); Serial.print("Bawah ="); Serial.print(digitalRead(buttonDown)); Serial.print("Kiri ="); Serial.println(digitalRead(buttonLeft));}
Proses manufaktur
Komponen dan persediaan Arduino UNO × 1 Breadboard (generik) × 1 LED × 4 Kabel jumper (generik) × 10 Resistor 221 ohm atau 220 ohm tidak masalah × 4 Baterai 9V (generik) × 1 Aplikasi dan layanan online Arduino IDE Ed
Komponen dan persediaan Arduino UNO × 1 Breadboard (generik) × 1 Motor DC (generik) × 2 Regulator Linier (7805) × 1 Driver motor H-Bridge Ganda Instrumen Texas L293D × 1 Kabel jumper (generik) × 1 Modul Bluetooth Rendah Energi (BLE)
Komponen dan persediaan LED (generik) × 10 Arduino UNO × 1 Resistor 221 ohm × 10 Kabel jumper (generik) × 13 Potensiometer putar (generik) × 1 Aplikasi dan layanan online Arduino IDE Tentang proyek ini Ada sepuluh LED
Komponen dan persediaan Arduino Nano R3 × 1 Potensiometer putar (generik) × 7 Sakelar Tombol Tekan SparkFun 12mm × 7 port MIDI × 1 Resistor 221 ohm × 4 LED (generik) × 2 Tentang proyek ini Pembaruan 11.03.2019 Hai, Saya