Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:sseverin:doru_vlad.gheorghiu [2024/05/24 15:17]
doru_vlad.gheorghiu
pm:prj2024:sseverin:doru_vlad.gheorghiu [2024/05/27 10:26] (current)
doru_vlad.gheorghiu
Line 109: Line 109:
    * Pe urmă, pornim senzorul de temperatură și ecranul LCD.    * Pe urmă, pornim senzorul de temperatură și ecranul LCD.
    * În funcția **loop()**:    * În funcția **loop()**:
-<​code>​+     * Vom citi măsurătorile făcute de MPU6050 (vom folosi doar măsurătorile temperaturii) ​<​code>​
   sensors_event_t a, g, temp;   sensors_event_t a, g, temp;
   mpu.getEvent(&​a,​ &g, &temp);   mpu.getEvent(&​a,​ &g, &temp);
 </​code>​ </​code>​
-     * Vom citi măsurătorile făcute de MPU6050 ​(vom folosi doar măsurătorile temperaturii) +     * Vom verifica dacă butonul a fost apăsat, iar dacă **buttonFlag == 1**, vom face debouncing pe buton și vom inversa flagul ​de pornire a pompei ​(**pumpToggle**) <​code>​
-<​code>​+
   if((millis() - previousPress) > buttonDebounce && buttonFlag)   if((millis() - previousPress) > buttonDebounce && buttonFlag)
   {   {
Line 132: Line 131:
   }   }
 </​code>​ </​code>​
-     ​* ​Vom verifica dacă butonul ​fost apăsatiar dacă **buttonFlag == 1**, vom face debouncing ​pe buton și vom inversa flagul ​de pornire a pompei ​(**pumpToggle**)+     ​* ​Citim valoarea analogică a senzorului de umiditate a solului și o convertim în procente. Dacă valoarea este mai mare de un threshold stabilit (**thresholdValue = 40** în acest caz)planta nu trebuie udată și setez pinul releului pe **LOW**. Dacă valoarea este mai mare decât threshold-ul, vom verifica dacă flag-ul pompei (**pumpToggle**) este pornit, iar dacă este, setăm pinul releului ​pe **HIGH** ​și pompa se va porni, alimentându-se ​de la baterie. <​code>​ double sensorValue = (1023 - analogRead(rainPin)) ​(100.0 / 1023); 
 +  if (sensorValue > thresholdValue) { 
 +    Serial.print(sensorValue);​ 
 +    Serial.println("​ - Doesn'​t need watering"​);​ 
 +    digitalWrite(relayPin,​ LOW); 
 +  } 
 +  else if (pumpToggle) { 
 +    Serial.print(sensorValue);​ 
 +    Serial.println("​ - Time to water your plant"​);​ 
 +    digitalWrite(relayPin,​ HIGH); 
 +  } else if (!pumpToggle) { 
 +    digitalWrite(relayPin,​ LOW); 
 +  } 
 +</​code>​ 
 +     De asemenea, vom scrie pe pin-ul de PWM al LED-ului valoarea senzorului de umiditate, scalată astfel încât să fie vizibilă schimbarea. Dacă pământul este umed, LED-ul va lumina mai puțin. <​code>​ analogWrite(pwmPin,​ 255 - sensorValue ​3.7); </​code>​ 
 +     * În final, scriem pe ecranul LCD valorile obținute. <​code>​ lcd.setCursor(0,​ 0); 
 +  lcd.print("​Temp:​ "); 
 +  lcd.print(temp.temperature);​ 
 +  lcd.print("​ C"); 
 +  lcd.setCursor(0,​ 1); 
 +  lcd.print("​Humidity:​ "); 
 +  lcd.print(sensorValue);​ 
 +  lcd.print("​%"​);​ 
 + 
 +  delay(100);​ 
 +  lcd.clear()
 + </​code>​
  
 === Rezultate Obținute === === Rezultate Obținute ===
 ---- ----
 +[[https://​www.youtube.com/​shorts/​szFKygTQOv0|Rezultate Obţinute]]
  
 === Concluzii === === Concluzii ===
 ---- ----
 +
 +A fost un proiect din care am învățat destul de multe și mi-am solidificat cunoștințe de hardware. Am avut câteva probleme care m-au făcut să caut mai amănunțit informații despre cum funcționează unele componente și consider că a fost un milestone pentru mine să realizez sistemul acesta.
  
 === Download === === Download ===
 ---- ----
  
-=== Jurnal === +{{:​pm:​prj2024:​sseverin:​proiect_pm.zip|}}
-----+
  
 === Bibliografie/​Resurse === === Bibliografie/​Resurse ===
pm/prj2024/sseverin/doru_vlad.gheorghiu.1716553055.txt.gz · Last modified: 2024/05/24 15:17 by doru_vlad.gheorghiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0