ATNEL tech-forum https://forum.atnel.pl/ |
|
Jak ustawić funkcję budzika https://forum.atnel.pl/topic22246-30.html |
Strona 2 z 2 |
Autor: | miki53 [ 12 cze 2019, o 19:22 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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 |
Autor: | Tom92 [ 12 cze 2019, o 19:41 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Postaram sie pomóc jutro rano bo będę u siebie to będę mógł przetestować kod narazie nic nie zauważyłem |
Autor: | miki53 [ 12 cze 2019, o 20:17 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
OK dzięki |
Autor: | Tom92 [ 13 cze 2019, o 08:53 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Cześć miki53, Sprawdziłem teraz Twoją funkcję. Wszystko jest dobrze, jedynie musisz wrzucić wywołanie funkcji: 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: | miki53 [ 13 cze 2019, o 10:18 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Panie i Panowie mamy uzupełnioną bibliotekę PCF8583 o funkcję budzika wstawiłem ustawianie godziny alarmu w to miejsce w pliku main.c język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i faktycznie dział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? To znaczy że ustawiamy tylko 8 takich kodów ( jak niżej ) dla poszczególnych nastaw 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 |
Autor: | Tom92 [ 13 cze 2019, o 16:45 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Mam pewną koncepcje. Utworzyć typ strukturalny dla alarmów i wtedy funkcję mozna by wywolywać w ten sposób: 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? |
Autor: | miki53 [ 14 cze 2019, o 14:13 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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 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 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? |
Autor: | Tom92 [ 15 cze 2019, o 10:48 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. W pliku *.c: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W main.c: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Przeanalizuj i daj znać |
Autor: | miki53 [ 15 cze 2019, o 13:10 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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 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 język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. plik mk_pcf8583.c - funkcja 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 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 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ę ) |
Autor: | miki53 [ 16 cze 2019, o 12:23 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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 ? |
Autor: | Tom92 [ 16 cze 2019, o 14:38 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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 |
Autor: | miki53 [ 16 cze 2019, o 17:19 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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 |
Autor: | Tom92 [ 16 cze 2019, o 21:46 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
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" 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->. |
Autor: | miki53 [ 17 cze 2019, o 08:54 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
OK pisałem że się nie znam |
Autor: | Bigrazor [ 25 cze 2019, o 10:07 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Witam. Też jestem w trakcie uczenia się, ale może takie rozwiązanie tobie spasuje (wycinek z mojego sterownika stworzonego na postawie BB) 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. |
Strona 2 z 2 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |