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



Teraz jest 24 mar 2026, o 03:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 17 maja 2013, o 18:52 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Witam
Od kilku dni buduję mój największy projekt programistyczny jak i sprzętowy. Z wykorzystaniem wyświetlacza TFT(ze sklepu atnel) + konwenter ATB do niego. Oraz Bluetooth,RTC,EEPROM,DS18B20,SD,Touch Panel TFT i kilka pozostałych. To będzie przypominać tablet :).
Jednak jak to bywa zawsze znajdzie się jakiś problem przez który trzeba przejść. Moim jest to że chcę zrobić takie przesuwanie menu na ekranie za pomocą touch panela tak jak jest to na telefonie że naciskam palcem np. po lewej stronie ekranu i przesuwam do prawej strony wtedy ekran się automatycznie zmieni na inny ale gdy nacisnę i puszcze na lewej stronie lub prawej stronie ekranu to nic ma się nie zmienić.

Chodzi mi tutaj na razie o sam pomysł (może być program)jak takie coś zrobić? tylko że nie ma być to na całym ekranie tylko w ściśle wyznaczonym miejscu.
Pewnie napiszecie ze wychodzę z motyka na słonce, ale mam już przygotowany w głowie na razie cały algorytm itp jak to ma działać
Proszę o pomoc

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2013, o 19:22 
Offline
Moderator
Avatar użytkownika

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

No trochę z motyką na słońce niestety ale dlatego, że chcesz programowo na AVR gestury obsługiwać ;) a jeszcze do tego przesuwanie MENU po ekranie :) hyhyhy śmiały pomysł

generalnie olbrzymie ułatwienie dla gestur daje ci wspaniały scalaczek na pokładzie konwertera STMPE811 no ale trzeba sobie doczytać jak się w nim to obsługuje i przygotować się na dane strumieniowe od niego - a to znowu dla AVR'ka będzie HEKTAR roboty ;) ... i sam nie wiem jak to się spisze ...

ale próbować możesz ..... a z programową obsługą gestur w AVR ... hmmm chyba polegniesz ? ale może się mylę ;) więc nie bierz tego tak do siebie ... bo ja sam nie mam nawet pojęcia jak by się za to zabrać

_________________
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: 17 maja 2013, o 19:46 
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

Chyba bierzemy te same piguły :lol: też myślę o zastosowaniu takiego rozwiązania przy wchodzeniu do opcji. W sumie to nie jest skomplikowane. Postaram się szybko coś skrobnąć, ale podpowiem, że do "płynnego przesuwania ekranów" z powodzeniem możesz użyć gotowej funkcji, która działa na 2 sposoby:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jeżeli chodzi o odczyt tego gestu to myślę, że zbierałbym punkty naciśnięcia do tablicy, a potem analizował zawartość i co pewien czas czyścił.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2013, o 20:28 
Offline
Moderator
Avatar użytkownika

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

No jeśli chodzi o przesuwanie całego ekranu to fakt można skorzystać ze sprzętowych komend sterownika tutaj - ale ja myślałem że chodzi o przesuwanie płynne jakiegoś regionu ??? może źle zrozumiałem ? ;)

Krauser napisał(a):
Jeżeli chodzi o odczyt tego gestu to myślę, że zbierałbym punkty naciśnięcia do tablicy, a potem analizował zawartość i co pewien czas czyścił.


Ja już teraz nie pamiętam szczegółów - ale jak już to może warto właśnie doczytać o tych sprzętowych możliwościach STMPE811 i właśnie je wykorzystać do tego celu - byłoby pewnie łatwiej bo on ma jakieś takieś właśnie "czary-mary", tylko trzeba nieco inaczej zainicjalizować scalaka no i zmienić sposób odczytu - on sam nadeśle taką tablicę i będzie gotowiec ;)

_________________
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: 17 maja 2013, o 21:17 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Mam pewien bardzo łatwy sposób tylko wymaga tego aby przerwanie od INT było wykonywane przy wciśnięciu jak i puszczeniu touch panela. To wtedy łatwo zrobić prosty gestur ale jest kłopot bo wtedy trudno rozpoznać kiedy został wciśnięty a kiedy nie.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2013, o 22:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2012
Posty: 238
Pomógł: 5

Z tymi gestami palcem po ekranie to mniej więcej tak bym zaczął to:

