Skocz do zawartości

Razor1996

Użytkownicy
  • Zawartość

    14
  • Rejestracja

  • Ostatnio

Posty napisane przez Razor1996


  1. Oto cały kod.

    #include <ESP8266WiFi.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x3F,20,4);  // set the LCD address to 0x3F for a 20 chars and 4 line display
    
    #define myPeriodic 5 //in sec |  pub is 5sec
    #define ONE_WIRE_BUS 2  // DS18B20 on arduino pin2 corresponds to D4 on physical board
    #define ilosc 4 // ilość czujników - max 4 dla lcd 20x4
    
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature DS18B20(&oneWire);
    float prevTemp = 0;
    const char* server = "xxxxxxxxxxx";
    String apiKey ="xxxxxxx";
    const char* MY_SSID = "xxxxxxx"; 
    const char* MY_PWD = "xxxxxxx";
    int sent = 0;
    int licznik = 0; 
    
    
    void setup() {
    
     Serial.begin(115200);
     connectWifi();
    
     lcd.init();                      // initialize the lcd 
     lcd.backlight();
     lcd.home();
    
     lcd.setCursor(0, 0); // k/w 
     lcd.print("Temp. 1: ");
    
     lcd.setCursor(0, 1); // k/w 
     lcd.print("Temp. 2: ");
    
     lcd.setCursor(0, 2); // k/w 
     lcd.print("Temp. 3: ");
    
     lcd.setCursor(0, 3); // k/w 
     lcd.print("Temp. 4: ");
    
    }
    
    void loop() { 
     float temp[ilosc]; 
     //char buffer[10]; 
     DS18B20.requestTemperatures(); 
     licznik ++; 
    
     for(int i=0;i<ilosc;i++){ 
       temp[i] = DS18B20.getTempCByIndex(i); 
       //String tempC = dtostrf(temp, 4, 1, buffer);//handled in sendTemp() 
       //Serial.print(String(sent)+" Temperature: "); 
       //Serial.println(temp); 
    
       //if (temp != prevTemp) 
       //{ 
       //sendTeperatureTS(temp); 
       //prevTemp = temp; 
       //} 
       lcd.setCursor(9, i); // k/w 
       lcd.print("         "); 
       lcd.setCursor(9, i); // k/w 
       lcd.print(temp[i]); 
       lcd.print(F(" C")); 
    
     } 
     if (licznik == myPeriodic) { 
       sendTeperatureTS(temp); 
       licznik = 0; 
     } 
    
    }
    
    void connectWifi()
    {
     Serial.print("Connecting to "+*MY_SSID);
     WiFi.begin(MY_SSID, MY_PWD);
     while (WiFi.status() != WL_CONNECTED) {
     delay(1000);
     Serial.print(".");
     }
    
     Serial.println("");
     Serial.println("Connected");
     Serial.println("");  
    }//end connect
    
    void sendTeperatureTS(float temp[])
    {  
      WiFiClient client;
    
      if (client.connect(server, 9999)) { // use ip 184.106.153.149 or api.thingspeak.com
      Serial.println("WiFi Client connected ");
    
      String postStr = apiKey;
      //postStr += "&field1=";
      //postStr += String(temp);
      //postStr += "\r\n\r\n";
      for(int i=0;i<ilosc;i++){
        postStr += "&field";
        postStr += String(i+1);
        postStr += "=";
        postStr += String(temp[i]); 
      }
    
    
      client.print("POST /update HTTP/1.1\n");
      client.print("Host: api.thingspeak.com\n");
      client.print("Connection: close\n");
      client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
      client.print("Content-Type: application/x-www-form-urlencoded\n");
      client.print("Content-Length: ");
      client.print(postStr.length());
      client.print("\n\n");
      client.print(postStr);
      delay(1000);
    
      }//end if
      sent++;
    client.stop();
    }//end send
    

    EDIT: Już wiem gdzie leży problem!

    Gdy program odbierający dane po wifi nie jest włączony ta funkcja (connect):

     if (client.connect(server, 9999)) { // use ip 184.106.153.149 or api.thingspeak.com
      Serial.println("WiFi Client connected ");

    Czeka aż 5 sekund na odpowiedź programu, którego praca przez ten cały czas jest wstrzymana. Dlatego też chciałbym zmienić timeout tej funkcji na inną wartość. Ale nigdzie nie mogę go znaleźć. Trzeba przeszukiwać bilbioteki, ponieważ "normalnie" zmienić tylko można client.connect(ip, port) ip i port.


  2. Witam,
    Konstruuje termometr który wyświetla zarówno temperatury na wyświetlaczu jak i wysyła ja po wifi. Bazuje na pewnym gotowym projekcie, lecz muszę nanieść kilka zmian. Jedna z nich to wyświetlanie na LCD każdej odczytanej temperatury, a wysyłanie po wifi tylko co np. 5 - ta ilość jest zadawana w programie poprzez define.

    Problem wydawał mi się banalny lecz niestety sposób w jaki chciałem go rozwiązać jest nieskuteczny.

    Oto kod oryginalny:

    void loop() {
     float temp[ilosc];
     //char buffer[10];
     DS18B20.requestTemperatures(); 
    
     for(int i=0;i<ilosc;i++){
       temp[i] = DS18B20.getTempCByIndex(i);
       //String tempC = dtostrf(temp, 4, 1, buffer);//handled in sendTemp()
       //Serial.print(String(sent)+" Temperature: ");
       //Serial.println(temp);
    
       //if (temp != prevTemp)
       //{
       //sendTeperatureTS(temp);
       //prevTemp = temp;
       //}
       lcd.setCursor(9, i); // k/w 
       lcd.print("         ");
       lcd.setCursor(9, i); // k/w 
       lcd.print(temp[i]);
       lcd.print(F(" C"));
     }
     sendTeperatureTS(temp);
     int count = myPeriodic;
     while(count--)
     delay(1000);
    }

    A tak wyglądają moje poprawki

     void loop() {
     float temp[ilosc];
     //char buffer[10];
     DS18B20.requestTemperatures(); 
     licznik ++;
    
     for(int i=0;i<ilosc;i++){
       temp[i] = DS18B20.getTempCByIndex(i);
       //String tempC = dtostrf(temp, 4, 1, buffer);//handled in sendTemp()
       //Serial.print(String(sent)+" Temperature: ");
       //Serial.println(temp);
    
       //if (temp != prevTemp)
       //{
       //sendTeperatureTS(temp);
       //prevTemp = temp;
       //}
       lcd.setCursor(9, i); // k/w 
       lcd.print("         ");
       lcd.setCursor(9, i); // k/w 
       lcd.print(temp[i]);
       lcd.print(F(" C"));
    
     }
     if (licznik == myPeriodic) {
       sendTeperatureTS(temp);
       licznik = 0;
     }
    
    }

    Lecz niestety po poprawkach nodemcu wysyła serie temperatur pod rząd i następuje przerwa (jakby czekało na odczyty temperatur ale trwa to kilka sekund). A ja chciałbym aby po każdym odczycie został on wyświetlony na LCD. Zawsze używałem funkcji if (sensors.available()) lecz w tych bibliotekach ona chyba nie istnieje...

    Podsumowując brakuje mi funkcji która "wiedziałaby" że własnie odczytano temperaturę, dzięki czemu mógłbym ją wyświetlić i czekać na kolejną.

    Biblioteki użyte w programie to #include #include


  3. Tak przy okazji: Jakie masz Arduino że działa na 3.3V? Leonardo?

    Mowa o Arduino Pro Mini - 3.3V

    Dla I²C nie potrzebujesz konwertera pomiędzy 3.3V i 5V, bo ten protokół został zaprojektowany tak, żeby urządzenia tylko musiały ściągać linie w dół, a nie dawać na nie napięcie.

    Czyli jeśli 3,3V poradzi sobie spokojnie z logiką LCD wystarczy po prostu podpiąć wszystko normalnie z jedną zmianą zasilać LCD nie z arduino, a z osobnego zasilania 5V (masy zasilacza i arduino w tym wypadku trzeba połączyć)

    Czy dobrze rozumuje?


  4. Podświetlenie nie jest przecież zasilane z pinów danych! Musisz do niego podać 5V osobno na pin ekranu (z resztą ten konwerter też musisz zasilać).

    Chyba już rozumiem ale dla pewności dopytam 😉

    Jeżeli ten schemat pasuje również do w/w konwertera z aliexpress'u to zasilanie 3,3V podłączam z arduino. Nastepnie SCL z SCL, SDA z SDA (oczywiście od arduino po stronie 3,3V) Następnie podłączam osobne zasilanie z zasilacza 5V pod 5V i to zasilanie do VCC w LCD.

    Czy wymogiem jest aby arduino i LCD było zasilane z jednego zasilacza (wspólna masa?)


  5. To jest dokładnie ten konwerter o którym pisałem ale czy poradzi on sobie z zwiększeniem napięcia zasilania podświetlenia (natężenie prądu będzie na pewno o wiele większe niż na pinach logicznych)


  6. Witam, mam pytanie jak rozwiązać problem podłączenia lcd 5V I2C pod niższe napięcie niż jest dla niego wymagane. Wyczytałem w internecie, że 3,3V powinno spokojnie zasilić logikę wyświetlacza ale mogą być problemy z podświetleniem. Jak dla mnie zrobienie osobnego zasilania dla LCD nie stanowi problemu tylko jak je podłączyć pod I2C żeby nie uszkodzić arduino? Konwerter poziomów logicznych w tym wypadku raczej nie pomoże?


  7. Witam,
    W sumie to widzę, że w kodach poprzedników jest ten sam "błąd" ale ja jednak chciałbym dowiedzieć się jak to naprawić.

    A więc program działa dobrze jeżeli wpiszemy do "szeregowego monitora" jeden znak.

    Natomiast jeśli wpiszę np. zxcvbn to zaświeci mi się dioda (bo pierwsza litera to prawidłowe "z" i wyskoczy mi 5 razy, że wpisałem złą liczbę kolejno dla x, c, v, b, n.

    Wiecie jak temu zaradzić?

    Oto kod:

    #define zielona 8
    #define czerwona 9
    
    int odebraneDane = 0; //Pusty ciąg odebranych danych
    
    void setup() {
     Serial.begin(9600); //Uruchomienie komunikacji
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść
     pinMode(czerwona, OUTPUT);
    
     digitalWrite(zielona, LOW); //Wyłączamy diody
     digitalWrite(czerwona, LOW);
    }
    
    void loop() 
    {
     if(Serial.available() > 0) { //Czy Arduino odebrano dane
       //Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
       odebraneDane = Serial.read(); 
    
    
       switch (odebraneDane) { 
         case 'z':  //Jeśli odebrano "z"
    
           digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
           delay(1000);
           digitalWrite(zielona, LOW); 
         break;
    
         case 'c':  //Jeśli odebrano "c"
    
           digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
           delay(1000);
           digitalWrite(czerwona, LOW); 
         break;
    
         default:
           Serial.println("Podano zly kolor, podaj [z] dla diody zielonej");
           Serial.println("[c] dla diody czerwonej");
           break;
       }
     }
    }

  8. Nie warto kopiować kodu, to są najczęstsze miejsca późniejszych błędów... Ogólnie idziemy w dobrą stronę, ale nawiasy nie są jeszcze równe, zerknij jak to wygląda na spokojnie i porównaj czy nawiasy otwierające i zamykające są w tych samych kolumnach.

    Teraz już wszystko powinno być ok, ale mam pytanie co do funkcji if, bo w Twoich kodach nie dajesz "{" w nowej lini tylko po nawiesie if () { i wtedy jest problem z tym aby druga klamra była w tej samej kolumnie.

    Inaczej mówiąc jak lepiej robić:

    if (ziel == false) 
       { // jeśli zielona dioda jest wyłączona
         digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
         ziel = true; // pokazujemy, że dioda jest włączona
       } else { // jeśli dioda jest włączona

    czy

    if (ziel == false) { // jeśli zielona dioda jest wyłączona
         digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
         ziel = true; // pokazujemy, że dioda jest włączona
       } else { // jeśli dioda jest włączona

    (tylko wtedy nawiasy klamrowe nie są w jednej kolumnie)

    Oto kod:

    #define zielona 8
    #define czerwona 9
    
    String odebraneDane = ""; //Pusty ciąg odebranych danych
    boolean ziel = "";
    boolean czer = "";
    
    void setup() 
    {
     Serial.begin(9600); //Uruchomienie komunikacji
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść
     pinMode(czerwona, OUTPUT);
    
     digitalWrite(zielona, LOW); //Wyłączamy diody
     digitalWrite(czerwona, LOW);
     ziel = false;
     czer = false;
    }
    
    void loop()
    {
     odebraneDane = Serial.readStringUntil('\n'); 
    
     if (odebraneDane == "zielona") 
     { //Jeśli odebrano słowo "zielona"
    
       if (ziel == false) 
       { // jeśli zielona dioda jest wyłączona
         digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
         ziel = true; // pokazujemy, że dioda jest włączona
       } else { // jeśli dioda jest włączona
           digitalWrite(zielona, LOW); //To wyłączamy diodę zieloną
           ziel = false; //  pokazujemy, że dioda zielona jest wyłączona
              }
      }
    
       if (odebraneDane == "czerwona") 
       { //Jeśli odebrano słowo "czerwona"
    
         if (czer == false) 
         { // jeśli czerwona dioda jest wyłączona
           digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
           czer = true; // pokazujemy, że dioda jest włączona
         } else { // jeśli dioda jest włączona
           digitalWrite(czerwona, LOW); //To wyłączamy diodę czerwoną
           czer = false; //  pokazujemy, że dioda czerwona jest wyłączona
                }
       }
    }

  9. Ok, dziękuje zaraz zastosuje się do w/w wskazówek.

    Dodam, że błąd już znalazłem nie chciało mi się pisać dla diody czerwonej osobno linijek więc przekopiowałem dla zielonej i pozmieniałem nazwy, jednej nie zmieniłem i temu nie działało.

    Gotowy działający program:

    #define zielona 8
    #define czerwona 9
    
    String odebraneDane = ""; //Pusty ciąg odebranych danych
    boolean ziel = "";
    boolean czer = "";
    
    void setup() {
     Serial.begin(9600); //Uruchomienie komunikacji
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść
     pinMode(czerwona, OUTPUT);
    
     digitalWrite(zielona, LOW); //Wyłączamy diody
     digitalWrite(czerwona, LOW);
      ziel = false;
      czer = false;
    }
    
    void loop() {
    
    
       odebraneDane = Serial.readStringUntil('\n'); 
    
       if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona"
    
             if (ziel == false) { // jeśli zielona dioda jest wyłączona
               digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
               ziel = true; // pokazujemy, że dioda jest włączona
             } else { // jeśli dioda jest włączona
                 digitalWrite(zielona, LOW); //To wyłączamy diodę zieloną
                 ziel = false; //  pokazujemy, że dioda zielona jest wyłączona
           }
         }
    
       if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona"
    
            if (czer == false) { // jeśli czerwona dioda jest wyłączona
             digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
             czer = true; // pokazujemy, że dioda jest włączona
            } else { // jeśli dioda jest włączona
               digitalWrite(czerwona, LOW); //To wyłączamy diodę czerwoną
               czer = false; //  pokazujemy, że dioda czerwona jest wyłączona
           }
         }
       }

    Edit: Czy teraz estetycznie jest OK oraz czy w dobry sposób rozwiązałem zadanie? 😉


  10. Razor1996, po pierwsze zadbaj o poprawne wcięcia w kodzie. Teraz ciężko zrozumieć dokąd sięga który warunek. Nie ignoruj wcięć 😉

    Szczerze mówiąc nie znam reguł dawania wcięć, więc zrobiłem to na wyczucie 😐

    Oto kod:

    #define zielona 8
    #define czerwona 9
    
    String odebraneDane = ""; //Pusty ciąg odebranych danych
    boolean ziel = "";
    boolean czer = "";
    
    void setup() {
     Serial.begin(9600); //Uruchomienie komunikacji
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść
     pinMode(czerwona, OUTPUT);
    
     digitalWrite(zielona, LOW); //Wyłączamy diody
     digitalWrite(czerwona, LOW);
      ziel = false;
      czer = false;
    }
    
    void loop() {
     if(Serial.available() > 0) { //Czy Arduino odebrano dane
       //Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
       odebraneDane = Serial.readStringUntil('\n'); 
    
       if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona"
    
             if (ziel == false) { // jeśli zielona dioda jest wyłączona
             digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
             ziel = true; // pokazujemy, że dioda jest włączona
             }   
             else { // jeśli dioda jest włączona
             digitalWrite(zielona, LOW); //To wyłączamy diodę zieloną
             ziel = false; //  pokazujemy, że dioda zielona jest wyłączona
           }
         }
    
       if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona"
    
            if (czer == false) { // jeśli czerwona dioda jest wyłączona
            digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
            czer = true; // pokazujemy, że dioda jest włączona
            } 
            else { // jeśli dioda jest włączona
            digitalWrite(czerwona, LOW); //To wyłączamy diodę czerwoną
            ziel = false; //  pokazujemy, że dioda czerwona jest wyłączona
           }
         }
       }
     }

  11. Zrobiłem tak na początku ale jest to błędne, zauważ, że jeśli wpiszesz słowo "zielona" to warunek z czerwoną diodą nie zostanie spełniony więc zadziała funkcja else i wyświetli komunikat o złym kolorze mimo, że był dobry.

    To pomyśl jak to inaczej rozwiązać 🙂 Np.: informacja o złym kolorze powinna być uzależniona od 3 warunku (i zmiennej pomocniczej) lub można połączyć warunki w taki sposób:

        if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona" 
         digitalWrite(zielona, HIGH); //To włączamy diodę zieloną 
         delay(1000); 
         digitalWrite(zielona, LOW); 
       } else if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona" 

    Poradziłem sobie z tym zadaniem dokładnie w taki sposób (nie ukrywam że podejrzałem jakiś z wcześniejszych komentarzy myśląc, że mój sposób również zadziała, więc później miałem już gotowy pomysł) nie zdążyłem tego oznajmić bo tak wciągnęło mnie zadanie 2.5 które mi prawie działa:

    jeśli włączę czerwoną diodę i następnie zieloną to wszystko jest OK, a jak włączę diodę zieloną to później mogę tylko ją włączać lub wyłączać.

    Oto mój kod:

    #define zielona 8
    #define czerwona 9
    
    String odebraneDane = ""; //Pusty ciąg odebranych danych
    boolean ziel = "";
    boolean czer = "";
    
    void setup() {
     Serial.begin(9600); //Uruchomienie komunikacji
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść
     pinMode(czerwona, OUTPUT);
    
     digitalWrite(zielona, LOW); //Wyłączamy diody
     digitalWrite(czerwona, LOW);
      ziel = false;
      czer = false;
    }
    
    void loop() {
     if(Serial.available() > 0) { //Czy Arduino odebrano dane
       //Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
       odebraneDane = Serial.readStringUntil('\n'); 
    
       if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona"
         if (ziel == false) { // jeśli zielona dioda jest wyłączona
           digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
         ziel = true; // pokazujemy, że dioda jest włączona
         } else { // jeśli dioda jest włączona
           digitalWrite(zielona, LOW); //To wyłączamy diodę zieloną
         ziel = false; //  pokazujemy, że dioda zielona jest wyłączona
         }
         }
    
     if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona"
         if (czer == false) { // jeśli czerwona dioda jest wyłączona
           digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
         czer = true; // pokazujemy, że dioda jest włączona
         } else { // jeśli dioda jest włączona
           digitalWrite(czerwona, LOW); //To wyłączamy diodę czerwoną
         ziel = false; //  pokazujemy, że dioda czerwona jest wyłączona
         }
         }
    
         }
         }

  12. #define zielona 8 
    #define czerwona 9 
    
    String odebraneDane = ""; //Pusty ciąg odebranych danych 
    
    void setup() { 
     Serial.begin(9600); //Uruchomienie komunikacji 
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść 
     pinMode(czerwona, OUTPUT); 
    
     digitalWrite(zielona, LOW); //Wyłączamy diody 
     digitalWrite(czerwona, LOW); 
    } 
    
    void loop() { 
     if(Serial.available() > 0) { //Czy Arduino odebrało dane 
       //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane 
       odebraneDane = Serial.readStringUntil('\n'); 
    
       if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona" 
         digitalWrite(zielona, HIGH); //To włączamy diodę zieloną 
         delay(1000); 
         digitalWrite(zielona, LOW); 
       } 
    
       if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona" 
         digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną 
         delay(1000); 
         digitalWrite(czerwona, LOW); 
      } 
      else { // Jeśli nie odebrano słowa "zielona" lub "czerwona" 
       Serial.println("Podano zly kolor"); //Wyświetl komunikat 
     }
    }  
     }

    Spróbuj coś takiego.

    Zrobiłem tak na początku ale jest to błędne, zauważ, że jeśli wpiszesz słowo "zielona" to warunek z czerwoną diodą nie zostanie spełniony więc zadziała funkcja else i wyświetli komunikat o złym kolorze mimo, że był dobry.


  13. Witam, wydawało mi się, że w ten sposób uda mi się sprostać temu zadaniu. Niestety jednak komunikat nie chce się wyświetlać,a ja nie mogę za nic znaleźć błędu.

    Wklejam kod:

    #define zielona 8
    #define czerwona 9
    
    String odebraneDane = ""; //Pusty ciąg odebranych danych
    
    void setup() {
     Serial.begin(9600); //Uruchomienie komunikacji
     pinMode(zielona, OUTPUT); //Konfiguracja wyjść
     pinMode(czerwona, OUTPUT);
    
     digitalWrite(zielona, LOW); //Wyłączamy diody
     digitalWrite(czerwona, LOW);
    }
    
    void loop() {
     if(odebraneDane == "zielona","czerwona"){ //Jeśli odebrano słowo "zielona" lub "czerwona"
     if(Serial.available() > 0) { //Czy Arduino odebrało dane
       //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane
       odebraneDane = Serial.readStringUntil('\n'); 
    
       if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona"
         digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
         delay(1000);
         digitalWrite(zielona, LOW); 
       }
    
       if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona"
         digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
         delay(1000);
         digitalWrite(czerwona, LOW); 
      }
     }
     } else { // Jeśli nie odebrano słowa "zielona" lub "czerwona"
       Serial.println("Podano zly kolor"); //Wyświetl komunikat
     }  
     }
×
×
  • Utwórz nowe...