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



Teraz jest 28 lut 2026, o 12:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 29 kwi 2015, o 20:18 
Offline
Nowy

Dołączył(a): 02 wrz 2012
Posty: 17
Pomógł: 0

Witam,

napisałem taki o to program na biegające światełko ale nie działa to prawidłowo. Mianowicie światełko leci w jedną stronę wraca, i zatrzymuje się na pierwszej diodzie chwile stoi i potem gaśnie następnie swiatelko leci znowu od końca znowu stoi na pierwszej diodzie itd.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 30 kwi 2015, o 10:17 przez lucas234, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2015, o 20:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

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

gdyż dla i=0 pętla się wykonuje, a następnie następuje i-- czyli zmniejszenie i o 1. A jako, że to uint8_t to wtedy i przyjmuje wartość 255, czyli warunek znów spełniony - program cały czas siedzi w tej pętli obliczając dalej i (od 255 w dół).

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 04:12 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3230
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Listing źle wstawiony.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 07:56 
Offline
Nowy

Dołączył(a): 02 wrz 2012
Posty: 17
Pomógł: 0

Widzę że jest źle wstawiony listing, ale nie wiem jak go wstawić poprawnie. Proszę o pomoc.

PJS

To jak zapisać te pętlę żeby było poprawnie. Bo dla zera ona też się musi wykonywać. Ja nie mam pomysłu jak to zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 08:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Po wyjściu z drugiego for() i = -1. Zamień ostatni delay_ms(100) w while(1) na i=0;
Nowa pętla while rozpocznie się z i=0, bez zbędnego opóźnienia. Jestem zainteresowany wynikiem - czy dochodzi do przeciążenia uint8_t na int.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 09:03 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3230
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

topic7402.html

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 09:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

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

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


Dzięki temu zmienna i będzie mogła przyjmować wartości ujemne i warunek w drugiej pętli for i >= 0 będzie działał poprawnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 10:30 
Offline
Nowy

Dołączył(a): 02 wrz 2012
Posty: 17
Pomógł: 0

Sposób jacekk232 jest dobry, ale znalazłem jeszcze jedno rozwiązanie. Mianowicie w kodzie można dodać warunek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i też działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 11:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

lucas234 napisał(a):
ale znalazłem jeszcze jedno rozwiązanie

Rozwiązań jest tyle ilu jest programistów na świecie - postaraj się o tym pamiętać gdy napotkasz kolejny problem ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 11:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

A dlaczego 8-a dioda 2 razy mrygnie, a 1-wsza - nie?
Mój "Tenis".
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2015, o 16:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

Druga pętla nie wykona się dla i=0, więc pierwsza dioda nie mrygnie.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2015, o 10:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

PJS napisał(a):
Druga pętla nie wykona się dla i=0, więc pierwsza dioda nie mrygnie.

Taki miałem cel, by ledy nie jąkały się - zależy to od ustawionych zakresów licznika funkcji.
Dołączam ilustrację przebiegu zmian licznika(żółty - 1wszy for, cyjan - 2gi for) i przekazanie wartości i.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2015, o 07:29 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 227
Lokalizacja: LDZ
Pomógł: 22

lucas234 napisał(a):
Widzę że jest źle wstawiony listing, ale nie wiem jak go wstawić poprawnie. Proszę o pomoc.

PJS

To jak zapisać te pętlę żeby było poprawnie. Bo dla zera ona też się musi wykonywać. Ja nie mam pomysłu jak to zrobić.


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

Sprawdź czy działa ;)



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: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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