• 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
problem z warunkiem if
#1
witam problem może wydawać się banalnie prosty ale nie umiem sobie z nim poradzić  chodzi o to że pisze program i nie używam funkcji delay ale bibloteki timers mój problem polega na tym że gdy czujnik jest w stanie wysokim to na wyświetlaczu pojawia się napis "pojemność zbiornika 70%" i generuje mi sygnał na buzzer wszystko niby działa tylko nie wiem jak zrobić aby się to nie powtarzało chce aby ten warunek powtórzył się tylko  raz i czekał aż kolejny warunek się spełni bo w ten sposób jak ustawie na 7 sekund to ten warunek logicznie będzie powtarzał się co 7 sekund a ja chce żeby ten warunek spełnił się raz i czekał na spełnienie kolejnego warunku 
Kod:
cz2 = digitalRead(23);
cz3 = digitalRead(24);
cz4 = digitalRead(25);
cz5 = digitalRead(26) ;
cz6 = digitalRead(27);

if (cz1==LOW && cz2==LOW && cz3==LOW && cz4==LOW && cz5 ==LOW&& cz6 == LOW && czekaj.available() ) {
  lcd.init();
lcd.setCursor(0, 0);
lcd.print("pojemnosc ");
lcd.setCursor(0, 1);
  lcd.print("zbiornika 70%");
  tone(A5, 7000,500);
czekaj.time(7000);
czekaj.restart();
}
else
{
if (cz2==LOW && cz3==LOW && cz4==LOW && cz5==LOW&& cz6 == LOW && czekaj.available() ) {
 
lcd.setCursor(0, 0);
lcd.print("pojemnosc ");
  lcd.setCursor(0, 1);
lcd.print("zbiornika  50%");

  czekaj.restart();
}
else
{
  if (cz6 ==LOW && cz5==LOW && cz4==LOW && cz3 == LOW && czekaj.available()){
   
  lcd.setCursor(0, 0);
  lcd.print("pojemnosc ");
  lcd.setCursor(0, 1);
  lcd.print("zbiornika  40%");
     czekaj.restart();

}
else
{
  if (cz6==LOW && cz5==LOW && cz4 == LOW && czekaj.available()){
   
    lcd.setCursor(0, 0);
  lcd.print("pojemnosc ");
  lcd.setCursor(0, 1);
  lcd.print("zbiornika 30%");
   czekaj.restart();

}
else
{
  if (cz6 ==LOW && cz5 == LOW && czekaj.available()){
   
    lcd.setCursor(0, 0);
  lcd.print("pojemnosc ");
  lcd.setCursor(0, 1);
  lcd.print("zbiornika  20%");
   czekaj.restart();
 
  }

else

{
  if (cz6 == LOW && czekaj.available() ) {
   
  lcd.setCursor(0, 0);
  lcd.print("pojemnosc ");
  lcd.setCursor(0, 1);
  lcd.print("zbiornika  10%");
    czekaj.restart();
 
    }


 
}
}
}
}
}
lcd.init();

if(digitalRead(31)  == LOW &&  czas.available()) {
 
     lcd.setCursor(0, 0);
lcd.print("redlica");
  lcd.setCursor(0, 1);
lcd.print("zapchana   nr1");
   tone(A5, 7000,500);
   
}

if  (digitalRead(31) == HIGH){
czas.restart();
czas.time(5000);


}

}   
 
Odpowiedź
#2
Hasło dnia: flaga (jedno bitowy znacznik).
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