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 12 kwi 2025, o 11:12


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
    Autor Wiadomość
    PostNapisane: 20 lis 2021, o 18:52 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    hejka, bawię się troche wyswietlaczem LED i postanowiłem sobie zrobić np: stoper. Wyswietlacz 4 pozycyjny. Ogólnie zastanawiam się jak podejść do problemu wyświetlania kropki czyli segmentu DP. Chodzi oto, żeby sekundy od minut były oddzielone kropką. Nie mogę dodać po prostu kropki do linijki
    ~(SEG_B|SEG_C), odpowiadającej liczbie 1. bo każda jedynka będzie z kropką. Idąc dalej np: gdy chciałbym wyświetlać temp z DS18B20 na wyświetlacz LED to temperatura by mi się zmieniała. Raz by było np: 5.8 a raz 27.5... więc ta kropka by mi się przesuwała. Nie wiem jak do tego podejść.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 lis 2021, o 23:06 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Dokładaj kropkę za pomocą OR do segmentów które masz zapalać.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 01:11 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Mógłbyś troszkę rozwinąć bo nie bardzo czaje. Jakiś mały przykład.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 02:08 
    Offline
    Nowy

    Dołączył(a): 27 lut 2021
    Posty: 23
    Zbananowany użytkownik

    Pomógł: 0

    Z kropki zrob osobna flage i jesli jest zapalona to do danej liczby dodaj zapalenie segmentu z kropka - w praktyce bedzie to operacja OR o ktorej pisal micky



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 19:12 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    a gdzie tą operacje OR dodać ? do tej linijki ?
    if(licznik==1) LED_DATA = pgm_read_byte( &cyfry[cy1] ); Kombinuje, ale nie bardzo mogę to zrozumieć. Już myślałem o osobnej tablicy na liczby z kropką.

    ------------------------ [ Dodano po: 25 minutach ]

    Rozwiązanie z dodatkową tablicą dość słabe, bo mogę po prostu kropkę ustawić na stałe na danym wyświetlaczu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 19:54 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Ja robiłem coś takiego: w procedurze obsługi przerwania ISR(TIMER0_COMP_vect)...

    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łę

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



    Ostatnio edytowano 21 lis 2021, o 20:04 przez RadekB86, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 19:59 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    to "cywsze" mnie zmiażdżyło :D Ok, podobnie kombinowałem, ale zaraz ponownie siądę do tego.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 20:05 
    Offline
    Użytkownik
    Avatar użytkownika

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

    krawi92 napisał(a):
    to "cywsze" mnie zmiażdżyło :D Ok, podobnie kombinowałem, ale zaraz ponownie siądę do tego.

    xD :roll: :oops: :lol:
    Poprawiłem tego "babola" :lol:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lis 2021, o 20:17 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    else if(licznik==4) LED_DATA = pgm_read_byte( &cyfry[cy3] ),LED_DATA &=~(SEG_DP);
    Zrobiłem tak i OK. Mogę dodatkową tablice wyrzucić :P Ale co nie zmienia faktu, że tym razem również ustawiłem kropkę w stałym miejscu. Zastanawiam się teraz jak podejść do tematu np: wyświetlania temperatury, gdzie kropka będzie zmieniać swoje położenie. Muszę chyba jakoś dobrać warunki, że np:
    if(cy2) jeśli cy2 większe od 0 to wtedy do danego segmentu dodać kropkę. Zobaczymy, czy uda mi się to zorganizować w kodzie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lis 2021, o 10:34 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Operację dodania kropki (OR) rób w ostatnim momencie przed wyświetleniem odpowiedniej cyfry, czyli tam gdzie chcesz już wynik przepisać na zmienne wyświetlacza.

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lis 2021, o 15:43 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Dokładnie tak jak pisze przedmówca :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lis 2021, o 19:20 
    Offline
    Nowy

    Dołączył(a): 27 lut 2021
    Posty: 23
    Zbananowany użytkownik

    Pomógł: 0

    krawi92 napisał(a):
    a gdzie tą operacje OR dodać ? do tej linijki ?
    if(licznik==1) LED_DATA = pgm_read_byte( &cyfry[cy1] ); Kombinuje, ale nie bardzo mogę to zrozumieć. Już myślałem o osobnej tablicy na liczby z kropką.

    ------------------------ [ Dodano po: 25 minutach ]

    Rozwiązanie z dodatkową tablicą dość słabe, bo mogę po prostu kropkę ustawić na stałe na danym wyświetlaczu.


    dokładnie tak jak już mnie ubiegli koledzy - najpierw na segmenty wystawiasz daną cyfrę, a potem jeśli trzeba dodajesz do tego kropkę na określonej pozycji.

    Nie chodziło mi o dodatkową tablicę, tylko flagę - jak dodasz to na fladze - czy zapalić kropkę, czy nie - to uzyskasz możliwość sterowania tym - będzie można migać jak w zegarkach -> o ile to potrzebne oczywiście.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lis 2021, o 21:25 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Ok, powiedzmy że ogarnąłem tą kropkę. Przymierzam się do wyświetlania wyniku z ds18b20 na wyświetlaczu LED. Założyłem że będę wyświetlał temp do 1 miejsca po przecinku i temp będzie dwucyfrowa. Zrobiłem przeliczenia, żeby rozdzielić taką zmienną na 3 części. Chciałbym, żeby ktoś ocenił czy dobrze do tego podszedłem i czy by to działało z biblioteką z bluebooka ktora obsluguje ds18b20.

    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.


    Zastanawiam się czy mogę sobie pozwolić na skrócenie wyniku do liczby dziesiętnej, skoro DS jest do 100+C .
    Jak w ten sposób testuje przykladową zmienną typu float no to mi się wszystko dobrze wyświetla.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lis 2021, o 23:23 
    Offline
    Moderator
    Avatar użytkownika

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

    krawi92 napisał(a):
    i czy by to działało z biblioteką z bluebooka ktora obsluguje ds18b20

    No to może najpierw przeczytaj ten rozdział w Bluebooku o tym jak korzystać z DS18B20 bo z tą zmienną float - to przesadziłeś na maxa ;) przeczytaj mówię ci, i zapomnij że jest taki typ jak float

    _________________
    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: 23 lis 2021, o 20:07 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Rozdział czytałem, nawet sobie zbudowałem w obudowie termometr z 2 czujnikami z lcd. Faktycznie przerzucenie tego na LED będzie proste, bo sobie rozbije zmienne "cel" i "cel_fract_bits na części i przypisze do zmiennych do LED.
    Pytanko jeszcze mam takie, czy dobrze podszedłem do konstrukcji warunku. Powiedzmy, że wyświetlam na LED napięcie w voltach z ADC. Jeśli będę miał odczyt 7.44 to nie chcę, żeby mi się wyświetliło 07.44 tylko 7.44 więc chcę zgasić pierwszy wyświetlacz kiedy cy1=0. Zrobiłem to tak:

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

    gdzie 10 element tablicy to:
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

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