Skocz do zawartości

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


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 to post
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 to post
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 to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.