• 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
"IF" nie działa
#1
Cześć

  Napisałem w Ardu już sporo programów i nigdy nie spotkałem się z problemem, a na pewno z warunkami... 
Mam funkcję dioda(stat), stat to wartość od 0 do 4 i mam zagwostkę:
dwa pierwsze warunki powinny ustawiać dla LED_1 wartość off lub on w zależności od stat, ale nie ma znaczenia czy stat to 0 czy 1 zawsze LED_1 ma wartość on... 
gdzie 
on 0
off 1
Podstawienie w funkcji zamiast LED_1 = on i LED_1 = off wartości LED_1 = 0 i LED_ 1 = 1  również nic nie zmienia. 

Gdzie jest błąd, przecież tu nie ma nic trudnego. Może coś się zmieniło w nowej wersji arduino.

Kod:
void dioda(int stat) {
  LED_2 = DATAx2;
  LED_3 = DATAx3;
  LED_4 = DATAx4;

  if (stat == 0) LED_1 = off;
  if (stat == 1) LED_1 = on;   //zazbrojone
  Serial.print("LED_1 ");  Serial.println(LED_1); 
  if (stat == 2)   {if (millis() - ledMillis >= 500) {LED_1 = !LED_1; ledMillis = millis();}  }
  if (stat == 3)   {if (millis() - ledMillis >= 500) {LED_2 = !LED_2; ledMillis = millis();}  }  //garaz aktywny
  if (stat == 4)   {LED_2 = on; LED_3 = on; LED_4 = on; }  //pralka
  if (DATAx5 == 0) {LED_2 = on; LED_3 = on; LED_4 = on; }  //GAZ CZAD
  Serial.print("Stat 2 ");  Serial.println(stat);
  Serial.print("LED_1 ");  Serial.println(LED_1); 

  digitalWrite(led_sterownik, LED_1);
  digitalWrite(DO_led,      !LED_1);
  digitalWrite(led_gar1,     LED_2);
  digitalWrite(led_gar2,     LED_3);
  digitalWrite(led_przej,    LED_4);

  // ???? digitalWrite(DO_przek, HIGH);
 
}
 
Odpowiedź
#2
Wychodzi na to, że w funkcji digitalWrite(pin, value), parametr value ustawiasz na on lub off, a powinno być HIGH lub LOW.
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
(02-05-2021, 23:29)Robson Kerman napisał(a): Wychodzi na to, że w funkcji digitalWrite(pin, value), parametr value ustawiasz na on lub off, a powinno być HIGH lub LOW.
Na początku zdefiniowałem #define on 0 i #define off 1. Poza tym gdy stat = 2 dioda LED_1 przyjmuje na zmianę 0 i 1 i to działa poprawnie
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości