Ardoino Uno - bo czasami trzeba zrobić coś innego
Dzisiaj chciałbym przedstawić Wam mój mały projekt, na zakurzonym i wyciągniętym z szafy Arduino Uno.
Postanowiłem w ramach odświeżenia wiedzy oraz zrobienia czegoś innego niż na co dzień, utworzyć termometr z zegarkiem.
Projekt
Do utworzenia tego urządzenia chciałem wykorzystać czujniki, które posiadałem. Wyszło więc, że wykorzystam:
- Arduino Uno
- Wyświetlacz LCD 2x16 znaków zielony
- Zegar czasu rzeczywistego - moduł RTC DS1307
- Czujnik temperatury i wilgotności DHT11 - moduł niebieski
- Dwa rezystory 4,7 kΩ oraz 220Ω
- Potencjometr montażowy leżący 20kΩ
- Płytka stykowa i masę kabelków
Projekt wygląda następująco
Krótka teoria:
Moduł zegara działa na protokole I²C, odpowiednimi pinami na Arduino są analogowe wy/we A4 i A5.
Program
Tutaj arduino.cc mnie bardzo zaskoczyło, mają wersję kompilatora uruchamianą w przeglądarce. Z ciekawości zerknąłem jakie są jej możliwości i jestem pozytywnie zaskoczony (nawet łatwiej dodać biblioteki, niż na desktopowej wersji).
Oprogramowanie mojego zegarka z czujnikiem temperatury oraz wilgotności wygląda:
#include <Time.h> #include <DS1307RTC.h> #include <LiquidCrystal.h> #include "DHT.h" // biblioteka DHT #define DHTPIN 7 // numer pinu sygnałowego #define DHTTYPE DHT11 // typ czujnika (DHT11). DHT dht(DHTPIN, DHTTYPE); // definicja czujnika LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { } void loop() { tmElements_t tm; float t = dht.readTemperature(); float h = dht.readHumidity(); if (!isnan(t) && !isnan(h)) { lcd.begin(16, 2); lcd.print("Wilg: "); lcd.print(h); lcd.print(" %"); lcd.setCursor(0, 1); lcd.print("Temp: "); lcd.print(t); lcd.print(" *C"); } delay(1000); if (RTC.read(tm)) { lcd.begin(16, 2); print2digits(tm.Day); lcd.print('/'); print2digits(tm.Month); lcd.print('/'); lcd.print(tmYearToCalendar(tm.Year)); lcd.setCursor(0, 1); print2digits(tm.Hour); lcd.print(':'); print2digits(tm.Minute); lcd.print(':'); print2digits(tm.Second); } delay(1000); } void print2digits(int number) { if (number >= 0 && number < 10) { lcd.print('0'); } lcd.print(number); }
I tak oto w ciągu 2h zrobiłem coś, co mi się przyda, a na pewno będzie rozświetlać wieczory (wyświetlacz z maksymalnym podświetleniem jest bardzo intensywny).
Chciałbym namówić Was także, na różne odskocznie od zwykłego programowania. Zapraszam do komentowania.
Comments
Post a Comment