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



Teraz jest 15 lis 2024, o 13:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 27 lut 2021, o 20:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Witam.
Pytałem wcześniej o pewne podpowiedzi dotyczące tworzone przeze mnie prostego menu w celu uczenia się języka C.
Koledzy mi dużo podpowiedzieli i coś tam się udało, ale chciałbym się dowiedzieć jak mogłem ten program napisać w sposób bardziej profesjonalny bo ten na pewno jest banalny :(

Największym problemem jest zła obsługa klawisza , klawisz nie zawsze działa poprawnie tzn. kierunek menu się zmienia ale naciśnięcie krótkie powoduje złą reakcje programu.
Jak mogę spróbować to lepiej obsłużyć ?

Pokaże program:

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


Próbowałem wysłać wideo ale coś nie poszło.
Dodatkowo w czasie przełączania wyświetlanie nie jest stabilne .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2021, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Cieszę się, że stringi na LCD już działają ;)
Co do menu, strasznie dużo tu ifów. Nie lepiej byłoby opakować to w jakąś strukturę? Mogłaby ona przechowywać np: pozycję menu, poziom menu, wskaźnik do funkcji wywoływanej w danej opcji itd.? I wskaźnik na taką strukturę łatwo byłoby też przekazać. To tak na gorąco wymyślam.

Polecam tu przy okazji jeden z najlepszych moim zdaniem poradników Mirka o strukturach i wskaźnikach przy konstrukcji gry w Snake'a: https://www.youtube.com/watch?v=MOgXcDJ29B0

A na przyszłość, warto moim zdaniem zainteresować się tematem list jednokierunkowych (linked lists). Technika może okazać się przydatna przy założeniu, że menu w przyszłości ma być rozbudowane i łatwo modyfikowalne.

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2021, o 23:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Tak na pewno ale w tym momencie większym moim problemem jest to że przycisk działa wolno i nie zdąży zawsze w określone zadanie w menu.
Czyli naciskam zmienia się kierunek_menu a miga inna sekwencja , dodatkowo dżinie miga menu jak naciskam przycisk.

Oczywiście zbudowanie struktury to fajna sprawa i dziękuję za wskazówkę i zajmę się analizą.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2021, o 11:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Co do przycisków to wejdź sobie na bloga Mirka tu:
http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html
Bardzo fajnie i szczegółowo opisuje obsługę klawisza i eliminację drgań styków.
U ciebie funkcja obsługi klawisza jest powiedziałbym delikatnie nie za bardzo, choć podobna do Mirkowej ale nie do końca.
No i ten Delay w tej funkcji.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2021, o 09:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Dzięki za podpowiedz . Masz racje ten _delay to troche słabe i wycofałem go. Spowodowało to trochę poprawę tzn szybkość działania przycisku , ale zmienna kier zmienia się za szybko tzn, przeskakuje o 2.
Chętnie coś pewnie zmiennie najpierw w obsłudze styku - masz może jakąś sprawdzoną procedurę?
Ale największy problem jest w tym że zmienna kier_menu nie zawsze z gazda się z przypisanym parametrem który miga.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2021, o 19:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

A do czego służy ci zmienna sw1 w linii "176 sw1^=1;", bo nie bardzo to widzę, chyba , że pominąłem coś w kodzie.
Widzę tylko jej deklarację w linii 22 i sprawdzanie ifem w linii 167, po czym ma się zmienić na stan przeciwny w linii 176.
No ale ta zmienna nigdzie w programie się nie zmienia i zawsze wynosi 0 tak jak ją zadeklarowałeś na początku programu. Chyba, że coś przeoczyłem.
Wstaw ten program po poprawkach, (już bez tego delaya) i pokaż gdzie zmienna sw1 jest jakoś przeliczana czy coś.
Może jestem już trochę ślepy i nie dowidzę albo coś pominąłem. Wskaż mi to.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2021, o 09:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Bardzo dziękuje za zainteresowanie tematem, już odpowiadam :
Założenie jest takie aby pozycja menu na którą chcę zatwierdzić po prostu migała, skorzystałem z przykładu z poradników gdzie Mirek pokazywał jak mogę zamigać np. w przerwaniu.
Ta zmienna sw1 służy tylko do tego celu.
Oczywiście dyleya wywaliłem i trochę poprawiło działanie programu.
Ale stoję trochę w miejscu bo jak zmieniam pozycje menu wciskając KEY1_PIN to pozycje menu przeskakują i migają ale raz- że dzieje się to bardzo brzydko bo do ustalenia miga dziwnie wszystko.
Druga sprawa jak już miga dane menu to chciałem drugim przyciskiem KEY2_PIN to zatwierdzić i wejść do obsługi kolejnych programów.
Problem polega na tym że nie mam pomysłu jak to zrobić.
Próbowałem pokazać wideo ale coś mi nie wyszło.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2021, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Trochę poprawiłem poprzez wprowadzenie struktury , ale te If y denerwują mnie , a ja nie mam pomysłu żeby było bardziej fachowo.
Myślałem żeby warunki zamknąć w jakiejś jednej funkcji podpowiedzcie jak mogę to zrobić?
Proszę o jakąś nawet małą wskazówkę

Pokaże zmodyfikowany program:

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: 3 mar 2021, o 20:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Próbuję poprawić obsługę styków udało mi się .
Wynikiem tego jak wciskam klawisz KEY1_PIN zmienna stan1=1 , jak puszczam stan1=0 wydawało by się że jest ok ale nie do końca :( napotkałem na problem:

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


I stało się tak że zmienna kier nie zmienia się co jeden tylko przelatuje dosyć szybko

Jakie warunki ustawić żeby zmienna przyjęła 1 na jeden obieg pętli (może jakiś zatrzask ) rozjaśnijcie mi proszę

Ustawienia funkcji wciśnięcia przycisku są takie:

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: 4 mar 2021, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Spróbuj tak:

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

_________________
http://www.avrboss.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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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