Skip to content

Instantly share code, notes, and snippets.

@CodeNextAdmin
Created March 23, 2023 22:45
Show Gist options
  • Save CodeNextAdmin/cf63ca0278d9d7552302dd4d7e77f171 to your computer and use it in GitHub Desktop.
Save CodeNextAdmin/cf63ca0278d9d7552302dd4d7e77f171 to your computer and use it in GitHub Desktop.
Control your Arduino car with an Android Bluetooth app
/*
* Code Next Arduino Robot club
* HC-06 Bluetooth drive control with mobile app
* Downoload an Android Bluetooth HC-06 app and
* set commands to match f (forward), r (reverse)
* l (left) , r (right)
* TODO: modify this code to improve remote driveing performance
*/
#include <SoftwareSerial.h>
//motor 1
#define enA 9
#define in1 6
#define in2 7
////motor 2
#define in3 5
#define in4 4
#define enB 3 //pwm for motor 2
#define buzzer 12
#define led 13
SoftwareSerial BTserial(10, 11); // RX | TX
void setup() {
Serial.begin(9600);
BTserial.begin(9600);
pinMode(led, OUTPUT);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
wakeUp();
}
void loop() {
analogWrite(enA, 255); //full power - no more potentiometer
analogWrite(enB, 255);
while (BTserial.available()>0)
{
char c = BTserial.read();
if (c == 'f'){
tone(buzzer, 1000);
digitalWrite(led, HIGH);
delay(80);
noTone(buzzer);
forward(); //move forward
} else if (c == 'b'){
tone(buzzer, 800);
digitalWrite(led, HIGH);
delay(80);
noTone(buzzer);
reverse();
} else if (c == 'l'){
//turn left
tone(buzzer, 800);
digitalWrite(led, HIGH);
delay(80);
noTone(buzzer);
turnLeft();
} else if (c == 'r'){
tone(buzzer, 800);
digitalWrite(led, HIGH);
delay(80);
noTone(buzzer);
turnRight();
}
else {
Serial.println("Enter f, b, r, l");
}
delay(10);
}
// Keep reading from Arduino Serial Monitor and send to HC-06
while (Serial.available()>0)
{
//This runs while the communication is coming from the Serial USB
BTserial.write(Serial.read());
}
}
void forward(){
//motor 1
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void reverse(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void turnRight(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void turnLeft(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void wakeUp(){
tone(buzzer, 1000); // Send 1KHz sound signal...
digitalWrite(led, HIGH);
delay(80); //play for 20 milliseconds
noTone(buzzer); //turn off sound
digitalWrite(led, LOW);
delay(120); //wait for a bit more
tone(buzzer, 720);
digitalWrite(led, HIGH);
delay(120);
noTone(buzzer);
digitalWrite(led, LOW);
delay(100);
tone(buzzer, 1000);
digitalWrite(led, HIGH);
delay(300);
noTone(buzzer);
digitalWrite(led, LOW);
delay(20);
tone(buzzer, 2000);
digitalWrite(led, HIGH);
delay(200);
noTone(buzzer);
delay(1000);
digitalWrite(led, LOW);
}
void playForwardChime(){
tone(buzzer, 1000); // Send 1KHz sound signal...
delay(80); //play for 20 milliseconds
noTone(buzzer); //turn off sound
delay(80); //wait for a bit more
tone(buzzer, 1200);
delay(120);
noTone(buzzer);
delay(100);
tone(buzzer, 1000);
delay(90);
noTone(buzzer);
delay(20);
tone(buzzer, 2400);
delay(120);
noTone(buzzer);
delay(0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment