Browse Source

Send on and off signals

Robert Marshall 5 years ago
parent
commit
ba7b89ad5f
3 changed files with 27 additions and 13 deletions
  1. 1 1
      Receiver/src/main.cpp
  2. 5 1
      Transmitter/src/Button.cpp
  3. 21 11
      Transmitter/src/main.cpp

+ 1 - 1
Receiver/src/main.cpp

@@ -12,7 +12,7 @@ void setup(){
 }
 
 void loop(){
-	uint8_t buf[12];
+	uint8_t buf[9];
 	uint8_t buflen = sizeof(buf);
 	if (driver.recv(buf, &buflen)) {// Non-blocking
 		Serial.print("Message: ");

+ 5 - 1
Transmitter/src/Button.cpp

@@ -7,11 +7,13 @@ class Button {
 	unsigned long _lastDebounce;
 	bool _prevButtonValue, _currentValue;
 	void (*_pressCallback)(void);
+	void (*_releaseCallback)(void);
 
 public:
-	Button(int pin, void (*pressCallback)(void)) {
+	Button(int pin, void (*pressCallback)(void), void (*releaseCallback)(void)) {
 		_pin = pin;
 		_pressCallback = pressCallback;
+		_releaseCallback = releaseCallback;
 		pinMode(pin, INPUT);
 	}
 
@@ -26,6 +28,8 @@ public:
 			_currentValue = reading;
 			if (_currentValue)
 				_pressCallback();
+			else
+				_releaseCallback();
 		}
 
 		_prevButtonValue = reading;

+ 21 - 11
Transmitter/src/main.cpp

@@ -3,10 +3,29 @@
 #include <Button.cpp>
 
 RH_ASK _driver;
-void buttonPress();
-Button _button(13, &buttonPress);
+void sendOnSignal();
+void sendOffSignal();
+Button _button(13, &sendOnSignal, &sendOffSignal);
 unsigned int _counter;
 
+void sendSignal(int value){
+	Serial.println("Transmitting: ");
+	char msg[9];
+	sprintf(msg, "LED On: %d", value);
+	Serial.println(msg);
+	_driver.send((uint8_t *)msg, strlen(msg));
+	_driver.waitPacketSent();
+	Serial.println("Transmitted");
+}
+
+void sendOnSignal(){
+	sendSignal(1);
+}
+
+void sendOffSignal(){
+	sendSignal(0);
+}
+
 void setup() {
 	Serial.begin(9600);
 	Serial.println("Starting...");
@@ -17,13 +36,4 @@ void setup() {
 
 void loop() {
 	_button.loop();
-}
-
-void buttonPress(){
-	Serial.println("Transmitting...");
-	char msg[12];
-	sprintf(msg, "Hello World%d", _counter++);
-	_driver.send((uint8_t *)msg, strlen(msg));
-	_driver.waitPacketSent();
-	Serial.println("Transmitted");
 }