#include <DHT.h>
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 8
// 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11
// dht11 è il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 10);
// connessione display (pin)
int pioggia;
int luce;
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
// imposto il tipo di display (colonne, righe)
lcd.print("Temperatura C");
lcd.setCursor(0,1);
lcd.print("Umidita'%");
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(13,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int t = dht.readTemperature();
int h = dht.readHumidity();
// posiziono il cursore alla colonna 12 e riga 0
lcd.setCursor(14, 0);
lcd.print(t);
lcd.setCursor(14, 1);
lcd.print(h);
pioggia=analogRead(A0);
Serial.println(pioggia);
delay(500);
if(0<=pioggia && pioggia<250)
digitalWrite(13, HIGH);
if(0<=pioggia && pioggia<250)
digitalWrite(6, LOW);
if(0<=pioggia && pioggia<250)
digitalWrite(7, LOW);
if(250<pioggia && pioggia<305)
digitalWrite(13, LOW);
if(250<pioggia && pioggia<305)
digitalWrite(6, LOW);
if(250<pioggia && pioggia<305)
digitalWrite(7, HIGH);
if (305<pioggia)
digitalWrite(7, LOW);
if (305<pioggia)
digitalWrite(6, HIGH);
if (305<pioggia)
digitalWrite(13, LOW);
luce=analogRead(A1);
Serial.println(luce);
delay(500);
if (luce>200) {
digitalWrite(9, HIGH);
}
else {
digitalWrite(9, LOW);
}
}
#include <math.h>
#define WindSensorPin (2) // The pin location of the anemometer sensor
volatile unsigned long Rotations; // cup rotation counter used in interrupt routine
volatile unsigned long ContactBounceTime; // Timer to avoid contact bounce in interrupt routine
float WindSpeed; // speed miles per hour
void setup() {
Serial.begin(9600);
pinMode(WindSensorPin, INPUT);
attachInterrupt(digitalPinToInterrupt(WindSensorPin), isr_rotation, FALLING);
Serial.println("Davis Wind Speed Test");
Serial.println("Rotations\tMPH");
}
void loop() {
Rotations = 0; // Set Rotations count to 0 ready for calculations
sei(); // Enables interrupts
delay (3000); // Wait 3 seconds to average
cli(); // Disable interrupts
// convert to mp/h using the formula V=P(2.25/T)
// V = P(2.25/3) = P * 0.75
WindSpeed = Rotations * 0.75;
Serial.print(Rotations); Serial.print("\t\t");
Serial.println(WindSpeed);
}
// This is the function that the interrupt calls to increment the rotation count
void isr_rotation () {
if ((millis() - ContactBounceTime) > 15 ) { // debounce the switch contact.
Rotations++;
ContactBounceTime = millis();
}
}