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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 7 kwi 2025, o 04:17


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 24 ] 
    Autor Wiadomość
    PostNapisane: 9 lip 2012, o 08:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 cze 2012
    Posty: 420
    Lokalizacja: Poznań
    Pomógł: 5

    Na początek przygody z C na ATB postanowiłem sobie zrobić termostat.
    No więc spiąłem sobie DS18x20 i LCD i diodki i zacząłem się bawić ... i wszystko byłoby OK dopóki nie zapragnąłem mieć jak to w porządnym termostacie wygląda histerezy. No bo wcześniej to sprowadza się to tylko do tego jednego warunku:

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


    No, ale z histerezą już nie było (u mnie) tak prosto i nie udało mi się tego ominąć nie dodając kolejnej zmiennej. Oczywiście całość z założenia działa już prawidłowo, więc tutaj właściwa część programu sterująca pracą TERMOSTATU (można śmiało korzystać), ale moim zdaniem (tak na oko) na pewno można to zrobić jakoś bardziej elegancko niż ja to zrobiłem ... tylko nie mogę wymyślić jak :)

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


    PYTANIE/ZADANIE 4 brzmi :)

    Czy można jakoś rozwiązać ten problem nie korzystając z dodatkowej flagi "alarm" itp. Tzn napisać tak warunki aby korzystać tylko z tych trzech zmiennych:
    temp_aktualna
    temp_progowa
    temp_histerezy

    Bardzo mnie to ciekawi 8-)

    Na osoby, które rozwiążą ŁAMIGŁÓWKĘ nie czekają żadne nagrody :) Rozwiązania można nadsyłać do ... 1 stycznia 2013 :)

    Pozdrawiam! :)

    DO MODERATORA:
    Może lepiej umieścić tego w:Strona główna » Strona główna forum » PROGRAMOWANIE » Język C dla AVR

    _________________
    Wysłane z nowego ATB 1.05beta + ATB ETHERNET



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 09:02 
    Offline
    Użytkownik

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

    OD Moderatora:

    Zastanowię się co zrobić z twoim postem :)

    OD Sun-a

    Oczywiście że można nawet w mojej wytrawiarce sprawdzam 2 warunki i nimi steruję grzałką

    - czyli czy osiągnięto zadana temp .... po prostu podglądam sobie to co idzie na LCD
    - czy spadła poniżej o xxx stapni .... tu również podglądam to co idzie na LCD

    i jeśli wartość zmiennej np. x = wartości b to grzałka jest włączana i grzeje dokąd x nie osiągnie wartości c

    tak w skrócie :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 09:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lis 2011
    Posty: 534
    Lokalizacja: Mierzyn
    Pomógł: 9

    Sun sam robiles wyrtawiareczke ? Przymierzam sie do zrobienia. Masz jakies doswiadczenie ? Co polecasz :)

    _________________
    pozdrawiam
    Jachu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 09:41 
    Offline
    Użytkownik

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

    tak sam robiłem jest tu na forum wszystko :)
    topic863.html

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 09:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lis 2011
    Posty: 534
    Lokalizacja: Mierzyn
    Pomógł: 9

    SunRiver napisał(a):
    tak sam robiłem jest tu na forum wszystko :)
    topic863.html


    UU ale ze mnie "gapa" ;) Znalazlem thx wielkie :)

    _________________
    pozdrawiam
    Jachu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 15:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 cze 2012
    Posty: 420
    Lokalizacja: Poznań
    Pomógł: 5

    SunRiver napisał(a):
    Oczywiście że można nawet w mojej wytrawiarce sprawdzam 2 warunki i nimi steruję grzałką

    - czyli czy osiągnięto zadana temp .... po prostu podglądam sobie to co idzie na LCD
    - czy spadła poniżej o xxx stapni .... tu również podglądam to co idzie na LCD

    i jeśli wartość zmiennej np. x = wartości b to grzałka jest włączana i grzeje dokąd x nie osiągnie wartości c

    tak w skrócie :)
    Trochę nie rozumiem ... ten drugi warunek jest zagnieżdżony w tym pierwszym?
    Ty histerezę chyba rozwiązałeś nieco inaczej tzn masz jakby temp min i max i sprawdzasz gdzie aktualnie jesteś, tak?

    w pseudo kodzie tak:
    min=30;
    max=40;
    if (temp < temp_min) grzej;
    if (temp > temp_max) nie grzej;

    Ale coś mi tu jednak nie gra, bo jeśli założymy wartości jak powyżej to przy 31' odłączy się grzałka... no chyba że rzeczywiście źle zrozumiałem Twój opis warunków. Jakbyś mógł słoneczko to rozpisz to chociaż jako pseudo kod używając "zrozumiałych" zmiennych a nie a b c x xx itp :)

    _________________
    Wysłane z nowego ATB 1.05beta + ATB ETHERNET



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 17:27 
    Offline
    Użytkownik

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

    Kolego NIEBO!, a nie myślał kolega nad zastosowaniem histerezy czyli pewną jakby to powiedzieć tolerancją temperatury przy załączaniu i wyłączaniu grzałki?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 17:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 paź 2011
    Posty: 307
    Lokalizacja: Lbt
    Pomógł: 8

    Nie wiem czy ma to sens i czy ktokolwiek zrozumie co mam na myśli, ale można robić tak, żeby temperatura progowa zmieniała się raz w liczbę parzystą, a raz w nieparzystą po przejściu pętli i w ten sposób i później tylko sprawdzać czy przy dzieleniu przez 2 zostaje reszta, która działałaby jak flaga.

    _________________
    Ujemna delta to dopiero początek zabawy...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 18:01 
    Offline
    Użytkownik

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

    Ok, to ja moją propozycję rozpiszę wg. pseudokodu

    temp_zadana
    temp_odczytana
    histereza

    if(temp_odczytana<temp_zadana)

    załącz grzałkę

    if(temp_odczytana+histereza>temp_zadana)

    wyłącz grzałkę

    Nie wiem czy to ma sens ale mi się wydaję że powinno pomóc.



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

    Dołączył(a): 15 cze 2012
    Posty: 420
    Lokalizacja: Poznań
    Pomógł: 5

    MichalXY napisał(a):
    Kolego NIEBO!, a nie myślał kolega nad zastosowaniem histerezy czyli pewną jakby to powiedzieć tolerancją temperatury przy załączaniu i wyłączaniu grzałki?
    Nie wiem czy kolega czytając po raz pierwszy zadanie zrozumiał, że właśnie to jest moją zagwozdką :) To co Ty proponujesz później "bardzo przejrzyste" i powiem Ci szczerze, że moje pierwsze warunki tak właśnie wyglądały i na pierwszy rzut oka to działa, jednak jak podstawisz konkretne wartości okaże się, że:

    na przykład zmienne przy wejściu do pętli przyjmą takie wartości:
    Cytuj:
    temp_zadana=25
    temp_odczytana=24
    histereza=5


    if(temp_odczytana<temp_zadana) (prawda)

    załącz grzałkę


    if(temp_odczytana+histereza>temp_zadana) (24+5>25) (też prawda - zonk! :) )

    wyłącz grzałkę


    Czyli jeżeli F-CPU mała, a urządzenie wykonawcze to przekaźnik to mamy z przekaźnika ładny "KLIKACZ" :)

    miszczo napisał(a):
    Nie wiem czy ma to sens i czy ktokolwiek zrozumie co mam na myśli, ale można robić tak, żeby temperatura progowa zmieniała się raz w liczbę parzystą, a raz w nieparzystą po przejściu pętli i w ten sposób i później tylko sprawdzać czy przy dzieleniu przez 2 zostaje reszta, która działałaby jak flaga.
    Twoje obawy się sprawdziły... ja nie rozumiem. :lol: Przecież temperatura progowa ma być niezmienna ...np 90stopni ... chcesz żeby raz miała 91, a raz 90? co to zmieni w stosunku do histerezy, która może wynieść np 20'C... rozwiń pomysł


    Czekam na dalsze pomysły :)

    _________________
    Wysłane z nowego ATB 1.05beta + ATB ETHERNET



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 21:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 maja 2012
    Posty: 256
    Pomógł: 3

    MichalXY napisał(a):
    Ok, to ja moją propozycję rozpiszę wg. pseudokodu

    temp_zadana
    temp_odczytana
    histereza

    if(temp_odczytana<temp_zadana)

    załącz grzałkę

    if(temp_odczytana+histereza>temp_zadana)

    wyłącz grzałkę

    Nie wiem czy to ma sens ale mi się wydaję że powinno pomóc.

    Tak zadziała.

    zmienna. temp teraz >> temp za 5 minut
    temp_zadana . 34 >> 34
    temp_odczytana . 30 >> 40
    histereza . 5 >> 5

    if(temp_odczytana<temp_zadana) // 30<34 True temp rośnie do 40<34 False, temp spada aż do 34, gdzie znów True

    załącz grzałkę

    if(temp_odczytana>temp_zadana+histereza) // 30>39 False temperatura rośnie aż do 40>39 True, gdzie wyłączy grzałkę i spada będąc False
    wyłącz grzałkę

    A tak sobie myślę, że histeraza nie powinna w dwie strony lecieć? Że włączanie grzałki dopiero przy temp_zadana-histereza?


    Przepraszam, nie ogarniam bbcode i nie wiem jak dużo spacji wstawić, by bardziej zrozumiale było ;)



    Ostatnio edytowano 9 lip 2012, o 21:42 przez ajek, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lip 2012, o 21:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    No to ja tak na szybko coś takiego skleciłem
    temp = to temperatura maksymalna
    pomiar = wynik pomiaru


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

    O kurka, ale wy już wymysliliście prawie wszystkie kombinacje :)
    A ja normalnie jak ten Filip ............ ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 12:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 cze 2012
    Posty: 420
    Lokalizacja: Poznań
    Pomógł: 5

    Malutki_27 napisał(a):

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

    Podałeś w końcu rozwiązanie w formie jakiej oczekiwałem :) Zgrabne i eleganckie. Brawo! Byłem nawet blisko takiej samej konstrukcji tego, tylko widocznie pokręciłem warunki matematycznie i przez to nie działało prawidłowo, więc poszedłem w przysłowiowe maliny i całość skomplikowałem do postaci jak w pierwszym poście, a później mając już zły trop nie dało się zmienić toku myślenia :) Wiedziałem, że taką konstrukcję można stworzyć tylko za diabła ... eeeh. Nawet myślałem, że Słoneczko ma tak samo, ale nie podał szczegółów.

    Sprawdziłem to na żywym organizmie Maleńtas i działa :D Chyba przyznam Ci jakąś nagrodę :D :D :D Np. marchewkę :)

    Pozdrawiam!

    _________________
    Wysłane z nowego ATB 1.05beta + ATB ETHERNET



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 12:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 gru 2011
    Posty: 449
    Pomógł: 4

    Postaw mu browara. Korespondencyjnie :mrgreen: :mrgreen: :mrgreen:

    O ile jest pełnoletni :roll:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 14:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Niebieski cieszę się że udało mi się pomóc :)

    Uff dobrze że marchewkę bo już obawiaem się że jakąsiś wędką po garbie dostanę ;)

    Jest pełnoletni i to podwójnie :roll:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 14:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 gru 2011
    Posty: 449
    Pomógł: 4

    O, to tak, jak ja. Też podwójnie, z małym naddatkiem :mrgreen:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 16:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Bo Ty, Sun, i ja jesteśmy w podobnym wieku ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 16:28 
    Offline
    Użytkownik

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

    a tam zaraz malutki a tam zaraz :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 17:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    SunRiver napisał(a):
    a tam zaraz malutki a tam zaraz :)


    Ty tu a tam nie zarazuj :P

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    Bo jeszcze jaka epidemia wyniknie ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 19:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 cze 2012
    Posty: 420
    Lokalizacja: Poznań
    Pomógł: 5

    A nie wydaje się Wam, że po pierwszej 18-ce ten życiowy RTC zlicza jakby dwa razy szybciej ... i za diabła nie idzie przetaktować, a najbardziej to widać po pociechach ... kiedyś w PCtach był taki exstraśny przycisk TURBO, który defacto spowalniał :) Fajnie by było sobie tak czasem wcisnąć ....

    ale się OT zrobił :) Ale co tam - zadanie rozwiązane, więc pobiadolić można :)

    _________________
    Wysłane z nowego ATB 1.05beta + ATB ETHERNET



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 20:59 
    Offline
    Użytkownik

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

    NIEBO! napisał(a):
    ale się OT zrobił :) Ale co tam - zadanie rozwiązane, więc pobiadolić można :)


    Tia a teraz przyjacielu Niebiański ...

    przyjdzie leśniczy i wy..... (goni) nas z lasu :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 22:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 gru 2011
    Posty: 449
    Pomógł: 4

    Malutki_27 napisał(a):
    Bo Ty, Sun, i ja jesteśmy w podobnym wieku ;)



    My młodzi, My młodzi nam .... wiedza nie zaszkodzi :mrgreen: :lol:

    ... chciałoby się zaintonować :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lip 2012, o 23:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 cze 2012
    Posty: 420
    Lokalizacja: Poznań
    Pomógł: 5

    SunRiver napisał(a):
    przyjdzie leśniczy i wy..... (goni) nas z lasu :)
    Myślisz, że od razu wy..... (goni)? Jeśli tak, to pozwolisz, że napoję tylko konia Maleńtasa, bo mu strasznie w pysku zaschło i językiem wilgoć z powietrza wyłapuje :lol: i już mnie tu nie ma :)

    _________________
    Wysłane z nowego ATB 1.05beta + ATB ETHERNET



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

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    No i ^&$^%$#$%# kuń się napił i powiedział :shock: że dalej nie pojedzie :lol:



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

    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