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



Teraz jest 22 sty 2026, o 23:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 12 gru 2016, o 20:08 
Offline
Nowy

Dołączył(a): 12 gru 2016
Posty: 1
Pomógł: 0

Witam. Jestem na forum nowy i chciałbym Was prosić o małą podpowiedź. Muszę na zaliczenie wykonać program, który działa następująco. Jest to tzw. Papuga. Użytkownik korzystając z przycisku przez 10 sekund wprowadza "kod" coś a'la alfabet Morse'a powiedzmy. Dajmy na to trzy kreski i kropkę. Po tym jak wprowadzony już zostanie ciąg tych "kresek i kropek" program za pomocą diody świecącej lub buzzera ma go powtórzyć. Czyli w ciągu 10 sekund zaświecić diodą w tym samym czasie i na tak samo długo jak zrobił to użytkownik. Niby nic skomplikowanego, ale zupełnie nie wiem od czego zacząć. Myślałem o wykorzystaniu Timera. Opiszę przykładowo jak sobie wyobrażam działanie programu. Użytkownik podchodzi do zestawu, dostaje komunikat na wyświetlaczu LCD, że może zacząć wprowadzać kod i ma na to 10 sekund. Czas start. Mijają 3 sekundy, użytkownik wciska przycisk i trzyma go przez 2 sekundy, następnie puszcza na 1 sekundę i znów wciska trzymając go 1 sekundę. Potem mijają 3 sekundy i program przechodzi z etapu zapamiętywania tych czasów do etapu mrugania diodą. Myślałem nad tym i wydaje mi się, że powinienem użyć jednego Timera do liczenia czasu gdy przycisk jest wyłączony a drugiego gdy przycisk jest wciśnięty. Chciałbym te czasy zapisywać w postaci zmiennych, aby móc przy pomocy delayów sterować świeceniem diody. Ale nie mam pojęcia jak zliczony przez Timer czas zapisać jako zmienną. Mógłbym prosić o jakieś podpowiedzi albo nakierowanie na coś konkretnego? Oglądałem poradniki Pana Mirosława Kardasia i wiem jak wykorzystać Timery, np do zmiany stanu diody, ale nie mam pojęcia jak ten stan utrzymywać przez określony, narzucony z zewnątrz czas.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 20:40 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8629
Pomógł: 338

prosta sprawa ...
robiłem coś podobnego z servem modelarskim co widać tutaj :P



musisz odczytywać i zapisywać wartosci z klawisza ... a potem je odtworzyć na innym pinie ...

opisz jak chcesz się za to zabrać ... pokaż co już zrobiłeś i pomożemy :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 20:48 
Offline
Moderator
Avatar użytkownika

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

No tak ale co to ma wspólnego z działem DIY ?

_________________
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: 12 gru 2016, o 22:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 wrz 2014
Posty: 1530
Lokalizacja: Warszawa
Pomógł: 55

To fakt - dział trzeba zmienić.
Generalnie tak - przyciśnięcie klawisza zeruje timer np. programowy, puszczenie przepisuje jego wartość do tablicy a[0], kolejne naciśnięcie do a[1] itd. Zmienna ile_razy inkrementuje się o jeden przy każdym naciśnięciu.
Odtworzenie używa tego samego timera i tej samej tablicy, delay'e nie są potrzebne.
10 sekund to wartość max tego samego timera - czyli jesli on dojdzie do max i ile_razy>0 odtwarza, a potem zeruje ile_razy

_________________
--... ...-- - --- -- . -.-



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 22:37 
Offline
Użytkownik

Dołączył(a): 16 paź 2014
Posty: 92
Lokalizacja: Toruń
Pomógł: 0

Albo zrobić tablicę na 100 elementów. Co 100ms sprawdzać stan klawisza i zapisywać go do kolejnej komórki. Później zostaje już tylko w pętli ustawiać stan diody jako kolejne wartości z tejże tabeli.

Wysłane z mojego Nexus 4 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 00:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

1. Jeden timer wystarczy
2. Tablica 2 x MAX ILOŚĆ WCISKÓW w zasadzie obowiązkowa, ale to zależy od tego ile może trwać pojedynczy wcisk/przerwa i z jaki jest minimalny dopuszczalny interwał (dokładność odwzorowania sekwencji). Pierwszy element pary w tablicy to stan przycisku, drugi to czas jego trwania pobrany z timera zerowanego przy każdej zmianie stranu przycisku. Po każdej zmianie zwiększeniu o 2 ulega również zmienna sterująca tablicą. Można oczywiście kombinować na pojedynczym elemencie tablicy, ale jak pisałem wszystko zależy od założeń początkowych.
W jednym z moich sterowników w podobny właśnie sposób nagrywana i odtwarzana jest sekwencja ruchu joystikiem tylko tam zapamiętuje wartość adc.

_________________
http://www.sylwekkuna.com



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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