26-03-2021, 01:48
Witam ponownie
Nie udało mi się znaleźć sposobu na mój problem z drugiego postu, więc wykombinowałem, że wszystkie instrukcje wykonywane po otrzymaniu kodu napiszę w dodatkowych pętlach i będę się do nich tylko odwoływał.
Zadziałało i zdecydowanie uprościło dodawanie kolejnych pilotów. Wystarczą trzy linijki.
Nie wiem czy nie popełniam przypadkiem jakiegoś "gwałtu" na programowaniu, rozwiązując problem w taki sposób, więc liczę na opinie i ewentualne sugestie bardziej doświadczonych kolegów .
Oto zmieniony kod:
Nie udało mi się znaleźć sposobu na mój problem z drugiego postu, więc wykombinowałem, że wszystkie instrukcje wykonywane po otrzymaniu kodu napiszę w dodatkowych pętlach i będę się do nich tylko odwoływał.
Zadziałało i zdecydowanie uprościło dodawanie kolejnych pilotów. Wystarczą trzy linijki.
Nie wiem czy nie popełniam przypadkiem jakiegoś "gwałtu" na programowaniu, rozwiązując problem w taki sposób, więc liczę na opinie i ewentualne sugestie bardziej doświadczonych kolegów .
Oto zmieniony kod:
Kod:
#include <RCSwitch.h>
#include <Adafruit_NeoPixel.h> //biblioteka od linijki LED
RCSwitch mySwitch = RCSwitch();
Adafruit_NeoPixel linijka = Adafruit_NeoPixel(8, A1, NEO_GRB + NEO_KHZ800); //konfiguracja linijki LED
void setup() {
pinMode(8, OUTPUT); //Pin 8 jako wyjście
pinMode(9, OUTPUT); //Pin 9 jako wyjście
pinMode(A1, OUTPUT);
pinMode(A0, OUTPUT);
mySwitch.enableReceive(0); // Pin 2 (INT0) jako wejście sygnału z odbiornika
Serial.begin(9600); // Uruchomienie komunikacji
linijka.begin(); //inicjalizacja linijki
linijka.show();
Wlaczony();
}
void loop() {
if (mySwitch.available()); // Czy zostały odebrane dane
// --------------------------------------------------------------------------------------
if ( mySwitch.getReceivedValue() == 11858321 ) // Jeśli odebraliśmy taki kod to:
{
Wlaczony(); //Wykonaj taką pętle
mySwitch.resetAvailable(); } //Zatrzymanie pętli w oczekiwaniu na kod
if ( mySwitch.getReceivedValue() == 6226433 ) // Jeśli odebraliśmy taki kod to:
{
Wlaczony(); //Wykonaj taką pętle
mySwitch.resetAvailable();} //Zatrzymanie pętli w oczekiwaniu na kod
// --------------------------------------------------------------------------------------
if ( mySwitch.getReceivedValue() == 11858322 ) // Jeśli odebraliśmy taki kod to:
{
Wylaczony(); //Wykonaj taką pętle
mySwitch.resetAvailable(); } //Zatrzymanie pętli w oczekiwaniu na kod
if ( mySwitch.getReceivedValue() == 6226434 ) // Jeśli odebraliśmy taki kod to:
{
Wylaczony(); //Wykonaj taką pętle
mySwitch.resetAvailable(); } //Zatrzymanie pętli w oczekiwaniu na kod
}
// Dodatkowe pętle
void Wlaczony() {
delay(200);
Serial.println ("Włączony"); // Komunikat w terminalu
Serial.println (mySwitch.getReceivedValue()); //Wyświetlenie otrzymanego kodu w terminalu
for (int i = 0; i < 3; i++) {
linijka.setPixelColor(0, linijka.Color(50, 0, 0));
linijka.show();
delay(100);
linijka.setPixelColor(0, linijka.Color(0, 0, 0));
linijka.show();
delay(100);
}
linijka.setPixelColor(0, linijka.Color(0, 50, 0)); // Czerwona dioda miga 3 razy i zaświeca się zielona
linijka.show();
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);
}
void Wylaczony() {
delay(200);
Serial.println ("Wyłączony"); // Komunikat w terminalu
Serial.println (mySwitch.getReceivedValue()); //Wyświetlenie otrzymanego kodu w terminalu
for (int i = 0; i < 3; i++) {
linijka.setPixelColor(0, linijka.Color(0, 50, 0));
linijka.show();
delay(100);
linijka.setPixelColor(0, linijka.Color(0, 0, 0));
linijka.show();
delay(100);
}
linijka.setPixelColor(0, linijka.Color(50, 0, 0)); // Zielona dioda miga 3 razy i zaświeca się czerwona
linijka.show();
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);
}