Hello All,
PLEASE HELP ME LOL, I built a garage door opener that works off the HC-05 bluetooth module. Communication seems to work fine but the button doesn't work at all. I've tried several buttons and still nothing. I was wondering if anyone could take a look at my code and see where I went wrong. I've posted the code as well as some pictures so you know what I'm up against. I think it's code related but just in case, I posted the pictures of the schematics. Thanks in advance.
MASTER SIDE CODE
#include <TimerOne.h>
#include <SoftwareSerial.h>
#define redLed 6 //change to pin 6
#define greenLed 9 //change to pin 9
#define blueLed 10 //change to pin 10
#define GarSwitch 4
#define relay 5
char ch;
String HC05_Awake = "ON";
SoftwareSerial mySerial(7, 8); // Rx | Tx
void setup() {
Timer1.initialize(4000000);
Timer1.attachInterrupt(KeepAlive);
Serial.begin(115200);
mySerial.begin(38400);
pinMode(GarSwitch, INPUT_PULLUP);
pinMode(relay, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, LOW);
digitalWrite(relay, HIGH);
}
void loop() {
// Sending
int Garage = digitalRead(GarSwitch);
if (Garage == HIGH) {
mySerial.print('a');
digitalWrite(blueLed, LOW);
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
} else {
digitalWrite(blueLed, LOW);
digitalWrite(greenLed, HIGH);
digitalWrite(redLed, LOW);
}
// Receiving
if (mySerial.available()) {
char ch = mySerial.read();
Serial.write(ch);
if (ch == 'b') {
digitalWrite(relay, LOW);
digitalWrite(blueLed, HIGH);
digitalWrite(greenLed, LOW);
digitalWrite(redLed, LOW);
delay(25);
digitalWrite(relay, HIGH);
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
digitalWrite(blueLed, LOW);
} else {
digitalWrite(relay, HIGH);
}
}
}
void KeepAlive() {
if(HC05_Awake = "ON") {
mySerial.print('m');
Serial.print('m');
}
}
SLAVE SIDE CODE
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8); // Rx | Tx
#define redLed 5
#define greenLed 6
#define blueLed 10
int Button = 4;
#define pwrLed A0
char ch;
void setup()
{
Serial.begin(115200);
mySerial.begin(38400);
pinMode(pwrLed, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(Button, INPUT_PULLUP);
digitalWrite(pwrLed, HIGH);
}
void loop()
{
// Receiving
if (mySerial.available()) {
char ch = mySerial.read();
Serial.write(ch);
if (ch == 'a') {
analogWrite(redLed, 255);
analogWrite(greenLed, 0);
analogWrite(blueLed, 0);
delay(25);
}
else
{
analogWrite(redLed, 0);
analogWrite(greenLed, 50);
}
}
// Sending
int button = digitalRead(Button);
if (button == HIGH)
{
mySerial.print('b');
analogWrite(greenLed, 0);
analogWrite(redLed, 100);
analogWrite(blueLed, 100);
} else {
analogWrite(blueLed, 0);
analogWrite(greenLed,20);
analogWrite(redLed, 0);
}
}
MASTER SCHEMATIC - A
MASTER SCHEMATIC - B
SLAVE SCHEMATIC