- Najpierw napisz tak program żeby mazając palcem po ekranie żeby za palcem się rysowała kropka linia ... coś jakby rysowanie palcem.

- Jak dojdziesz do tego, to uszykuj sobie w jakiejś tablicy regiony - kwadratowe miejsca przez który przesuniesz palec w celu przewijania czegoś.
Może to być np 10 regionów x1,y1 x2,y2 i jeszcze indeks indx i teraz każde przesuniecie palcem sprawdzasz czy jest regionie w tablicy i zmienną indx= wpisujesz 1 z tmpindx++, następnie palcem jesteś w tym samym regionie to nie inkrementujesz podręcznego tmpindx tylko czekasz na puszczenie ekranu lub nadal sprawdzasz czy palec nie pojawił się w jakimś kolejnym regionie, jeśli tak to w tym kolejnym robisz indx=tmpindx++ , i znowu to samo .. aż do puszczenia palca od ekranu.

- po puszczeniu palca sprawdzasz czy w odpowiednio kolejnych regionach było kolejno indx od 1 .. jeśli tak tzn że wykryto już jeden gest... a dlatego sprawdzasz kolejność bo chodzi o to żeby wykryć kierunek przesuwania palca

- można później regiony zacieśnić i przy wykryciu kolejnego regionu wykonać przysunięcie albo coś tam na ekranie.


Niestety kodu nie pokaże bo jeszcze go niemam, i tak samo z LCD ... też niemam dotykowca :)

Pozdrawiam
XBary



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2013, o 23:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Średnio się da to zrobić... Algorytm może i nie jest skomplikowany, ale barierą są zasoby sprzętowe, a dokładniej moc przerobowa AVR oraz wielkość pamięci RAM sterownika SSD1963 (ok. 1.2 MB co pozwala na pamiętanie tylko 5 pełnych ekranów dla TFT 3.5'' oraz 3 ekranów dla 4.3'').

A z regionami to już w ogóle hmmm ciężka sprawa. Nie mówię, że się nie da. Ale z mojego doświadczenia, przy tym zestawieniu sprzętowym szybko natkniesz się na ścianę w postaci niewydolności procka i ilości pamięci w sterowniku i procku.

Z pełnymi ekranami dałoby się w miarę prosto zrobić (nie wiem, czy dokładnie z takim efektem płynności) i miałbyś 5 ekranów głównych przesuwanych jak w Androidzie. Dla 3.5 cala oczywiście, to nie telewizor niestety i nie obowiązuje reguła "więcej cali = lepiej", właśnie gorzej, bo pamięć sterownika ta sama, a jeden ekran zajmuje więcej pamięci no i możesz szybko przełączać się między mniejszą ilością buforów (pełnych ekranów narysowanych w tle) na większym ekranie niż na mniejszym.

Poza buforowaniem możesz oczywiście rysować w momencie przełączenia, ale wrażenia estetyczne tego rozwiązania są hmmmm... no właśnie...

Poczytaj sobie o podwójnym buforowaniu i nieudokumentowanych możliwościach sterownika SSD1963 z GreenBooka.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2013, o 08:08 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Tak tylko że ja nie chcę przesuwać ekrany płynnie tylko przeskakiwać z jednego do drugiego bo na ekranie u góry będzie cały czas czarny pasek na którym będzie zegar poziom baterii stan bluetooth itp. W temacie napisałem że mam problem z tymi gesturach czy jakoś tak. Tylko jak wykryć puszczenie palca z ekranu? Tylko przy wciskaniu wykonuje się przerwanie.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2013, o 08:36 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Może się mylę ale z tego co pamiętam Mirek pokazywał na jednym ze swoich filmów możliwości tego wyświetlacza z obsługą ekranu dotykowego i na tej prezentacji był parametr odpowiadający za siłę nacisku na ten ekran dotykowy, może ten parametr pozwoli ci wykrywać puszczenie palca z ekranu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2013, o 08:40 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Wiem o tym właśnie robię takie testy że sprawdzam aktualną wartość nacisku z wcześnie zapisaną i jeśli jest to samo to ekran jest zwolniony. Nawet działa tylko że jak trzymam to i tak co trochę przeskakuje, ale jestem blisko dodam jeszcze jedna jeden zapis i może wtedy się uda :).

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2013, o 12:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

A po co kombinować z siłą nacisku? A jak ktoś będzie przesuwał paluchem z lewej do prawej z taką samą siłą to co wtedy? No nie przesunie mu ekranu. To nie jest dobre rozwiązanie.

