Devices & Components
Arduino Uno Rev3
160 Ohm resistor
RED LED 10MM
Multi-Turn Precision Potentiometer- 10k ohms (25 Turn)
Green LED 5mm
MLX90614 Temperature Sensor
Soil Moisture Sensor 3.3-5V AO+DO
Pantalla LCD 16x2
Software & Tools
Tinkercad
Project description
Code
Terrarium Climate Controller
cpp
1#include <LiquidCrystal.h> 2 3 4const int SOIL_POW = A0; 5const int SOIL_SENS = A1; 6const int TEMP = A2; 7const int FAN_LIGHT = 2; 8const int HEAT_LAMP = 9; 9 10const int RS = 3; 11const int E = 4; 12const int DB4 = 5; 13const int DB5 = 6; 14const int DB6 = 7; 15const int DB7 = 8; 16 17 18const char DEGREE = (char) 178; 19 20LiquidCrystal lcd(RS, E, DB4, DB5, DB6, DB7); 21 22int moisture = 0; 23int tempVal; 24int tempC; 25 26void setup() 27{ 28 lcd.begin(16,2); 29 30 pinMode(TEMP, INPUT); 31 pinMode(FAN_LIGHT, OUTPUT); 32 pinMode(HEAT_LAMP, OUTPUT); 33 34 pinMode(SOIL_POW, OUTPUT); 35 pinMode(SOIL_SENS, INPUT); 36} 37 38void loop() 39{ 40 lcd.clear(); 41 42 tempVal = analogRead(TEMP); 43 tempC = map(tempVal, 20, 358, -40, 125); 44 45 digitalWrite(SOIL_POW, HIGH); 46 delay(10); 47 moisture = analogRead(SOIL_SENS); 48 digitalWrite(SOIL_POW, LOW); 49 50 lcd.setCursor(0,0); 51 lcd.print("Temp: "); 52 lcd.print(tempC); 53 lcd.print(DEGREE); 54 lcd.print("C "); 55 lcd.setCursor(0,1); 56 57 if (moisture < 300){ 58 lcd.print("Water ASAP"); 59 } 60 else if (moisture < 600){ 61 lcd.print("Dry"); 62 } 63 else{ 64 lcd.print("Moist"); 65 } 66 if (tempC < 25){ 67 digitalWrite(HEAT_LAMP, HIGH); 68 digitalWrite(FAN_LIGHT, LOW); 69 } 70 else if (tempC > 29){ 71 digitalWrite(HEAT_LAMP, LOW); 72 digitalWrite(FAN_LIGHT, HIGH); 73 } 74 else { 75 digitalWrite(FAN_LIGHT, LOW); 76 digitalWrite(HEAT_LAMP, LOW); 77 } 78 delay(1000); 79}
Comments
Only logged in users can leave comments