/* Project: Bluetooth HC-05, 4WD robot car set Function: Bluetooth controlled 4WD smart robot car */ #define Fwdleds 8 //attached to digital pin 8 of Arduino Uno #define LeftTurnLed 15 //attached to analog pin A1 of Arduino Uno #define BackLeds 11 //attached to digital pin 11 of Arduino Uno #define RightTurnLed 14 //attached to analog pin A0 of Arduino Uno #define Buzzer 16 //attached to analog pin A2 of Arduino Uno //DC motors 3 and 4: #define in1 7 //motor direction control port #define in2 10 //motor direction control port #define enA 9 //motor speed control //DC motors 1 and 2: #define in3 5 //motor direction control port #define in4 4 //motor direction control port #define enB 6 //motor speed control boolean Forwardleds = false; boolean BackwardLeds = false; boolean horn = false; int command; //variable to store command state. int speedCar = 100; // 50 - 255. int speed_Coeff = 4; //************************************************************************* void setup() { pinMode(Fwdleds, OUTPUT); pinMode(LeftTurnLed, OUTPUT); pinMode(BackLeds, OUTPUT); pinMode(RightTurnLed, OUTPUT); pinMode(Buzzer, OUTPUT); pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); Serial.begin(38400);//initialize serial communication at 38400 bps } void goAhead() { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enA, speedCar); analogWrite(enB, speedCar); digitalWrite(RightTurnLed, LOW); digitalWrite(LeftTurnLed, LOW); } void goBack() { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enA, speedCar); analogWrite(enB, speedCar); } void goRight() { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enA, speedCar); analogWrite(enB, speedCar); digitalWrite(RightTurnLed, HIGH); digitalWrite(LeftTurnLed, LOW); } void goLeft() { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enA, speedCar); analogWrite(enB, speedCar); digitalWrite(LeftTurnLed, HIGH); digitalWrite(RightTurnLed, LOW); } void goAheadRight() { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enA, speedCar); analogWrite(enB, speedCar / speed_Coeff); digitalWrite(RightTurnLed, HIGH); digitalWrite(LeftTurnLed, LOW); } void goAheadLeft() { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enA, speedCar / speed_Coeff); analogWrite(enB, speedCar); digitalWrite(LeftTurnLed, HIGH); digitalWrite(RightTurnLed, LOW); } void goBackRight() { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enA, speedCar); analogWrite(enB, speedCar); digitalWrite(RightTurnLed, HIGH); digitalWrite(LeftTurnLed, LOW); } void goBackLeft() { digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enA, speedCar); analogWrite(enB, speedCar); digitalWrite(LeftTurnLed, HIGH); digitalWrite(RightTurnLed, LOW); } void stopCar() { digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enA, speedCar); analogWrite(enB, speedCar); digitalWrite(LeftTurnLed, LOW); digitalWrite(RightTurnLed, LOW); } //******************************************************************** void loop() { if (Serial.available() > 0) { command = Serial.read(); stopCar(); //Initialize with motors stopped. if (Forwardleds) { digitalWrite(Fwdleds, HIGH); } if (!Forwardleds) { digitalWrite(Fwdleds, LOW); } if (BackwardLeds) { digitalWrite(BackLeds, HIGH); } if (!BackwardLeds) { digitalWrite(BackLeds, LOW); } if (horn) { digitalWrite(Buzzer, HIGH); } if (!horn) { digitalWrite(Buzzer, LOW); } switch (command) { case 'S': stopCar(); break; 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': Forwardleds = true; break; case 'w': Forwardleds = false; break; case 'U': BackwardLeds = true; break; case 'u': BackwardLeds = false; break; case 'V': horn = true; break; case 'v': horn = false; break; } } }