Ja bym zrobił tak: robisz np. bufor cykliczny o rozmiarze np. 100 ostatnich 100 dotknięć. Po każdej setce (przykładowo) bierzesz na warsztat tą tablicę i analizujesz: kierunek, zwrot, szybkość, odstęp czasu. Jeśli próbka zerowa zaczyna się w x=0 i y=12, a próbka setna x = 120, y = cokolwiek, a pomiędzy nimi wartości między 0 a 120 jeśli chodzi o x i cokolwiek jeśli chodzi o y (albo 12 +/- próg jakiś), to już masz pierwszą przesłankę.

Czas - zakładasz sobie np. sekundę na taki "gest". Liczysz od pierwszej próbki. Przekracza sekundę - odrzucamy.
Odstęp pomiędzy próbkami większy od 10 ms -> liczymy od nowa.

I inne deskryptory jak szybkość, przyspieszenie, wariancja (rozstrzelenie) itp. i możesz stworzyć dosyć dobry model takiego gestu i go potem wyłuskać z twej tablicy i zaklasyfikować.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2013, o 15:24 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Nie myślałem ze to takie łatwe.
program zawiera kilka linijek kodu które umieszczamy w pętli głównej.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Po prostu robię historię siły nacisku w 3 zmiennych i gdy wszystkie są takie same, Czyli puszczono ekran.
W 3 i 4 IF'ie te duże liczby są to punkty przekątne 2 kwadratów. 1 kwadrat odpowiada za miejsce naciśniecie a drugi za puszczenie.
Program działa wyśmienicie i nieprawdą jest że uda się tak wcisnąć ekran by siła nacisku była jednakowa Jeśli jednak zdarzyło by się takie coś to można dodać kolejna zmienną analogicznie do pozostałych. Jestem sam w szoku :D Grunt że działa :)
Oczywiście mój kod nie obsługuje skomplikowanego gestura tylko proste przesuwanie.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2013, o 00:10 
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

Janadamis napisał(a):
Tak tylko że ja nie chcę przesuwać ekrany płynnie tylko przeskakiwać z jednego do drugiego bo na ekranie u góry będzie cały czas czarny pasek na którym będzie zegar poziom baterii stan bluetooth itp.

Dodaj sobie taką funkcję do blokowania obszaru 1 ekranu na wyświetlaczu co pozwala w praktyce uzyskać stały pasek(paski) i przesuwać ekran:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tak wygląda działanie tej funkcji:

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2013, o 06:20 
Offline
Moderator
Avatar użytkownika

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

Matko jedyna ;) ...... Krauser .... co ty wyprawiasz z tym LCD'kiem TFT'kiem ? ;) ..... taką mam prośbę czy nie mógłbyś tego co tu wyżej napisałeś wstawić do działu "DIY programistyczne" ..... ???? tylko z tym przykładem kodu wyżej, nie musi być więcej ale do tego ten filmik ;) (proszę) .... Później łatwiej będzie szukać na forum tego co ty wyprawiasz .... no jak zwykle muszę szczękę zbierać i składać ...

_________________
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: 29 maja 2013, o 19:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

WOW, Krauser, ja też zbieram szczenę z podłogi. ;)
Konkurencja dla Androida rośnie, hihihi

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2017, o 22:09 
Offline
Nowy

Dołączył(a): 26 kwi 2017
Posty: 1
Pomógł: 0

Robi wrażenie. Ogromne.
Jaki to wyświetlacz i z jakim prockiem współpracuje?
Chodzi mi po głowie pewien sterownik i TFT znakomicie rozwiązałby mi problem przycisków...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2017, o 21:01 
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

Tu jest więcej ATB DROID ;)
Komponenty są ze sklepu Atnel:
https://sklep.atnel.pl/pl/p/Konwerter-ATB-GLCD-TFT/53
https://sklep.atnel.pl/pl/p/Wyswietlacz ... D-kolor/54
Ostatnio ich nie widziałem, więc pozostaje opcja kupienia z drugiej ręki. Może komuś się kurzy. Można też znaleźć podobny ze sterownikiem SSD1963 i trzeba dorobić płytkę do konwersji poziomów. Jeśli użyty jest inny kontroler dotyku to będzie więcej zabawy z programowaniem

_________________
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: 17 ] 

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO