Stránka 1 z 1

Arduino ( switch case)

Napsal: 13 led 2016, 12:28
od denny_ul
Poradí někdo jak v následujícím kódu přidělím case hodnotu od 130 do 170 a ještě jestli můžu použít i case > 170?
V různých příkladech jsem jen našel, že tomu přidělují jen jednu hodnotu

Kód: Vybrat vše

 switch (Svetla) {
    case ?????:          // pro hodnotu od 130 do 170:
      digitalWrite(Svetlo1, HIGH)
      digitalWrite(Svetlo2, LOW)
      break;
    case > 170:         // může tady být ">" ?
      digitalWrite(Svetlo1, HIGH)
      digitalWrite(Svetlo2, HIGH)
      break;
    default:
      digitalWrite(Svetlo1, LOW)
      digitalWrite(Svetlo2, LOW)
  }

Napsal: 13 led 2016, 12:31
od mikollar
jednoduchsie pre tento pripad bude ak pouzijes

Kód: Vybrat vše

if(Svetla >= 130 && Svetla <= 170)
{
     digitalWrite(Svetlo1, HIGH)
      digitalWrite(Svetlo2, LOW)
}
else if(Svetla > 170)
{
     digitalWrite(Svetlo1, HIGH)
      digitalWrite(Svetlo2, HIGH)
}
else
{
       digitalWrite(Svetlo1, LOW)
      digitalWrite(Svetlo2, LOW)
}

Napsal: 13 led 2016, 21:54
od Honza_dy
Souhlas s mikollarem. V tomto případě není switch vhodný.

Napsal: 15 led 2016, 12:23
od saitt
Case je dobrý třeba na tohle mám :nějakou proměnou třeba na přepínaní menu na lcd displeji tlačítkama volím ,které menu chci a zvyšuji hodnotu proměné menu o jednu ,když přeteče tak ji vrátím na začátek-na nulu a to i opačně když jedu nahoru. a case mi rozpoznává které menu mám vybrat..

Kód: Vybrat vše

void dispMenu() {
  switch (menu) {
    case 1:
      menu1();
      break;
    case 2:
      menu2();
      break;
    case 3:
      menu3();
      break;
    case 4:
      menu4();
      break;
  }

Napsal: 15 led 2016, 12:28
od rnbw
GCC podporuje rozsirenie case range:

Kód: Vybrat vše

 switch (Svetla) { 
     case 130 ... 170:          // pro hodnotu od 130 do 170:
       digitalWrite(Svetlo1, HIGH)
       digitalWrite(Svetlo2, LOW)
       break;
     case 170 ... 255:         // musis uviest maximalnu hodnotu
       digitalWrite(Svetlo1, HIGH)
       digitalWrite(Svetlo2, HIGH)
       break;
     default:
       digitalWrite(Svetlo1, LOW)
       digitalWrite(Svetlo2, LOW)
   }