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
projekty:digital_clock_ard [2025/05/16 17:30] administratorprojekty:digital_clock_ard [2025/06/16 10:29] (aktualna) administrator
Linia 1: Linia 1:
 +====== 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?}} {{youtube>MiSdoO-Klpo?}}
  
-=== Arduino: Zegar cyfrowy z pomiarem temperatury ===+=== 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 56: 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 75: Linia 163:
   Time += strMinute;   Time += strMinute;
  
-  if(Time == "0"){ +  if(Time == ''0''){ 
-    Time = "0000";+    Time = ''0000'';
   }   }
  
Linia 97: Linia 185:
  
 } }
- 
 </code> </code>
 +
projekty/digital_clock_ard.1747409402.txt.gz · ostatnio zmienione: przez administrator