Skocz do zawartości

[C] Ciągła akcja po wcisnięciu przycisku.


ElectroBeginner

Pomocna odpowiedź

Witam forum to mój pierwszy post i pierwsze pytanie.

Uczę się języka C i pracuje na uC ATmega16 i nie potrafię rozkminić jak będzie wyglądał kod ktory:

Przełączy tak jakby Mode po wcisnięciu przycisku, czyli że wcisnięciu przycisku sprawi że będzie się wykonywała dana czynność przez cały czas, a przestanie po wcisnięciu innego przycisku.

Np. Mam wyświetlacz i po wcisnięciu S1 wyświetla na nim wartości ADC z czujnika U1 (wartości aktualizuja się cały czas, lecz guzik nie jest wcisniety), po wcisnięciu S2 wyświetla wartości ADC z innego czujnika U2 i również przez cały czas aktualizuje.

Powiedzmy:

PB3 to przycisk z pull'upem

 
If(bit_is_clear(PINB, 3)){
If(costam) costam;
If(costam2) costam2;
...
}

Tylko ze taki kod robi ze po wcisnięciu przycisku wykonuje tylko pierwszy if pod nim (jeśli True) i tylko raz.

Może użyć pętle nieskończone przerwane innym przyciskiem?

Np.

Unsigned int i
if(bit_is_clear(PINB,3)){
i=1
while(i) Costam;}
if(bit_is_clear(PINB,4)){
i=2
while(i) costam;)
} 

Pomocy i pozdrawiam 🙂

Link do komentarza
Share on other sites

Podłącz przycisk do któregoś portu od przerwań (INT0, itp.). W kodzie w obsłudze przerwania daj coś w stylu

zmienna++;
if(zmienna >= 5)
zmienna = 1;

Wartość w if'ie określa między iloma ekranami chcesz skakać. W kodzie głównym programu daj instrukcję switch, która w zależności od wartości zmienna, będzie wyświetlała odpowiednie rzeczy, czyli:

switch(zmienna){
case 1:
zrób coś;
break;
case 2:
zrób inne coś;
break;
...
default:
chociażby komunikat o błędzie (gdy zmienna wyleci jakimś cudem poza zakres);
}
  • Lubię! 1
Link do komentarza
Share on other sites

Dzięki ten sposób brzmi dobrze wypróbuję i sprawdzę też pewien co mi teraz przez myśl przeszedł aby guziki tylko ustawialy zmienne i a pętle byłyby np. while(i==2) lub z tym switchem i umieszczę delay aby zniwelować drgania

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.