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



Teraz jest 15 lut 2026, o 18:05


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 27 lis 2015, o 16:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 501
Lokalizacja: Siedlce
Pomógł: 9

Jak wiemy z BB mamy bibliotekę termometru na DS18B20 w której zmienna:
Składnia: [ Pobierz ] [ Ukryj ]
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
mówi nam o tym czy mamy do czynienia z temperaturą poniżej 0,0 °C czyli ujemnej czy od 0,0 °C wzwyż(dodatniej). Natomiast warunek wyświetlenia minus wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I teraz do rzeczy wymyśliłem sobie że gdy termometr przekroczy tą granicę temperatur(czyli wskoczy na ujemną lub odwrotnie) to dostanę sygnał dźwiękowy ale tylko raz. Jak to napisać bo w książce ta operacją wykonania pomiaru i wyświetlania jest zawarta w pętli wile(1) czyli pika mi w kółko jak zrobić żeby piknęło tylko raz gdy nastąpi zmiana z subzero==1 na subzero==0lub odwrotnie

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 16:24 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 774
Pomógł: 40

Nie wiem jak w C to napisać,ale dodaj sobie flagi. Jak przechodzi przez zero to zmienia sie stan flagi. Buzer zadziała i ustawia z powrotem flagę tak jak była.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 18:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Hej ,

Spróbuj tak jak kolega wyżej z flagami

uint8_t sygnal;
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: 27 lis 2015, o 18:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
RadekB86 napisał(a):
...wymyśliłem sobie że gdy termometr przekroczy tą granicę temperatur(czyli wskoczy na ujemną lub odwrotnie) to dostanę sygnał dźwiękowy ale tylko raz.

To pokaż jak to zastosowałeś, a my pomożemy przerobić na jedno piknięcie.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 19:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 501
Lokalizacja: Siedlce
Pomógł: 9

kicajek napisał(a):
To pokaż jak to zastosowałeś, a my pomożemy przerobić na jedno piknięcie.


to wkleiłem w pętle wile(1)
Kod:
if(subzero)buzzer_zmian_ujemnej();




Kod:
void buzzer_zmian_ujemnej(void)
{
   PORTC |=(1<<PC7);
   _delay_ms(100);
   PORTC &=~(1<<PC7);
}

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 19:09 
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

topic7402.html

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 19:15 
Offline
Nowy

Dołączył(a): 24 wrz 2015
Posty: 14
Lokalizacja: Oława
Pomógł: 3

RadekB86 napisał(a):
I teraz do rzeczy wymyśliłem sobie że gdy termometr przekroczy tą granicę temperatur(czyli wskoczy na ujemną lub odwrotnie) to dostanę sygnał dźwiękowy ale tylko raz. Jak to napisać bo w książce ta operacją wykonania pomiaru i wyświetlania jest zawarta w pętli wile(1) czyli pika mi w kółko jak zrobić żeby piknęło tylko raz gdy nastąpi zmiana z subzero==1 na subzero==0lub odwrotnie


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


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


------------------------ [ Dodano po: 7 minutach ]

Dla przejścia temperatury w drugą stronę będzie analogicznie podobnie. Ale to już pozostawiam Tobie do przemyślenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 19:24 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Zero to temp. dodatnia czy ujemna? Przydałaby się histereza. Bo jak termometr co 1s będzie odczytywał -0.1 lub +0.1st.C to będzie co chwilę bzyczał. Można zamiast histerezy uśredniać ileś kolejnych pomiarów i badać przejście przez zero wartości uśrednionej.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2015, o 19:35 
Offline
Nowy

Dołączył(a): 24 wrz 2015
Posty: 14
Lokalizacja: Oława
Pomógł: 3

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

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

Histereza to 0.0 .. +1.0 oC



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

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