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? 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 22 lip 2025, o 03:59


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 45 ]  Przejdź na stronę Poprzednia strona  1, 2
    Autor Wiadomość
    PostNapisane: 12 cze 2019, o 19:22 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    Koledzy podpowiedzcie coś jeśli macie jakiś pomysł
    Ja staram się pisać posty tak aby każdy mógł w jasny sposób
    z nich z korzystać i zastosować w swoich projektach
    ale nie jestem orłem w programowaniu jestem naprawdę na początku tej drogi

    I wasze podpowiedzi przydadzą się nie tylko mi ale też będą z pożytkiem
    dla innych



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 cze 2019, o 19:41 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    Postaram sie pomóc jutro rano bo będę u siebie to będę mógł przetestować kod ;) narazie nic nie zauważyłem



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 cze 2019, o 20:17 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    OK dzięki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 cze 2019, o 08:53 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    Cześć miki53,

    Sprawdziłem teraz Twoją funkcję. Wszystko jest dobrze, jedynie musisz wrzucić wywołanie funkcji:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    do funkcji void RTC_EVENT( void ), żeby Twoja funkcja zaczęła pobierać aktualny czas.

    Jak wywołasz funkcję przed pętlą to wartość zmiennej czas = 0.

    Sprawdziłem, Twoją funkcję tak jak napisałem wyżej i działa. Po osiągnięciu ustawionego czasu dioda zmienia swój stan.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 cze 2019, o 10:18 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    Panie i Panowie mamy uzupełnioną bibliotekę PCF8583 o funkcję budzika

    wstawiłem ustawianie godziny alarmu w to miejsce w pliku main.c
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i faktycznie działa :D :D


    A teraz chciałbym to rozwinąć do niezależnej możliwości włączania i wyłączania 8-mioma portami C
    Czy macie jakieś pomysły ?, aby nie pisać jednej funkcji dla jednego wyjścia
    Może by się dało jedną funkcją niezależnie wysterować 8 portów?

    To znaczy
    że ustawiamy tylko 8 takich kodów ( jak niżej ) dla poszczególnych nastaw
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Ale jak wybrać port jakiego ma dotyczyć ?

    Gdyby się udało rozwinąć ten temat to mielibyśmy sterownik imitujący obecność domowników
    gdy nas niema w domu , lub fajny sterownik



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 cze 2019, o 16:45 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    Mam pewną koncepcje. Utworzyć typ strukturalny dla alarmów i wtedy funkcję mozna by wywolywać w ten sposób:

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


    Gdzie po kolei przekazywałbyś wskaźnik na strukturę czasu, wskaźnik na strukturę alarmów, port, pin, godzinę alarmu, minutę alarmu, sekundę alarmu, długość trwania alarmu w sekundach.

    Czy chodziłoby Ci o coś takiego?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 cze 2019, o 14:13 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    Coś w tym rodzaju
    z tym że ja rozbudowałem nieco funkcję o element wyłączania

    zaraz pokażę jak ta funkcja teraz wygląda

    plik mk_pcf8583.c
    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.


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


    Teraz myślę aby wykorzystać komendy #define
    w ten sposób aby przypisać portom numery rozpoznawcze

    aby to wyglądało w taki sposób

    DDRC |= (1<<PC7); // ustawiamy PORT PC7 jako wyjście
    #define A1 PORTC &= ~LED_PIN // załączanie diody
    #define A2 PORTC |= LED_PIN // wyłączanie diody

    DDRC |= (1<<PC6); // ustawiamy PORT PC6 jako wyjście
    #define A3 PORTC &= ~LED_PIN // załączanie diody
    #define A4 PORTC |= LED_PIN // wyłączanie diody

    // USTAWIANIE włącz - hh - mm - ss - nr portu / wyłącz - hh - mm - ss - nr portu
    // ----------------------------------------------------------------
    // set_rtc_alarm( &datetime, 15, 32, 0, 1, 15, 33, 0, 2 );
    // ****************************************************************

    ( nie piszę tego fragmentu w SYNTEX C bo to tylko dla celów pokazowych a nie kod )

    Ale nie wiem na razie jak do tego doprowadzić
    aby to zadziałało w taki sposób?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 cze 2019, o 10:48 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    Dobra miki53, mam dla Ciebie funkcję - może Cie ucieszy :) ewentualnie dopiszesz sobie trzy argumenty do wpisania godziny wyłączenia alarmu bo ja wpisałem długość trwania alarmu.

    Nawiązując do:
    miki53 napisał(a):
    A teraz chciałbym to rozwinąć do niezależnej możliwości włączania i wyłączania 8-mioma portami C
    Czy macie jakieś pomysły ?, aby nie pisać jednej funkcji dla jednego wyjścia
    Może by się dało jedną funkcją niezależnie wysterować 8 portów?

    chodziło Ci o piny chyba? Więc spróbowałem swoich sił i wyszła mi funkcja, która jest poniżej. Działa, jeśli ktoś widzi jakieś błędy to proszę o poprawę :)

    Zgodnie z tym co pisałem wyżej o utworzeniu struktury dla alarmów w pliku *.h mamy:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W pliku *.c:
    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.

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

    Przeanalizuj i daj znać ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 cze 2019, o 13:10 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    Dzięki Ci za pomoc

    Tylko Ty zechciałeś pomóc i podjąć temat za to gorące dzięki.

    Co do twojej funkcji to wydaje mi się że jest nieco skomplikowana
    bo wskażnik goni wskażnik ale nie twierdzę że jest zła
    ma działać i oto chodzi

    ja nie umiem jeszcze programować więc piszę w prosty sposób
    mam nadzieję że kiedyś się nauczę ;)
    moja funkcja w nowej formie wygląda tak
    ( działa całkiem fajnie )

    plik main.c - ustawiam porty

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


    plik main.c - ustawienia dla dwóch wyjść alarmu pracujących niezależnie

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


    plik mk_pcf8583.c - funkcja

    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.


    plik mk_pcf8583.h - zmienne globalne

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


    plik mk_pcf8583.h - nagłówek funkcji

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


    Napisz swoje zdanie na temat mojego nieudolnego pisania ( ale bez owijania w bawełnę )



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 cze 2019, o 12:23 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    Teraz nasuwa się następny problem
    jak wyprowadzić ustawienia czasów alarmów na zewnątrz
    aby można było ustawiać czasy za pomocą przycisków

    tylko że na jedną nastawę potrzebuję
    dla włącz - hh - mm - ss - port / dla wyłącz - hh - mm - ss - port = 8 x 8 nastaw dla 8 portów
    to wychodzi 64 zmienne trochę sporo

    Czy dało by się prościej ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 cze 2019, o 14:38 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    Moja funkcja może wydawać się skomplikowana dlatego, że chciałem, aby byla uniwersalna. Ale dzięki temu można sterować dowolnym pinem na dowolnym porcie niezależnie. W pliku main.c tam są źle opisane wywołania bo zrobiłem copy and paste, ale myślę że można się domyślić z argumentów, ktore piny są sterowane.

    Co do Twojej funkcji to jak działa to jest dobrze, ale za każdym razem jak bedziesz chcial zmienic port i pin to musisz ingerować w funkcję. Ja napisalem tak żeby tego uniknąć.

    A co do ilości zmiennych żeby ustawić 8 alarmów to nic mi nie przychodzi do głowy czy dało by sie uprościć. Musialby się ktoś wypowiedzieć z doświadczeniem



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 cze 2019, o 17:19 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    W mojej funkcji są porty ustawione na stałe ale
    podczas ustawień dla danego wyjścia można je przełączać

    np. można zmieniać wyjście dla każdej nastawy niezależnie

    zobacz

    // USTAWIANIE włącz - hh - mm - ss - nr portu / wyłącz - hh - mm - ss - nr portu
    // ----------------------------------------------------------------
    // set_rtc_alarm( &datetime, 15, 32, 0, 2, 15, 33, 0, 2 );
    // ****************************************************************

    w miejscu gdzie ustawiasz - port - możesz wstawiać dowolny port zamiast 2- dla PD5 wpisz
    1 i masz już ustawiony port PD6
    możesz nawet mieszać, włączasz port PD5 a wyłączasz wcześniej ustawiony port PD6
    i wszystkie są ustawiane pełnym czasem ( godziny, minuty, sekundy )

    Jeszcze raz się przyglądam twojej funkcji i coś mi nie gra chodzi mi o wskażnik

    ------------------------ [ Dodano po: 41 minutach ]

    Jeszcze raz się przyglądam twojej funkcji i coś mi nie gra chodzi mi o wskażnik al->
    wskazuje on na czas ustalany przez RTC oraz na czas który my ustawiamy jako czas
    alarmu potem ten sam wskażnik wskazuje na godziny alarmu ( ahh ), minuty ( amm )
    oraz sekundy ( ass )

    Nie za dużo iak na jeden wskażnik ?

    Ja staram się podglądać jak to robi Mirek

    Mirek moał osobny wskażnik ( tak dla przykładu )

    dla godziny i inny dla daty
    tak aby to się nie pomieszało wszystko w jednym

    A Ty masz jeden wskażnik prawie do wszystkiego
    Ja tam się nie znam ale na chłopski rozum to w tym wskażniku musi być kogel mogel


    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: 16 cze 2019, o 21:46 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    miki53 napisał(a):
    Jeszcze raz się przyglądam twojej funkcji i coś mi nie gra chodzi mi o wskażnik al->
    wskazuje on na czas ustalany przez RTC oraz na czas który my ustawiamy jako czas
    alarmu potem ten sam wskażnik wskazuje na godziny alarmu ( ahh ), minuty ( amm )
    oraz sekundy ( ass )

    Nie za dużo iak na jeden wskażnik ?

    Bez obawy nie jest za dużo :) wskaźnik al-> wskazuje na zmienne w strukturze i nie robi się "kogel mogel" :P

    popatrz, na początku wpisuje do zmiennych ahh, amm, ass wartości czasu alarmu, żeby później można było policzyć czas alarmu - użyłem wskaźnika bo zmienne są w strukturze. Później wpisuję do zmiennej czas (także ona jest w strukturze), wartość aktualnego czasu odczytanego z RTC przez wskaźnik dt-> ponieważ te są w innej strukturze, a ponieważ mam utworzony TYP strukturalny to zmienne alarm1, alarm2, alarm3 tworzą osobne struktury i nic się nie pomiesza :) W końcu wszystko działa według założenia.

    miki53 napisał(a):
    Mirek moał osobny wskażnik ( tak dla przykładu )

    dla godziny i inny dla daty
    tak aby to się nie pomieszało wszystko w jednym

    Popatrz np. na funkcję Pana Mirka get_rtc_datetime, on tam dużo używa wskaźnika dt->, a zmiennych w strukturze TDATETIME jest dużo więcej niż w mojej strukturze TALARM. Chyba, że o inny wskaźnik Ci chodzi? Bo Pan Mirek dla daty i czasu używa wskaźnika dt->.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 cze 2019, o 08:54 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 435
    Lokalizacja: Puck
    Pomógł: 7

    OK pisałem że się nie znam :mrgreen:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 cze 2019, o 10:07 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 21 wrz 2017
    Posty: 15
    Pomógł: 0

    Witam.
    Też jestem w trakcie uczenia się, ale może takie rozwiązanie tobie spasuje (wycinek z mojego sterownika stworzonego na postawie BB) :)
    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.


    Oczywiści musisz trochę zmodyfikować pod swoje potrzeby, ale chodzi o samą ideę, pozostanie tylko zapis i odczyt z EEPROM, bo ja korzystałem z zewnętrznej pamięci 24c32.



    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: 45 ]  Przejdź na stronę Poprzednia strona  1, 2

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 16 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