//code sourced from [Bytes N Bits]
#include <SoftwareSerial.h>
#define led 3
const byte bt_RX = 2, bt_TX = 3, bt_Vin = 4;
const byte button_Vin = 9, button_Vout = 11;
SoftwareSerial BTSerial(bt_RX, bt_TX);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
BTSerial.begin(9600);
delay(1000);
pinMode(bt_RX, INPUT);
pinMode(bt_TX, OUTPUT);
pinMode(bt_Vin, OUTPUT); //powers bluetooth module
pinMode(button_Vin, OUTPUT);
pinMode(button_Vout, INPUT_PULLUP);
delay(100);
digitalWrite(bt_Vin, HIGH); //powers bluetooth module
delay(500);
if(BTSerial.available())
BTSerial.read(); //clears mysterious byte from bluetooth serial buffer
/*
BTSerial.write("AT+BAUD4"); //sets bluetooth's baud rate to 9600
delay(100);
BTSerial.write("AT+NAMEBackseat Guardian"); //changes display name
delay(100);
BTSerial.write("AT+VERSION"); //shows bluetooth version
delay(100);
*/
for (int i = 0; i < 32; i++ ) {
if (BTSerial.available()) Serial.write((char)BTSerial.read());
}
Serial.println("");
}
void loop() {
static String msg_to_bt = "";
static String msg_from_bt = "";
static String atm = "";
static byte dByte = "";
//writes "AT" to bluetooth when button is pressed
if(digitalRead(button_Vout) == 0) { //press
Serial.println("AT");
BTSerial.write(":P\n");
Serial.println("Noman 12084");
digitalWrite(led, LOW);
delay(100);
}
else if(digitalRead(button_Vout) == 1){
digitalWrite(led,HIGH);
}
//command line -> bluetooth module
msg_to_bt = "";
while(Serial.available()){
dByte = Serial.read();
if (dByte >= 97 && dByte <= 122) dByte -= 32; //capitalizes message
Serial.print((char)dByte);
if (dByte > 31 && dByte < 127) msg_to_bt += (char)dByte; //only stores printing bytes
}
if (msg_to_bt != "") BTSerial.println(msg_to_bt);
//since HC-06 is always in slave mode when paired, Arduino must emulate AT functions
if(msg_to_bt == "AT") BTSerial.write(" OK\n");
if(msg_to_bt == "AT+NAME") BTSerial.write(" Backseat Guardian\n");
if(msg_to_bt == "AT+VERSION") BTSerial.write(" LINVORV1.8\n");
if(msg_to_bt == "AT+BAUD") BTSerial.write(" 9600\n");
//bluetooth module -> serial monitor
msg_from_bt = "";
while(BTSerial.available()){
dByte = BTSerial.read();
if (dByte >= 97 && dByte <=122) dByte -= 32; //capitalizes message
Serial.print((char)dByte);
if (dByte > 31 && dByte < 127) msg_from_bt += (char)dByte; //only stores printing bytes
}
atm = "";
delay(100);
atm += msg_from_bt[0];
atm += msg_from_bt[1];
atm += msg_from_bt[2];
if (msg_from_bt != "") {
//since HC-06 is always in slave mode when paired, Arduino must emulate AT functions
if (atm == "AT+") {
if(msg_from_bt == "AT+NAME") BTSerial.write("+NAME:Backseat Guardian\n"); //"AT+NAME"
if(msg_from_bt == "AT+VERSION") BTSerial.write("LINVORV1.8\n"); //"AT+VERSION"
if(msg_from_bt == "AT+BAUD") BTSerial.write("9600\n"); //"AT+BAUD"
Serial.print(".");
}
if(msg_from_bt == "AT") BTSerial.write("OK\n"); //"AT"
if(msg_from_bt == "HELLO") BTSerial.write("Welcome!\n");
if(msg_from_bt == "LOCATION") BTSerial.write("I'm right here: \n");
if(msg_from_bt == "BYE") {
digitalWrite(bt_Vin, LOW); //disconnects bluetooth
delay(1000);
BTSerial.read();
digitalWrite(bt_Vin, HIGH);
delay(1000);
}
}
}