This shows you the differences between two versions of the page.
pm:prj2023:fstancu:dbolontoc [2023/05/26 00:22] daniel.bolontoc [Software Design] |
pm:prj2023:fstancu:dbolontoc [2023/05/28 09:28] (current) daniel.bolontoc [Descriere generală] |
||
---|---|---|---|
Line 78: | Line 78: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | |||
+ | [[https://github.com/DanielDXB/SmartDeskSys|Source Code - GitHub]] | ||
+ | |||
** Mediu de dezvoltare: Arduino IDE ** | ** Mediu de dezvoltare: Arduino IDE ** | ||
Line 134: | Line 137: | ||
dht.begin(); | dht.begin(); | ||
} | } | ||
+ | |||
+ | * Aceasta este funcția loop() care rulează într-o buclă continuă. În această buclă, se citesc stările butoanelor și se compară cu stările anterioare pentru a detecta apăsările butoanelor. În funcție de starea butoanelor, se modifică modul de afișare. | ||
+ | |||
+ | Dacă starea butonului principal (buttonPin) se modifică, se actualizează buttonState și, dacă noul starea este LOW (butonul a fost apăsat), displayMode este incrementat cu 1 folosind operatorul modulo 3 pentru a trece la următorul mod de afișare (temperatură, umiditate, timp). | ||
+ | |||
+ | Dacă starea butonului secundar (buttonPin2) se modifică, se actualizează buttonState2 și, dacă noul starea este LOW (butonul a fost apăsat), displayMode este incrementat cu 2 și apoi este aplicat operatorul modulo 3 pentru a trece la modul de afișare anterior (rotație în direcție inversă). | ||
+ | |||
+ | În funcție de valoarea displayMode, se afișează informațiile corespunzătoare pe afișajul LCD. Dacă displayMode este 0, se citește temperatura cu ajutorul senzorului DHT și se afișează pe afișaj împreună cu simbolul personalizat de grad. Dacă displayMode este 1, se citește umiditatea și se afișează pe afișaj. Dacă displayMode este 2, se actualizează timpul folosind modulul RTC și se afișează pe afișaj. | ||
+ | |||
+ | La sfârșitul buclei, se actualizează lastButtonState pentru a memora starea butonului principal pentru următoarea iterație a buclei: | ||
+ | |||
+ | void loop() { | ||
+ | int reading = digitalRead(buttonPin); | ||
+ | int reading2 = digitalRead(buttonPin2); | ||
+ | | ||
+ | if (reading != buttonState) { | ||
+ | buttonState = reading; | ||
+ | if (buttonState == LOW) { | ||
+ | displayMode = (displayMode + 1) % 3; // Toggle display mode between temperature, humidity, and time | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | if (reading2 != buttonState2) { | ||
+ | buttonState2 = reading2; | ||
+ | if (buttonState2 == LOW) { | ||
+ | displayMode = (displayMode +2) % 3; // Toggle display mode in the opposite direction | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | if (displayMode == 0) { | ||
+ | float temperature = dht.readTemperature(); | ||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Temp: "); | ||
+ | lcd.print(temperature); | ||
+ | lcd.write(1); | ||
+ | lcd.print("C"); | ||
+ | lcd.print(" "); | ||
+ | } else if (displayMode == 1) { | ||
+ | float humidity = dht.readHumidity(); | ||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Humidity: "); | ||
+ | lcd.print(humidity); | ||
+ | lcd.print("%"); | ||
+ | } else if (displayMode == 2) { | ||
+ | myRTC.updateTime(); | ||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Time: "); | ||
+ | if (myRTC.hours < 10) { | ||
+ | lcd.print("0"); | ||
+ | } | ||
+ | lcd.print(myRTC.hours); | ||
+ | lcd.print(":"); | ||
+ | if (myRTC.minutes < 10) { | ||
+ | lcd.print("0"); | ||
+ | } | ||
+ | lcd.print(myRTC.minutes); | ||
+ | lcd.print(":"); | ||
+ | if (myRTC.seconds < 10) { | ||
+ | lcd.print("0"); | ||
+ | } | ||
+ | lcd.print(myRTC.seconds); | ||
+ | lcd.print(" "); | ||
+ | } | ||
+ | lastButtonState = reading; | ||
+ | } | ||
+ | | ||
+ | ===== Concluzii ===== | ||
+ | |||
+ | * Efectiv schema fizica e plina de fire. | ||
+ | * Display-ul LCD trebuie setat manual cu "surubelnita" de grosime nanometrica. | ||
+ | * Codul in Arduino desi are sens si probabil functioneaza intr-o simulare pe calculator, cand il incarci pe placuta sufletul... | ||
+ | <note> | ||
+ | **Sunt AS pe lipit componente cu pistolul!** | ||
+ | </note> | ||
+ | | ||
+ | Download: | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |