Skocz do zawartości

Zaawansowany zegar


Julek

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dziękuje🙂

@Belferek masz rację jest dokładniejszy ale na wiele różnych sposobów próbowałem zrobić możliwość ustawiania czasu ale nie mogłem. Pracowałem długo nad tym  modułem i nic nie wykombinowałem. 

Pozdrawiam!

Link do komentarza
Share on other sites

Ja do obsługi DS3231 używam biblioteki Rtc_by_Makuna (dostepna z menadżera bibliotek). Biblioteka dokładnie przedstawiona przez autora - tutaj

Ustawienie czasu tego zegara realizuję tak:

Rtc.SetDateTime(RtcDateTime(_rok,_mc,_dzien,_godz,_min,_sek));  //w _rok, _mc itd. data i czas do ustawienia)

Oczywiście to wszystko po wcześniejszym zaimportowaniu bibliotek, uruchomieniu i2c, sprawdzeniu obecności DS3231. Zegar "reprezentowany" jest przez wcześniej zadeklarowany obiekt Rtc, a deklaruję go tak:

RtcDS3231<TwoWire> Rtc(Wire);

i ... wszystko działa jak należy.
Autor dokładnie opisuje w podanym WIKI sposób korzystania ze swoich bibliotek.

 

Edytowano przez Belferek
  • Lubię! 2
Link do komentarza
Share on other sites

Kiedy 5 minut zastanawiasz się po co dwuwymiarowa tablica przy daysOfWeek i dopiero zauważasz, że tam nie ma wskaźnika... 🙂

Jak na taki młody wiek, to gratuluję pasji i projektu.

Jak zawsze muszę mieć swoje "ale" - proponuję poprawić, by nie było pojedynczych cyfr 🙂

char n[3] = {'0', '0', '\0'};

void numToText(char number)
{
    n[0] = '0' + (number / 10);
    n[1] = '0' + (number % 10);
}

Tutaj masz przykładowe rozwiązanie. Da się to zrobić lepiej, ale na początek powinno wystarczyć 😉 Funkcja przetwarza liczbę (0-99) na dwa znaki. Dla liczb < 10 pierwszy znak to '0'.

Edytowano przez H1M4W4R1
poprawka kodu
  • Lubię! 1
Link do komentarza
Share on other sites

Jak już komuś doradzamy, to ja radziłbym uważać na oszczędności w wykorzystaniu pamięci:

10 minut temu, H1M4W4R1 napisał:

char n[2];

Napisy w języku C mają najczęściej \0 na końcu, a w tej tablicy brakuje dla końcowego zera miejsca, więc wbrew nazwie numToText wynikiem nie jest typowy string. Kod może i działa, ale łatwo zrobić błąd i mieć piękne przepełnienie bufora.

  • Lubię! 2
Link do komentarza
Share on other sites

5 minut temu, Elvis napisał:

Napisy w języku C mają najczęściej \0 na końcu

To akurat odruch - mój kompilator automatycznie to poprawia 😄 Ale zaraz się poprawię 😛 

EDIT:

Znaczy podświetla przepełnienia bufora...  

12 minut temu, ethanak napisał:

Przecież '0' i '0'+0 to jakby to samo...

Nie zawsze... czasem można się nieźle zdziwić np. w C# istniał bug z listami, który potrafił zwrócić, że 1 > 12 😄 O ile pamiętam to było coś z System.Collections.Generics.List`1:Capacity 

Jak coś poprawiłem 😛 

 

Edytowano przez H1M4W4R1
  • Lubię! 1
Link do komentarza
Share on other sites

6 godzin temu, hashpl napisał:

Super projekt. Możesz napisać do czego używasz przekaźnika. Do czego jest przycisk tact switcha oraz przycisk pilota ? Możesz narysować schemat ?

Dzięki, przekaźnika używałem do sterowania ledami podświetlającymi półkę, po wciśnięciu tact switcha wyświetlały się temperatury tak samo jak przy pomocy pilota. Schematu niestety nie jestem w stanie zrobić, ponieważ nie używam projektu od około roku. Jeśli uda mi się go znaleźć to rozrysuję ale nie chcę nic obiecywać.😉 Widzę ile błędów miał ten projekt ale tak naprawdę robiłem go z kilku innych projektów, które tylko sklejałem w jeden. Teraz pewnie napisał bym ten program inaczej i nie było by w nim tyle błędów🙂 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.