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



Teraz jest 22 mar 2026, o 20:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 14 lip 2013, o 20:58 
Offline
Nowy

Dołączył(a): 14 lip 2013
Posty: 13
Pomógł: 0

Witam!
Jestem początkującym programistą i postanowiłem się zmierzyć z tematem sterowania czasowego do domowej suszarki do rąk.
Jej działanie w skrócie chciałbym rozwiązać w następujący sposób: mikrokontroler Atmega 8 połączony z microswitchem oraz przekaźnikiem na 5v.Po nacisćnięciu i zwolnieniu microswitcha następuje załączenie przekaźnika na ok 20 sekund oraz uruchomienie silnika z grzałką poprzez przekaźnik.
Tyle w teorii.W praktyce natomiast udało mi się zbudować cały układ oraz napisać kod w C,który załącza przekaźnik na czas wciśnięcia microswitcha (kod na podstawie tego z książki "Mikrokontrolery Język C Podstawy Programowania" str. 179)
Dlatego postanowiłem napisać tutaj i poprosić o jakieś sugestie i wskazówki jak ten problem programowo rozwiązać...
Przeszukałem już spory kawałek internetu,jednakże nie trafiłem na nic konkretnego ani przydatnego...
Czy mam użyć do tego przerwań,czy jest jakiś łatwiejszy sposób?
Bardzo chętnię zobaczyłbym przykładowy kod...
Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lip 2013, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 gru 2012
Posty: 147
Lokalizacja: Zadupie/Wrocław
Pomógł: 6

Jest prosty sposób. Po wykryciu, że przycisk został wciśnięty włączasz przekaźnik, pchasz delaya, który będzie wykonywał opóźnienie o te 20s, a następnie wyłączasz przekaźnik.

Przykładowo:

(oczywiscie piny i porty możesz zamienić na odpowiadające twoim połączeniom albo skorzystać z makr opisanych w rozdziale o LCD)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oczywiście założyłem, że przekaźnik włączasz, podając stan wysoki na port - w przeciwnym razie należałoby zamienić kolejność instukcji wystawiających jedynkę i zero logiczne na port)

Pytanie brzmi, czy uC ma wykonywać jeszcze jakieś działania, czy tylko sterować przekaźnikiem? Bo jeśli miałby robić jeszcze coś, to moim zdaniem najlepiej będzie zastosować tzw. Timer programowy, o którym Mirek szerzej pisał w rozdziale "Wstęp do systemów czasu rzeczywistego".

Ale jeśli ma być jak najprostsze choć wcale nie eleganckie rozwiązanie to tak jak pisałem - wykrycie + delay


Autor postu otrzymał pochwałę

_________________
sig off ;(



Ostatnio edytowano 14 lip 2013, o 21:15 przez krokodyl1220, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lip 2013, o 21:13 
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

W momencie wykrycia naciśnięcia klawisza wstawiasz np. taki kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oczywiście pod warunkiem że nic innego nie ma robić, bo w tym momencie na 20 sekund będzie zablokowany i będzie sobie krążył przez ten czas w pętli delay.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 20:04 
Offline
Nowy

Dołączył(a): 14 lip 2013
Posty: 13
Pomógł: 0

Mój mikrokontroler steruje tylko przekaźnikiem,nie ma do niego podpiętych innych urządzeń oprócz microswitcha...
Samo wstawienie w odpowiednie miejsce _delay_ms() powinno pomóc?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 20:35 
Offline
Użytkownik

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

Najprościej tak



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 gru 2012
Posty: 72
Pomógł: 6

W temacie naszego autora tego tematu: z elektrody wyśpećjalizowany gość utrudnia życie ludziom początkującym ;)
A ja myślałem że o tym gościu to tylko bajki...

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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 21:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 gru 2012
Posty: 147
Lokalizacja: Zadupie/Wrocław
Pomógł: 6

Śpece elektrodowi... Jak zwykle najmądrzejsi i nieomylni :? "Ty, gdybyś chciał ołówek naostrzyć, wołałbyś o kamienie młyńskie!"


No, ale nie o tym temat ;) Panie cdominik, napisałeś pan?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2013, o 21:59 
Offline
Nowy

Dołączył(a): 14 lip 2013
Posty: 13
Pomógł: 0

Witam!
Właśnie przed chwilą udało mi się ukończyć cały projekcik i wszystko działa poprawnie.Dziękuję za podpowiedzi i wyrozumiałość,bo tak szczerze to myślałem że zostanę na forach obsmarowany i odesłany do google :) A jednak tak się nie stało.Dziękuję jeszcze raz i pozdrawiam :)



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

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