Skocz do zawartości

Programowanie arduino - komenda switch...case wraz z zmienną podawaną przez potencjometr


Hubcio

Pomocna odpowiedź

Pierwszym moim problemem jest zrozumienie komendy switch....case. próbowałem z poradnikiem ze strony arduino, ale to mi nic nie pomogło.image.thumb.png.c9bceb80f64b4f1fe77d6254f9aa32a9.png Tutaj jest jak to próbowałem zrobić. Jednak problem w tym, że koło "case" powinno być "label1" lub coś innego, a to nie wiem jak załatwić.

Dróga sprawa to chciałbym wprowadzać z zewnątrz zmienne do np. long/int; za pomocą potencjometra.

Edytowano przez Hubcio
Link do komentarza
Share on other sites

Switch-case jest bardzo proste do zrozumienia...masz jedna zmienna, i taka jaką wartość ma ta zmienna taki case zostanie wybrany (o tym samym numerze) 

int pot = 1; //nr pinu analogowego

void setup() {}

void loop() { 
  int x = map(analogRead(pot), 0, 1023, 1, 3); 
  switch (x) { 
      case 1:
      //kod 
      break;
      case 2: 
      //kod 
      break;
      case 3: 
      //kod 
      break; 
  } 
}

 

Link do komentarza
Share on other sites

30 minut temu, Santiago napisał:

Dla Was także

I tak i nie. Switch/case jest dobry kiedy masz ustalone warunki. Pamiętaj, że argumentem case musi być stała, a to nie zawsze jest możliwe.

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Niestety w switch case nie można użyć do labelek zmiennych, więc o ile można w if else if użyć tablicy zmiennych, choćby int, to już w switch case co najwyżej jakiś typ wyliczeniowy. 

Z pilotem tak się kiedyś borykałem, myślałem, że w piszę w tablicę 10 kodów, a do innego pilota 10 innych, jak sobie będę kompilował to podmienię kody w tablicy, zrobię "case kod[3]", a tak się nie da niestety. Gdzieś potem doczytałem, że te case'y muszą być znane co do wartości w momencie kompilacji.

A tak poza tym to oczywiście case są wygodniejsze i bardziej przejrzyste, dlatego drążyłem.

  • Lubię! 2
Link do komentarza
Share on other sites

Switch case czasem upraszcza rozpisywanie warunków, zamiast wpisywać if else elseif i powiązanych operatorów można w łatwy sposób zapisać tak

#include <stdio.h>
#include <inttypes.h>


int x = 40;


int main()
{
    switch(x)
    {
        case 0:
        {
             printf("X = %d\n",x);
             break;
        }
        case 8 ... 12:
        {
            printf("X jest w zakresie 8 do 12 X = %d\n",x);
            break;
        }
        
        case 40 ... 50:
        case 80 ... 120:
        {
            printf("X tu juz kilka mozliwosci X = %d\n",x);
            break;
        }
        default:
        {
             printf("Zadna wartosc nie zawiera sie w warunku");
            break;
            
        }
    }
    return 0;
}

https://www.onlinegdb.com/

Edytowano przez _LM_
  • Pomogłeś! 1
Link do komentarza
Share on other sites

23 godziny temu, kaczakat napisał:

Z pilotem tak się kiedyś borykałem, myślałem, że w piszę w tablicę 10 kodów, a do innego pilota 10 innych, jak sobie będę kompilował to podmienię kody w tablicy, zrobię "case kod[3]", a tak się nie da niestety. Gdzieś potem doczytałem, że te case'y muszą być znane co do wartości w momencie kompilacji.

łatwiej to zrobić na tablicach i ewentualnie funkcjach powiązanych z wybranymi kodami - callbackami

  • Lubię! 1
Link do komentarza
Share on other sites

@_LM_ te kody które podałeś są bardzo przydatne, ale jeszcze jedna sprawa jest. Jak można by przesyłać z potencjometra do tych programów informację a potem przetworzyć na informację na długość przesyłania sygnału do przekaźnika, który załączy inny przekaźnik który załączy transformator w projekcie zgrzewarki punktowej.

Link do komentarza
Share on other sites

Jeśli chodzi o zgrzewarkę, to sprawa jest dużo bardziej skomplikowana bo transformator musi mieć synchronizację z napięciem sieci. Trzeba włączać na wierzchołkach sinusa, inaczej będzie wywalał zabezpieczenia nadprądowe w instalacji. Wiem co piszę bo budowałem jakieś pół roku temu zgrzewarkę, przekaźnik czy nawet stycznik nie nadaje się do takiego rozwiązania. 

Edytowano przez _LM_
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Ja u siebie zastosowałem przekaźnik SSR na 40A (chiński Fotek) i chodziło elegancko...i sterowanie nim banalnie proste, ale czasy zgrzewu ustawiane tylko co 10ms co wynika z budowy takiego przekaźnika (zerocross)

Edytowano przez farmaceuta
Link do komentarza
Share on other sites

3 minuty temu, farmaceuta napisał:

(zerocross)

Ten zero-cross uratował Ci tyłek przed wywaleniem korków, bo zsynchronizował przełączenie z siecią 😉

3 minuty temu, farmaceuta napisał:

czasy zgrzewu ustawiane tylko co 10ms

Panie, spokojnie wystarczy do większości rzeczy... Przecież nie będziesz tym zgrzewał blachy o grubości kilkunastu mikronów 😉 A nikiel bardzo dobrze przewodzi prąd i ciepło, więc... 😄

Link do komentarza
Share on other sites

3 minuty temu, H1M4W4R1 napisał:

Ten zero-cross uratował Ci tyłek przed wywaleniem korków, bo zsynchronizował przełączenie z siecią 😉

 😉 😄

Tak tak wiem...jak by tego było mało to zerocross ratuje triaka przed ubiciem...wiem coś o tym bo pierwszy przekaznik składałem sam na bta16 i jakimś tam "moc" już nie pamiętam jaki, ale w każdym razie "fachowcy" z wielu tematów elektrody pisali że na tym będzie chodzić...no i chodziło, a innym razem upalilo triak...po 5-6 sztukach dałem sobie spokój...kupiłem SSR i działa niezawodnie

Link do komentarza
Share on other sites

Zero cross to jest dobre dla żarówek, dla trafa stosuje się pierwszą synchronizację w szczycie sinusa ze względu na szczątkowe magnesowanie rdzenia. Ja stosuję czasy od 20 do 60ms z wstępnym podgrzaniem przed impulsem właściwym. Trzyma jak głuche drzwi. 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.