Narzędzia użytkownika

Narzędzia witryny


projekty:digital_clock_ard

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
projekty:digital_clock_ard [2025/05/07 18:38] administratorprojekty:digital_clock_ard [2025/06/16 10:29] (aktualna) administrator
Linia 1: Linia 1:
-[[https://www.youtube.com/watch?v=MiSdoO-Klpo|Filmik na platformie youtube]]+====== ArduinoZegar cyfrowy z pomiarem temperatury ======
  
  
-=== Zegar cyfrowy z pomiarem temperatury na bazie Arduino ===+=== 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> <code cpp>
-#include "RTClib.h"+#include ''RTClib.h''
 #include <Arduino.h> #include <Arduino.h>
 #include <TM1637Display.h> #include <TM1637Display.h>
-#include "DHT.h"+#include ''DHT.h''
 #include <OneWire.h> #include <OneWire.h>
 #include <DallasTemperature.h> #include <DallasTemperature.h>
Linia 57: Linia 144:
  
   if(Hour < 10)   if(Hour < 10)
-    {strHour = "0+ String(Hour);}+    {strHour = ''0'' + String(Hour);}
   else if(Hour >= 10)   else if(Hour >= 10)
     {strHour = String(Hour);}     {strHour = String(Hour);}
   else if(Hour == 0)   else if(Hour == 0)
-    {strHour = "00";}+    {strHour = ''00'';}
        
   if(Minute < 10)   if(Minute < 10)
-    {strMinute = "0+ String(Minute);}+    {strMinute = ''0'' + String(Minute);}
   else if(Minute >= 10)   else if(Minute >= 10)
     {strMinute = String(Minute);}     {strMinute = String(Minute);}
   else if(Minute == 0)   else if(Minute == 0)
-    {strMinute = "00";}+    {strMinute = ''00'';}
          
      
Linia 76: Linia 163:
   Time += strMinute;   Time += strMinute;
  
-  if(Time == "0"){ +  if(Time == ''0''){ 
-    Time = "0000";+    Time = ''0000'';
   }   }
  
Linia 98: Linia 185:
  
 } }
- 
 </code> </code>
 +
projekty/digital_clock_ard.1746635900.txt.gz · ostatnio zmienione: przez administrator