05-09-2024, 03:38 PM
(This post was last modified: 05-09-2024, 03:47 PM by franco.demei@gmail.com.)
(05-07-2024, 12:12 PM)admin Wrote: press remote's button, is code can be detected, will print by serial port.Hi Master,
I probably have a problem. I uploaded the belove code. It's like a loop, I should read what i'm transmitting.
Code:
#include "BluetoothSerial.h"
#include <RCSwitch.h>
BluetoothSerial SerialBT;
RCSwitch mySwitch = RCSwitch();
#define Key1 36
#define Key2 39
#define Key3 27
#define Key4 14
#define RELAY1 2
#define RELAY2 15
#define RELAY3 5
#define RELAY4 4
int incoming;
void setup() {
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
pinMode(Key1, INPUT);
pinMode(Key2, INPUT);
pinMode(Key3, INPUT);
pinMode(Key4, INPUT);
Serial.begin(9600); // Serial monitor
mySwitch.enableReceive(19);
mySwitch.enableTransmit(21);
SerialBT.begin(9600); // Bluetooth serial communication
Serial.print("Bluetooth Control for KC868-A4 Relays");
}
void loop() {
mySwitch.send("000000000001010100010001");
delay(1000);
mySwitch.send("000000000001010100010100");
delay(1000);
//if (mySwitch.available())
// Read the received data
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
mySwitch.resetAvailable();
delay(1000);
ScanKey1();
ScanKey2();
ScanKey3();
ScanKey4();
if (SerialBT.available()) {
char command = SerialBT.read();
// Controlla il comando ricevuto e attiva o disattiva il relè corrispondente
switch(command) {
case '1':
digitalWrite(RELAY1, HIGH);
break;
case '2':
digitalWrite(RELAY1, LOW);
break;
case '3':
digitalWrite(RELAY2, HIGH);
break;
case '4':
digitalWrite(RELAY2, LOW);
break;
case '5':
digitalWrite(RELAY3, HIGH);
break;
case '6':
digitalWrite(RELAY3, LOW);
break;
case '7':
digitalWrite(RELAY4, HIGH);
break;
case '8':
digitalWrite(RELAY4, LOW);
break;
default:
break;
}
}
}
int KEY_NUM1;
int KEY_NUM2;
int KEY_NUM3;
int KEY_NUM4;
void ScanKey1() {
KEY_NUM1 = 1;
if (digitalRead(Key1) == LOW) {
delay(20);
if (digitalRead(Key1) == LOW) {
KEY_NUM1 = 0;
digitalWrite(RELAY1, HIGH);
} else {
digitalWrite(RELAY1, LOW);
}
}
}
void ScanKey2() {
KEY_NUM2 = 1;
if (digitalRead(Key2) == LOW) {
delay(20);
if (digitalRead(Key2) == LOW) {
KEY_NUM2 = 0;
digitalWrite(RELAY2, HIGH);
} else {
digitalWrite(RELAY2, LOW);
}
}
}
void ScanKey3() {
KEY_NUM3 = 1;
if (digitalRead(Key3) == LOW) {
delay(20);
if (digitalRead(Key3) == LOW) {
KEY_NUM3 = 0;
digitalWrite(RELAY3, HIGH);
} else {
digitalWrite(RELAY3, LOW);
}
}
}
void ScanKey4() {
KEY_NUM4 = 1;
if (digitalRead(Key4) == LOW) {
delay(20);
if (digitalRead(Key4) == LOW) {
KEY_NUM4 = 0;
digitalWrite(RELAY4, HIGH);
} else {
digitalWrite(RELAY4, LOW);
}
}
}
As we can see from pictures There is not any output to the seial monitor.
Any suggestion to solve this issue ?