• 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
Przelaczanie stanu diody
#1
Hej, mam kolejny problem, a raczej nie widzę gdzie może być błąd powodujący problem.
W założeniu chcę migać diodą (idzie wszystko przez ESPnow do odbiornika), i o ile jedno wciśnięcie powoduje natychmiastowe zapalenie diody, o tyle kolejne nie gasi jej. Muszę kliknąć raz jeszcze i dopiero wtedy dioda gaśnie Sad
Całość bazuje na zmienne przełączanie
Kod:
void loop() {

if(digitalRead(0) == LOW && dotykT.available()){
    if (przelaczanie > 1){
      przelaczanie = przelaczanie*0;
    }
    else {
      przelaczanie++;
    }

switch (przelaczanie){
  case 0:
    digitalWrite(2, LOW);
    WymianaDanych.StanDrzwi = 0;
  break;
  case 1:
    digitalWrite(2, HIGH);
    WymianaDanych.StanDrzwi = 1;
  break;
}
  esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &WymianaDanych, sizeof(WymianaDanych));
  dotykT.restart();
}
 
Odpowiedź
#2
Zadeklaruj sobie przelaczanie jako bool.

Kod:
void loop() {

if(digitalRead(0) == LOW && dotykT.available()) przelaczanie=!przelaczanie;

switch itd...
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Do zamknięcia Smile

Ewentualnie jakbyś tylko dopisał czemu moje rozwiązanie nie działało tak jak bym tego oczekiwał Smile

Kod:
if(digitalRead(0) == LOW && dotykT.available()){
  przelaczanie = !przelaczanie;
 
  switch (przelaczanie){
  case 0:
    digitalWrite(2, LOW);
    WymianaDanych.StanDrzwi = 0;
  break;
  case 1:
    digitalWrite(2, HIGH);
    WymianaDanych.StanDrzwi = 1;
  break;
}
  esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &WymianaDanych, sizeof(WymianaDanych));
  dotykT.restart();
}
 
Odpowiedź
#4
Wrzucić w pierwotnym kodzie przed switch Serial.println(przelaczanie); i obejrzyj jakie wartości przyjmuje ta zmienna.
Z tego co się orientuję, to powinna tylko 0:1, a przyjmuje 0:1:2.
Zastanów się dlaczego.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości