• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie pilotem RC
#7
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:
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);
}
 
Odpowiedź
  


Wiadomości w tym wątku
Sterowanie pilotem RC - przez darek793 - 12-03-2021, 18:03
RE: Sterowanie pilotem RC - przez Robson Kerman - 12-03-2021, 23:10
RE: Sterowanie pilotem RC - przez darek793 - 13-03-2021, 17:00
RE: Sterowanie pilotem RC - przez darek793 - 24-03-2021, 15:21
RE: Sterowanie pilotem RC - przez Jarewa0606 - 24-03-2021, 18:32
RE: Sterowanie pilotem RC - przez darek793 - 24-03-2021, 22:33
RE: Sterowanie pilotem RC - przez darek793 - 26-03-2021, 01:48

Skocz do:


Przeglądający: 2 gości