Categories:

eGreen – Codice in C

//Libraries

include //Libreria DHT Sensor
include //Libreria Liquid Crystal Display
include //Libreria Servo
define LED 3 //Pin Led (Digitale)
define DHTPIN 8 //Pin DHT (Digitale)
define SERVO 9 //Pin Servo (Digitale)
define BUZZ 10 //Pin Buzzer (Digitale)
define FOTORESISTORE 0 //Pin Fotoresistore (Analogico)
define ACS712 1 //Pin ACS712 (Analogico)
define SENSOREGAS 2 //Pin sensore di gas MQ-2/MQ-5 (Analogico);

LiquidCrystal_I2C lcd(0x27,20,4); //Definire il tipo di Display
Servo servo; //Definire il Servo
DHT dht(DHTPIN, DHTTYPE);
//Variabili
float pe; //Energia prodotta
int brg; //Livello luminosità
int hum; //Livello umidità
int temp; //Livello Temperatura
int volt; //Voltaggio
int gas; //Livello di gas
int grad=90; //Valore dell’angolo dei Servo
bool disp; //Se disp=1 allora scrive i valori se disp=0 allora scrive le problematiche
con il gas
//Setup
void setup() {
lcd.begin (); //Inizializza il display digitale
dht.begin (); //Inizializza il DHT sensor
lcd.backlight (); //Illumina lo sfondo del display
//servo.attach(SERVO);
pinMode (A0, INPUT);
pinMode (A1, INPUT);
pinMode (A2, INPUT);
pinMode (LED,OUTPUT);
pinMode (BUZZ, OUTPUT);
//servo.attach(SERVO);
Serial.begin (9600);
}
//Funzione di attach detach dei servo motori
void ad(int p,int grad1){
servo.attach (p);
11
servo.write(grad1);
delay(1000);
servo.detach();
}
//Luci + Fotoresistore
void luci(){
brg= analogRead (FOTORESISTORE); //Leggi livello di luminosità
//I/O Luce
if ( brg < 60 ) { <br>digitalWrite (3,HIGH); //Accensione Luci <br>}else { <br>digitalWrite (3,LOW); //Spegnimento Luci <br>}<br> }<br> //Display + Servo + DHT Sensor + Gas Sensor<br><br> void schermo(){<br> gas = analogRead (SENSOREGAS); <br>Serial.print(gas); <br>if (gas>400) {<br>
lcd.setCursor(0,0);
lcd.print (” ATTENZIONE “);
lcd.setCursor (0,1);
lcd.print (” PRESENZA DI GAS! “);
lcd.setCursor(0,2);
lcd.print (” ATTENZIONE “);
lcd.setCursor (0,3);
lcd.print (” PRESENZA DI GAS! “);
if (grad != 0 ){
grad = 0;
ad(SERVO,grad);
}
} else if (gas <= 400){ pe = analogRead (ACS712); pe = abs((pe-500)*5); hum = dht.readHumidity();//Lettura dei valori del DHT temp = dht.readTemperature();//Lettura dei valori del DHT lcd.setCursor (0,0); //Imposta il puntatore alla colonna 0 (La prima) nella riga 0 (La Prima) lcd.print (“Temperatura= “); //Scrivi “Temperatura= ” lcd.setCursor (13,0); //Imposta il puntatore alla colonna 13 nella riga 0 lcd.print (temp);//Scrivi la temperatura lcd.setCursor (16,0); lcd.print (“C”); lcd.setCursor (0,1); //Imposta il puntatore alla colonna 0 nella riga 1 lcd.print (“Umidita’= “); //Scrivi “Umidità= ” lcd.setCursor (15,1); //Imposta il puntatore alla colonna 10 nella riga 1 lcd.print (hum); //Scrivi l’umidità lcd.setCursor (16,1); lcd.print (“% “); lcd.setCursor (0,2); //Imposta il cursore sulla colonna 0 e nella riga 2 12 lcd.print (“E. Prodotta= “); //Scrivi “Energia Prodotta=” lcd.setCursor (13,2); //Imposta il cursore sulla colonna 13 e nella riga 2 lcd.print (pe); //Scrivi l’E. prodotta lcd.setCursor (0,3); lcd.print(“Livello gas: “); lcd.setCursor(15,3); lcd.print(gas); if ( temp > 24 ){
if (grad!=0){
grad = 0;
ad(SERVO,grad);
}
} else{
if (grad!=90) {
grad = 90;
ad(SERVO,grad);
}
}
delay (1000); //Aspetta 1000 ticks prima di riavviare la funzione
}
}
void gass(){
gas = analogRead (SENSOREGAS);
if (gas>400) {
digitalWrite (BUZZ, HIGH);
} else{
digitalWrite (BUZZ, LOW);
}
}
//Main
void loop() {
schermo();
luci();
gass();
}

Tags: