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



Teraz jest 6 lut 2025, o 21:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 18 cze 2014, o 18:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 cze 2014
Posty: 54
Lokalizacja: Zabrze
Pomógł: 1

Witam wszystkich forumowiczów i forumowiczki. Jako że w "dziale rybnym" nie mogę dodać wątku umieszczę go tutaj.
Jako że niedawno zaczołem przygodę z BB i językiem c oraz podwójnym przewałkowaniu książki postanowiłem projekt "wstęp do systemów czasu rzeczywistego" lekko zmodyfikować po swojemu no ale utknołem po drodze z "menu"

poniżej prezentuję swoj plik main.c

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



Narazie wyświetlam czas na lcd z pcf-a po i2c za pomocą ekspandera, oraz temperature z ds18d20
na wyświetlaczach a do tego miga dioda.
Niestety nie wiem jak ugryść menu do ustawiania takiego zegarka (za pomoca np. 4ch przycisków tych na ATB).
Jeśli ktoś mogłby pomóc wskazując drogę lub zaprezentować kod programu byłbym wdzięczny.
Jeśli czegoś nie sprecyzowałem to doprecyzuje.
PS: to nie lenistwo tylko cofnięcie wychowawczego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 cze 2014, o 18:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Ja to robiłem za pomocą 3 przycisków

LEWY --- WEJDZ
SRODKOWY --- OK
PRAWY --- COFNIJ

a do ustawienia zegarka

LEWY --- NIZEJ
SRODKOWY --- ZATWIERDZ
PRAWY --- NIZEJ

realizujesz to za pomoca flagi

menu = 0 czyli nie jestes w menu wciskasz srodkowy ustawiajac flage menu=1
przewijasz menu 1 , 2 ,3 itd

wchodzisz w podmenu menu 11 , 12 , 13

itp.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 cze 2014, o 21:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Zapoznaj się z instrukcją "switch" a post wyżej stanie się jasny :)
Pozdrawiam.`



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2014, o 06:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 cze 2014
Posty: 54
Lokalizacja: Zabrze
Pomógł: 1

Witam i dziękuje za podpowiedzi.
Czyli jeśli dobrze kombinuje to powinno to wyglądać mniej więcej tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kombinuję narazie na sucho z wyświetlaniem info na lcd za pomocą klawiszy a powyższy kod wchodzi do ustaw godziny, ustaw minuty oraz wyswietla wartosc licznika.
Teraz pewnie dokonując modyfikacji (bo minut nie ma wiecej jak 59 a godzin 24) i przekazując wartości z ustawień np. do bufora mozna by za pomocą i2c wysłać to do RTC.
Mam nadzieję że ide w dobrym kierunku. Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2014, o 11:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Tak idziesz w dobrym kierunku.
Ja nie uzywalem w moim menu switch uzylem mirka superdebounce i zaleznie od pozycji w menu klawisz aktywowal dana funkcje.

Tu masz przyklad:


Wysłane z telefonu


Autor postu otrzymał pochwałę

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2014, o 18:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 cze 2014
Posty: 54
Lokalizacja: Zabrze
Pomógł: 1

Witam, po obejrzeniu prezentacji działania menu jestem w głębokim szoku bo o takie coś własnie mi chodzi tylko jak to zrobić to nie wiem. Co do mojego menu to jeśli do niego wchodze to praktycznie tylko ono jest wykonywane i to bardzo powoli, dioda co miga na ATB przestaje migać (tak w tempie 1raz na 5 sekund) podejrzewam że chodzi tu o przewanie o którym dowiedziałem się z wideoporadnika Pana Mirka, gdyż chyba to moje menu "zeżera" całe zasoby mikrokontrolera.
Czy kolega "Majster" mogłby jakoś bardziej mnie początkującego naprowadzić jak takie coś wykonać ?

Wstawiłem do tego timer programowy co "odwiesiło" troche mikrokontroler, działa mi to ale kulawo.
Ponizej moj main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zapomniałem dopisać, dlaczego zmniejszając wartośc zmiennej cnt w dół do zera to po następnym naciśnięciu przycisku zamiast pojawić się np 23 pojawia się na chwile 255 i zaraz wskakuje 0 ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2014, o 22:51 
Offline
Użytkownik
Avatar użytkownika

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

górnik_z_ambicjami napisał(a):
Zapomniałem dopisać, dlaczego zmniejszając wartośc zmiennej cnt w dół do zera to po następnym naciśnięciu przycisku zamiast pojawić się np 23 pojawia się na chwile 255 i zaraz wskakuje 0 ?

Zauważ, że zmienna cnt jest typu uint8_t czyli bez znaku. Skoro zmienna ta przyjmuje wartości w przedziale 0...255 to te warunki nie będą działać
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Te warunki zadziałają poprawnie dla zmiennej int8_t.

Bo teraz jak zmienna cnt będzie miała wartość równą 0 to po operacji cnt-- przyjmie wartość 255. Wtedy ta wartość zostanie wyświetlona na lcd i zadziała jeden z tych warunków
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co w rezultacie wyzeruje zmienną cnt.



W programie użyłeś timerów programowych (i dobrze) ale nadal masz delaye w funkcji obsługi klawiszy. Zamiast używać tej kulawej funkcji zainteresuj się funkcjami z tych artykułów
http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html
http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html
http://mirekk36.blogspot.com/2012/10/ob ... a-cd3.html
chociażby jedną z tych prostszych
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: 23 cze 2014, o 05:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 cze 2014
Posty: 54
Lokalizacja: Zabrze
Pomógł: 1

Witam wszystkich.
Dziękuje za podpowiedzi które pozwoliły mi "wypocić" menu które mnie zadowala.
Nie jest programowo pewnie doskonałe ale spełnia swe zadanie i jest nieblokujące bo dioda led i pwm programowy działają bez spowolnienia a dzięki "superdebounce" okroiłem to do trzech przycisków.
Poniżej moje "wypociny":
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Do zobaczenia w następnym poście.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2014, o 05:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Tylko dlaczego w deklaracjach funkcji sa ich definicje?

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2014, o 09:15 
Offline
Użytkownik
Avatar użytkownika

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

Przenieś definicje funkcji z main poza nią a przed main umieść tylko ich deklaracje
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: 24 cze 2014, o 09:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 cze 2014
Posty: 54
Lokalizacja: Zabrze
Pomógł: 1

Witam.
Kolego Majster:"Tylko dlaczego w deklaracjach funkcji sa ich definicje?"
Pewnie dlatego że kompilator nie zgłosił błędu i program działa poprawnie.

Zrobiłem tak jak pisał kolega jacekk232 czyli deklaracje ponad main a na koniec programu za pętle nieskończoną "ciała" funkcji, skopilowałem, wgrałem i działa tak samo...

Zadam głupie pytanie: Czy chodzi tu o sztukę "dobrego" pisania programów, czy o może coś innego?
Za wyjaśnienie dziękuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2014, o 09:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

1 sztuka dobrego poprawnego pisania.
2 przy bardziej zaawansowanych projektach z includami plikow itp bywaja probleny. Czasem kompilacja przejdzie a program bedzie dzwnie sie zachowywal.

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



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

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

górnik_z_ambicjami napisał(a):
Zrobiłem tak jak pisał kolega jacekk232 czyli deklaracje ponad main a na koniec programu za pętle nieskończoną "ciała" funkcji, skopilowałem, wgrałem i działa tak samo...

Nie jestem pewien bo nie sprawdzałem, ale może u ciebie to zadziałało bo funkcje zdefiniowałeś wewnątrz main i również w main je wywołujesz. Ale gdybyś próbował te funkcje wywołać w innej funkcji poza main to mogło by nie zadziałać.

Jeśli się mylę to niech ktoś to sprostuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2014, o 19:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 cze 2014
Posty: 54
Lokalizacja: Zabrze
Pomógł: 1

Kolego jacekk232 masz racje co do wywoływania funkcji, np z pwm-a musiałem powyciągać funkcje sterowania silnikiem wentylatora do termometru zeby prędkość obrotowa była zależna od temperatury więc sie nie mylisz co do funkcji poza main.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2014, o 21:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

czyli tak jak napisalem predzej :)

majster napisał(a):
1 sztuka dobrego poprawnego pisania.
2 przy bardziej zaawansowanych projektach z includami plikow itp bywaja probleny. Czasem kompilacja przejdzie a program bedzie dzwnie sie zachowywal.

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO