Toggle theme
Kacper's Wiki
Narzędzia użytkownika
Toggle theme
Zaloguj
Narzędzia witryny
Szukaj
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Export to PDF
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
>
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
projekty:digital_clock_ard
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Arduino: Zegar cyfrowy z pomiarem temperatury ====== === Opis urządzenia === Projekt korzysta z Arduino oraz następujących elementów: * **RTC_DS1307** – moduł zegara czasu rzeczywistego (biblioteka RTClib), * **TM1637Display** – wyświetlacz 4-cyfrowy z podświetleniem – sterowany przez CLK i DIO, * **DHT11** – sensor temperatury i wilgotności powietrza (podłączony do pinu 9), * **DS18B20** – cyfrowy termometr (sensory podłączone do magistrali OneWire na pinie 3). === Import bibliotek === * ''RTClib.h'' – obsługa zegara RTC, * ''Arduino.h'' – funkcje bazowe platformy Arduino, * ''TM1637Display.h'' – sterowanie wyświetlaczem 4-cyfrowym, * ''DHT.h'' – obsługa czujnika DHT11, * ''OneWire.h'' i ''DallasTemperature.h'' – obsługa DS18B20, * ''SPI.h'', ''Wire.h'' – biblioteki komunikacyjne (Wire™ używany przez RTC). === Definicje pinów i obiekty === * ''CLK 6'', ''DIO 4'' – piny wyświetlacza TM1637, * ''DHTPIN 9'', ''DHTTYPE DHT11'' – konfiguracja czujnika DHT11, * ''ONE_WIRE_BUS 3'' – magistrala dla DS18B20. * Obiekty: * ''RTC_DS1307 rtc;'' * ''TM1637Display display(CLK, DIO);'' * ''DHT dht(DHTPIN, DHTTYPE);'' * ''OneWire oneWire(ONE_WIRE_BUS);'' * ''DallasTemperature sensors(&oneWire);'' === setup() === - ''rtc.begin()'' – uruchamia zegar RTC, - ''sensors.begin()'' – inicjalizuje DS18B20, - Ustawia jasność wyświetlacza (''setBrightness'') i pokazuje „8888” jako test, - Inicjuje port szeregowy (''Serial.begin'') – do debugu pomiarów, - ''dht.begin()'' – inicjalizacja czujnika DHT11. === loop() – cykl główny === - ''sensors.requestTemperatures()'' i ''getTempCByIndex(0)'' – odczyt temperatury DS18B20, - Konwersja na ''int'' – zaokrąglenie (''round''), - ''rtc.now()'' – pobiera aktualny czas; wyodrębnia godzinę i minutę, - Odczyt z DHT11: ''readHumidity()'' i ''readTemperature()'', - Formatowanie czasu jako 4-cyfrowego stringa (np. "0835"), - Konwersja do liczby (''toInt()'') i wyświetlanie kolejno: * godzina i minuta, * temperatura z czujnika DHT11 (°C), * wilgotność z DHT11 (%), * temperatura z DS18B20 (wartość całkowita), Każdy odczyt – 2 sekundy. === Zastosowane moduły/biblioteki === * **RTClib** – obsługa modułów RTC DS1307/DS3231, * **TM1637Display** – pokazanie cyfr na wyświetlaczu 4‑segmentowym z kropką dziesiętną, * **DHT** – odczyt wilgotności i temperatury z DHT11, * **OneWire + DallasTemperature** – obsługa nawet wielu termometrów 1-wire, * **SPI** i **Wire** – wymagane przez niektóre z powyższych (np. RTC). === Przykład działania === - Na starcie wyświetlacz pokazuje „8888” – test działania wszystkich segmentów, - Potem wyświetla czas (hhmm), - Następnie co 2 sekundy kolejno: * temperatura DHT11 (np. „23.5” → "23.5°C"), * wilgotność DHT11 (np. „45.2” → "45.2%"), * temperatura DS18B20 (np. „24” → 24°C). === Możliwe modyfikacje === * Dodanie przycisków do ustawiania czasu, * Rejestracja danych w EEPROM lub kartę SD, * Rozbudowa interfejsu – np. menu wyboru wyświetlanych wartości, * Zastosowanie DS3231 dla większej dokładności RTC. === Podsumowanie === Urządzenie to zegar typu „cyfrowego” z pomiarem temperatury i wilgotności, wizualizujący wartości na wyświetlaczu TM1637. Korzysta z trzech różnych sensorów i prostych bibliotek Arduino, co czyni projekt świetnym przykładem integracji sprzętu i oprogramowania w jednym systemie. === Filmik z prezentacją === Filmik nagrany dawno temu i po angielsku, więc proszę o wyrozumiałość ;) {{youtube>MiSdoO-Klpo?}} === Kod === <code cpp> #include ''RTClib.h'' #include <Arduino.h> #include <TM1637Display.h> #include ''DHT.h'' #include <OneWire.h> #include <DallasTemperature.h> #include <SPI.h> #include <Wire.h> #define CLK 6 #define DIO 4 #define DHTPIN 9 #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 RTC_DS1307 rtc; TM1637Display display(CLK, DIO); DHT dht(DHTPIN, DHTTYPE); OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { rtc.begin(); sensors.begin(); display.setBrightness(0x0f); display.showNumberDecEx(8888,0b01000000, false); delay(3000); display.clear(); display.setBrightness(3); Serial.begin(57600); dht.begin(); } void loop() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); int tempINT = round(tempC); DateTime now = rtc.now(); int Minute = now.minute(); int Hour = now.hour(); String strMinute; String strHour; float h = dht.readHumidity(); float t = dht.readTemperature(); if(Hour < 10) {strHour = ''0'' + String(Hour);} else if(Hour >= 10) {strHour = String(Hour);} else if(Hour == 0) {strHour = ''00'';} if(Minute < 10) {strMinute = ''0'' + String(Minute);} else if(Minute >= 10) {strMinute = String(Minute);} else if(Minute == 0) {strMinute = ''00'';} String Time; Time += strHour; Time += strMinute; if(Time == ''0''){ Time = ''0000''; } Serial.println(tempC); Serial.println(tempINT); int numTime = Time.toInt(); display.clear(); display.showNumberDecEx(numTime,0b01000000, true); delay(2000); display.clear(); display.showNumberDec(t,false,2,1); delay(2000); display.clear(); display.showNumberDec(h,false,2,1); delay(2000); display.clear(); display.showNumberDec(tempINT,false,2,1); delay(2000); } </code>
projekty/digital_clock_ard.txt
· ostatnio zmienione:
2025/06/16 10:29
przez
administrator
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Export to PDF
Do góry