24-03-2021, 15:21
Witam ponownie
Napisałem, w końcu, program który działa zgodnie z moimi założeniami. Resztę funkcji załatwię peryferiami typu przekaźnik, elektrozaczep (kiedyś może serwo) i akumulator, na wypadek zaniku zasilania.
Jednak jak to w życiu bywa, chciałbym rozszerzyć program o sterowanie z drugiego, posiadanego pilota.
Mógłbym oczywiście kupić samokopiującego i byłoby po problemie, ale to żadna sztuka.
Odczytałem wysyłany kod i wpisałem z przecinkiem do programu w instrukcji "if" po operatorze porównania i działającym kodzie. Jednak to nie działa.
Proszę o podpowiedź gdzie i jak umieścić dodatkowy kod.
Napisałem, w końcu, program który działa zgodnie z moimi założeniami. Resztę funkcji załatwię peryferiami typu przekaźnik, elektrozaczep (kiedyś może serwo) i akumulator, na wypadek zaniku zasilania.
Jednak jak to w życiu bywa, chciałbym rozszerzyć program o sterowanie z drugiego, posiadanego pilota.
Mógłbym oczywiście kupić samokopiującego i byłoby po problemie, ale to żadna sztuka.
Odczytałem wysyłany kod i wpisałem z przecinkiem do programu w instrukcji "if" po operatorze porównania i działającym kodzie. Jednak to nie działa.
Proszę o podpowiedź gdzie i jak umieścić dodatkowy kod.
Kod:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
pinMode(8, OUTPUT); //Pin 8 jako wyjście
pinMode(9, OUTPUT); //Pin 9 jako wyjście
digitalWrite(8, HIGH); // Przekaźnik załączony
tone(A0, 3800, 500); // Sygnalizacja dźwiękowa informująca o włączeniu
delay(100);
tone(A0, 4500, 500);
delay(100);
tone(A0, 3800, 500);
mySwitch.enableReceive(0); // Pin 2 (INT0) jako wejście sygnału z odbiornika
Serial.begin(9600); // Uruchomienie komunikacji
}
void loop() {
if (mySwitch.available()); // Czy zostały odebrane dane
int value = mySwitch.getReceivedValue();
if ( mySwitch.getReceivedValue() == 11858321 ) { // Jeśli odebraliśmy taki kod to:
delay(200); // Eliminacja wielokrotnego odebrania tego samego kodu
Serial.println ("Włączony"); // Komunikat w terminalu
for (int i = 0; i < 4; i++) { // Czterokrotne mignięcie diodą
digitalWrite(9, HIGH);
delay(70);
digitalWrite(9, LOW);
delay(70);
}
digitalWrite(8, HIGH); // Załączenie przekaźnika
tone(A0, 3800, 500); // Sygnalizacja dźwiękowa
delay(100);
tone(A0, 4500, 500);
delay(100);
tone(A0, 3800, 500);
mySwitch.resetAvailable(); //Zatrzymanie pętli w oczekiwaniu na kod
}
if ( mySwitch.getReceivedValue() == 11858322 ) { // Jeśli odebraliśmy taki kod to:
delay(200); // Eliminacja wielokrotnego odebrania tego samego kodu
Serial.println ("Wyłączony"); // Komunikat w terminalu
for (int i = 0; i < 4; i++) { // Czterokrotne mignięcie diodą
digitalWrite(9, HIGH);
delay(70);
digitalWrite(9, LOW);
delay(70);
}
digitalWrite(8, LOW); // Wyłączenie przekaźnika
tone(A0, 4500, 500); // Sygnalizacja dźwiękowa
delay(100);
tone(A0, 3800, 500);
delay(100);
tone(A0, 4500, 500);
mySwitch.resetAvailable(); //Zatrzymanie pętli w oczekiwaniu na kod
}
}