Devices & Components
Arduino Nano
Arduino Uno Rev3
USB-A to Micro-USB Cable
Funduino Joystick Shield V1.A
Laser diode module
USB-A to B Cable
Male/Female Jumper Wires
nRF24 Module (Generic)
4.2v 18650 Batteries
SG90 Micro-servo motor
Jumper wires (generic)
DC Motor, 12 V
Plastic wheel for motor
Battery Holder, 18650 x 2
Hardware & Tools
Breadboard, 170 Pin
Software & Tools
Arduino IDE
Project description
Code
Transmitter code
c_cpp
Transmitter code for the project
1//Include Libraries 2#include <nRF24L01.h> 3#include <RF24.h> 4#include <SPI.h> 5//Creates objects 6#define A 2 7#define B 3 8#define C 4 9#define D 5 10#define E 6 11int X = A0; 12int Y = A1; 13 14RF24 radio(9, 10); 15const uint64_t pipe = 0xE6E6E6E6E6E6; 16char msg[20] = ""; 17 18void setup() { 19 //Define buttons of the shield as Input 20 pinMode(A, INPUT); 21 pinMode(B, INPUT); 22 pinMode(C, INPUT); 23 pinMode(D, INPUT); 24 pinMode(E, INPUT); 25 digitalWrite(A, HIGH); 26 digitalWrite(B, HIGH); 27 digitalWrite(C, HIGH); 28 digitalWrite(D, HIGH); 29 digitalWrite(E, HIGH); 30 //Starts the RF module 31 radio.begin(); 32 radio.openWritingPipe(pipe); 33} 34 35void loop() { 36 37 if (digitalRead(A) == LOW) { //Moves the turret pointer up 38 char msg[] = "up"; 39 radio.write(&msg, sizeof(msg)); 40 } 41 if (digitalRead(C) == LOW) { //Moves the turret pointer down 42 char msg[] = "down"; 43 radio.write(&msg, sizeof(msg)); 44 } 45 if (digitalRead(B) == LOW) { //Moves the turret to left 46 char msg[] = "leftturret"; 47 radio.write(&msg, sizeof(msg)); 48 } 49 if (digitalRead(D) == LOW) { //Moves the turret to right 50 char msg[] = "rightturret"; 51 radio.write(&msg, sizeof(msg)); 52 } 53 if (digitalRead(E) == LOW) { //Shots 54 char msg[] = "shot"; 55 radio.write(&msg, sizeof(msg)); 56 } 57 if (analogRead(X) < 450) { //Turn left 58 char msg[] = "left"; 59 radio.write(&msg, sizeof(msg)); 60 } 61 if (analogRead(X) > 550) { //Turn right 62 char msg[] = "right"; 63 radio.write(&msg, sizeof(msg)); 64 } 65 if (analogRead(Y) > 550) { //Go forward 66 char msg[] = "forward"; 67 radio.write(&msg, sizeof(msg)); 68 } 69 if (analogRead(Y) < 450) { //Go backward 70 char msg[] = "backward"; 71 radio.write(&msg, sizeof(msg)); 72 } 73 else { //Nothing happens 74 char msg[] = "analgobut"; 75 radio.write(&msg, sizeof(msg)); 76 } 77}
Receiver Code
c_cpp
Receiver code for the project
1//include libraries 2#include <nRF24L01.h> 3#include <RF24.h> 4#include <SPI.h> 5#include <Servo.h> 6//Create objects 7int RightMotorF = 2; 8int RightMotorB = 3; 9int LeftMotorF = 4; 10int LeftMotorB = 5; 11int laser = 8; 12Servo turret1; 13Servo turret2; 14int pos1 = 90; 15int pos2 = 90; 16RF24 radio(9, 10); 17const uint64_t pipe = 0xE6E6E6E6E6E6; 18char data[20] = ""; 19 20void setup() { 21 //Starts thee RF module 22 radio.begin(); 23 radio.openReadingPipe(1, pipe); 24 radio.startListening(); 25 //Servo motor pins 26 turret1.attach(6); 27 turret2.attach(7); 28 //Define motor pins as output 29 pinMode(RightMotorB, OUTPUT); 30 pinMode(LeftMotorB, OUTPUT); 31 pinMode(RightMotorF, OUTPUT); 32 pinMode(LeftMotorF, OUTPUT); 33 //Define laser as output 34 pinMode(laser, OUTPUT); 35} 36void loop() { 37 String msg = ""; 38 if ( radio.available() ) 39 { 40 radio.read( data, sizeof(data) ); 41 Serial.println(data); 42 msg = data; 43 44 if (msg == "forward") //Go forward 45 { 46 digitalWrite(RightMotorB, HIGH); 47 digitalWrite(LeftMotorB, HIGH); 48 digitalWrite(RightMotorF, LOW); 49 digitalWrite(LeftMotorF, LOW); 50 51 } 52 else if (msg == "backward") //Go backward 53 { 54 digitalWrite(RightMotorB, LOW); 55 digitalWrite(LeftMotorB, LOW); 56 digitalWrite(RightMotorF, HIGH); 57 digitalWrite(LeftMotorF, HIGH); 58 } 59 else if (msg == "left") //Turn left 60 { 61 digitalWrite(RightMotorB, LOW); 62 digitalWrite(LeftMotorB, HIGH); 63 digitalWrite(RightMotorF, LOW); 64 digitalWrite(LeftMotorF, LOW); 65 } 66 else if (msg == "right") //Turn right 67 { 68 digitalWrite(RightMotorB, HIGH); 69 digitalWrite(LeftMotorB, LOW); 70 digitalWrite(RightMotorF, LOW); 71 digitalWrite(LeftMotorF, LOW); 72 } 73 else if (msg == "rightturret") //Turret base turn right 74 { 75 pos1++; 76 } 77 else if (msg == "leftturret") { //Turret base turn left 78 pos1--; 79 } 80 else if (msg == "up") //Turret pointer go up 81 { 82 pos2++; 83 } 84 else if (msg == "down") {//Turret pointer go down 85 pos2--; 86 } 87 else if (msg == "shot") { //Shots laser 88 digitalWrite(laser, HIGH); 89 delay(50); 90 digitalWrite(laser, LOW); 91 delay(50); 92 } 93 else if (msg == "analgobut") //If nothing happens 94 { 95 digitalWrite(RightMotorB, LOW); 96 digitalWrite(LeftMotorB, LOW); 97 digitalWrite(RightMotorF, LOW); 98 digitalWrite(LeftMotorF, LOW); 99 } 100 //Motors follow the position value 101 turret1.write(pos1); 102 turret2.write(pos2); 103 } 104}
Downloadable files
Transmitter circuit
Connections of joystick shield on Arduino. Battery connection.
Transmitter circuit

Receiver Circuit
Circuit of the RC car.
Receiver Circuit

Comments
Only logged in users can leave comments