Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 kwi 2026, o 10:05


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 27 cze 2015, o 14:52 
Offline
Nowy

Dołączył(a): 23 cze 2015
Posty: 5
Pomógł: 0

Witam
Napisałem prosty program do zmiany kolorowej diody LED RGB. Chciałbym za pomocą przycisków wybrać manualnie kolory, a po naciśnięciu ostatniego przycisku nastąpiła stopniowa zmiana kolorów. Wszystko działa tak jak powinno lecz gdy włącza się pętla trybu automatycznego zmiany kolorów nie można powrócić do manualnej zmiany przyciskami. Mam pytanie w jaki sposób mogę przerwać działanie tej pętli w dowolnym momencie, po naciśnięciu przycisków KEY1 - KEY7? Poniżej przedstawiam kod programu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



z góry dziękuję za pomoc i serdecznie pozdrawiam
Konrad



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 cze 2015, o 15:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

tak na szybko bez jakiejkolwiek optymalizacji zrobiłbym to tak:

pseudo kod :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zdaję sobie sprawę że ten przykład nie jest w ogóle optymalny
potraktuj to jako wskazówkę i dopracuj jeśli zadziała :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 cze 2015, o 18:24 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

buc napisał(a):
Mam pytanie w jaki sposób mogę przerwać działanie tej pętli w dowolnym momencie, po naciśnięciu przycisków KEY1 - KEY7

Instrukcja break służy do przerywania pętli.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 cze 2015, o 19:19 
Offline
Nowy

Dołączył(a): 23 cze 2015
Posty: 5
Pomógł: 0

Witam ponownie
Dziękuję za pomoc na szczęście mi się udał to zrobić. Próbowałem z instrukcją break na początku funkcji while(1)już wcześniej, jak to sugerował kolega Krauser lecz aby przerwać funkcję musiałem czekać aż cała się wykona i zacznie od początku. Rozwiązałem to w taki sposób że wstawiłem instrukcję break w każdej pętli for dzięki czemu mogę zmienić stan diod w dowolnym momencie.

pozdrawiam
Konrad



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2015, o 20:17 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Najlepiej jakbyś zrezygnował z tych opóźnień i użył timera do odmierzania czasu, wtedy reakcja byłaby natychmiastowa. Jak używa się timera to program tylko sprawdza czy ma coś zrobić teraz czy nie.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 34 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO