Biblioteka Arduino do sprawdzania daty i temperatury zintegrowanego DS3231 poprzez I2C

Biblioteka Arduino do sprawdzania daty i temperatury zintegrowanego DS3231 poprzez I2C

Biblioteka Arduino do sprawdzania daty i temperatury zintegrowanego DS3231 poprzez I2C

AKTUALIZACJA: Odwiedź także nową biblioteka do zarządzania datą i czasem za pomocą modułu DS3231 RTC i Arduino z ulepszeniami, takimi jak czas sezonowy.

Działanie IC de zegary czasu rzeczywistego (RTC) najpopularniejsze, które są kontrolowane za pomocą autobus I2C Zwykle jest bardzo podobnie. Poza tym, Biblioteka przewodów de Arduino znacznie upraszcza komunikację z urządzeniami Dwuprzewodowy interfejs szeregowy (TWI), I2C, konkretny.

Spis treści

    Najogólniej rzecz ujmując, proces ten składa się z

    1. Za pomocą tej funkcji inicjuj komunikację jako slave lub master (ustawienie domyślne). Wire.begin(adres). Jeśli pominięto „adres”, komunikacja rozpoczyna się od µC nauczyciel autobus I2C.

    2. Aktywuj komunikację I2C z urządzeniem poprzez adres pamięci, w którym się ono znajduje, za pomocą polecenia Wire.beginTransmission(adres).

    3. Napisz zamówienie w autobus I2C aby poinformować urządzenie o operacji, którą ma wykonać, używając Wire.write(polecenie), gdzie „kolejność” jest kodem operacji.

    4. Wyłącz komunikację, aby zwolnić autobus I2C z funkcją Wire.endTransmission ().

    5. Zażądaj od urządzenia przesłania określonej ilości danych odpowiadających żądanej operacji (w tym przypadku daty i godziny) za pomocą funkcji Wire.requestFrom(adres,kwota).

    6. Poczekaj, aż dane żądane za pomocą funkcji będą dostępne do odczytu Wire.available (), która zwraca liczbę danych, które zostały już odebrane i można je odczytać.

    7. Odczytaj dane przesłane przez urządzenie (plik zegar czasu rzeczywistegow tym przypadku) za pomocą funkcji Przewód.czytaj() tyle razy, ile wskazano bajtów Wire.available () które są dostępne.

    8. Zwykle dane są przesyłane w bardzo kompaktowych formatach, dlatego jest bardzo prawdopodobne, że konieczna będzie interpretacja otrzymanych danych w sposób odpowiadający reprezentacji danych utworzonej w programie korzystającym z urządzenia.

    Jeśli chodzi o DS3231 (i kompatybilne modele z tej samej serii, takie jak DS3232) i interpretacja danych, zgodnie ze specyfikacją zintegrowaną, na przykład wartości różnych cyfr reprezentujących czas są reprezentowane w dziesiętny kodowany binarnie (BCD) co będzie wygodniejsze do wyrażenia w postaci wartości dziesiętnej (a bajt) do wykorzystania Arduino

    W tej samej linii temperatura jest wyrażana w bajtach dopełnienie dwójki dla części całkowitej i dwa bity dla kroku, z rozdzielczością ćwierć stopnia, części dziesiętnej. Te i inne aspekty reprezentacji danych na zegarze zostały wyczerpująco omówione w poniższym kodzie biblioteki. DS3231

    Aby sprawdzić temperaturę za pomocą tej biblioteki, po prostu użyj metody odczyt_temperatury() Obiekt DS3231 utworzone na początku. Aby odczytać datę i godzinę, są one najpierw ładowane, a następnie żądane w jednym z formatów (kompaktowy, ludzki...) dostępnych do różnych zastosowań, udokumentowanych w dokumencie nagłówkowym biblioteki kodów poniżej.

    Poniżej znajduje się przykładowy kod pokazujący, jak korzystać z biblioteki. Jak wspomniano powyżej, temperaturę można po prostu odczytać za pomocą tej funkcji odczyt_temperatury() obiektu klasy DS3231 ale aby zignorować błędy w odczycie, stosuje się dwie stałe, które przechowują odpowiednio maksymalną i minimalną temperaturę urządzenia zgodnie z arkuszem danych i które są odczytywane za pomocą odpowiednich funkcji.

    Odczyt temperatury odbywa się dwuetapowo: w pierwszej kolejności ładowana jest wartość, tak aby różne zastosowania daty lub czasu były spójne (w niekorzystnych przypadkach nie będą pokazywały wyższej wartości) oraz w drugiej kolejności jest ona wykorzystywana zgodnie z formatem, który jest potrzebne. Przykładowy program (który jest mało praktyczny, choć wyjaśnia wszystkie możliwości) pokazuje wszystkie dostępne formaty

    • Funkcja data_godzina_wartość() która zwraca wskaźnik do tablicy zwęglać (bajty) zawierające siedem wartości liczbowych reprezentujących datę i godzinę na zegarze DS3231 konwertowane na dziesiętne (są w BCD na urządzeniu)

    • Korzystanie z funkcji numer_dnia tygodnia() Otrzymywana jest wartość odpowiadająca numerowi dnia tygodnia rozpoczynającego się w niedzielę. Aby wyświetlić go jako tekst, używana jest tablica, a jeden jest odejmowany, aby rozpocząć od indeksu zerowego, czyli niedziela.

    • Aby sprawdzić datę w formacie „lokalnym” (hiszpańskim), użyj funkcji data_człowieka(), który zwraca wskaźnik do ciągu znaków, w którym data jest przedstawiona w formacie DD/MM/RRRR, gdzie DD to dzień przedstawiony za pomocą 2 cyfr, MM to miesiąc za pomocą 2 cyfr, a YYYY to rok za pomocą 4 cyfr.

    • Funkcja ludzka_godzina() zwraca czas w formacie gg:mm:ss, gdzie hh to godzina (w formacie 24) reprezentowana za pomocą 2 cyfr, mm to minuty za pomocą 2 cyfr, a ss to sekundy za pomocą 2 cyfr.

    • Aby łatwo korzystać z daty i godziny pliki dziennika funkcja została zaprogramowana Compact_date_time(), który dostarcza wartość daty i godziny w formacie YYMMDDhhmmss, gdzie AA to rok reprezentowany przez 2 ostatnie cyfry, MM miesiąc z 2 cyframi, DD dzień z 2 cyframi, gg godzina (w formacie 24) z 2 cyfry, mm minuty z 2 cyframi i ss sekundy z 2 cyframi. Format ten, mimo że jest tekstem, zajmuje niewiele miejsca i pozwala na bardzo proste uporządkowanie alfabetyczne.

    • Funkcja data_godzina_MySQL() służy do prezentacji daty i czasu w formacie używanym przez zarządzającego bazą danych MySQL (lub nowy i bardziej swobodny MariaDB) RRRR-MM-DD gg:mm:ss, gdzie RRRR to rok reprezentowany za pomocą 4 cyfr, MM to 2-cyfrowy miesiąc, DD to 2-cyfrowy dzień, gg to godzina (w formacie 24) 2-cyfrowa , mm to minuty dwucyfrowe i sekundy dwucyfrowe.

    Chociaż istnieje wiele formatów reprezentacji daty i godziny, może nie być tego, którego potrzebujesz, ale z pewnością bazując na jednym z istniejących i używając go jako przykładu, łatwo będzie dodać nową metodę zgodnie z inne specyfikacje. Jeśli dodasz nowe funkcje, udostępnij kod (wypuść go!) i wyjaśnij nam, jak to działa, abyśmy mogli stopniowo ulepszać bibliotekę. Dziękujemy!

    Dane wyjściowe powyższego przykładowego programu mogą wyglądać mniej więcej tak, jak pokazano na poniższym obrazku: lista 7 wartości (sekundy, minuty, godzina, dzień tygodnia, dzień miesiąca, miesiąc i rok) data i czas wyrażony w sposób „ludzki” (zgodnie ze stylem hiszpańskim), czas jako liczba całkowita w formacie zegara czterocyfrowego, data i godzina w formacie bazy danych MySQL, data i godzina w formacie kompaktowym (np dzienniki) i temperaturę wewnętrzną DS3231.

    Biblioteka wyjściowa konsoli Arduino z zegarem czasu rzeczywistego (RTC) i temperaturą DS3231 poprzez magistralę I2C

    Zamieść komentarz

    Być może przegapiłeś