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



Teraz jest 12 gru 2024, o 05:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 21 sie 2013, o 15:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 kwi 2013
Posty: 38
Lokalizacja: Warszawa
Pomógł: 0

Robię w złożeniu prosty układzik do sygnalizacji poziomu cieczy do swojego samochodu.
Natrafiłem na banalny problem nad którym głowię się na tyle dlugo że aż postanowiłęm napisać na forum.

Chodzi o to że, uruchamia mi się alarm dźwiękowy, to mi ładnie działa. Natomiast nie mogę zaprogramować przedziału czasu miedzy kolejnymi uruchomieniami alarmu.

Wygląda to tak że:
1) na buzer idzie seria impulsów które go włączają i wyłączają na przemian.
2) Chce zrobić żeby poszła taka paczka impulsów potem przerwa powiedzmy 1 minuta i znowu paczka.

Kod do generacji dźwięku wygląda tak :
znacznik - to zmienna zwiększająca wartość w przerwaniu od timera sprzętowego.

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


Ten fragment kodu jest częścia funkcji odpowiedzialnej za wykrywanie poziomu płynu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Napisałem to bez użycia przerwań bo akurat tak było wygodniej.
Fizycznie do procka podłaczone są 3 elektrody + elektroda masy. Woda zamyka obwód i palą się diody.

Jak w programie głownym napisać kod żeby dźwięk był na przykład tak: seria pików + 1minuta przerwy .... seria pików.
Niby to proste jak drut a piszę już chyba ze 20 wersję kodu i nie działa jak trzeba.

Kod wstawiamy przy pomocy syntax=c - Różowy J.

_________________
auto gaz, serwis instalacji LPG, Instalacje LPG



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 16:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
To jest bardzo proste :). Jeśli masz timer sprzętowy to stwórz sobie zmienną i ją inkrementuj z przerwaniu. Teraz w programie robisz pętlę if mniejsza wartość zmiennej od jakieś wartości to uruchamiasz serię impulsów. Jeśli wartość większa to wylaczasz buzer i inkrementujesz aż minie przykładowo minuta. Wtedy zerujesz zmienną i rozpoczyna się od początku sekwencja.

Pozdrawiam
R.L.



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

Dołączył(a): 24 mar 2012
Posty: 72
Pomógł: 5

Tak jak lemosek pisze. Może wyglądać to np tak:




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



P.S. Nie wiem jakie masz taktowanie i ustawiony timer ale to na takiej zasadzie powinno działać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 22:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 kwi 2013
Posty: 38
Lokalizacja: Warszawa
Pomógł: 0

Napisałem to w ten sposób, działa ale funkcja wygląda paskudnie.
Funkcja wysyła 30 pików potem wchodzi na około minute w stan ciszy.

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

_________________
auto gaz, serwis instalacji LPG, Instalacje LPG



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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