Ciao a tutti!
In questo articolo vi farò vedere come realizzare un progetto che comprenda molti sensori.
Il progetto che stiamo per realizzare avrà le seguenti funzioni:
– Leggere temperatura e umidità e mostrarla sul display LCD
– Rilevare movimenti
– Accendere/Spegnere la luce in base alla luminosità
– Mostrare su dei LED la temperatura e far suonare un buzzer se la temperatura supera i 35°C
INIZIAMO!!
Prima di tutto il materiale di cui abbiamo bisogno è:
– Arduino Uno
– Breadboard (basetta)
– 12 LED
– 3 resistori da 220Ohm
– 2/3 resistori da 1KOhm
– Una fotoresistenza
– Un buzzer
– Un sensore di umidità e temperatura DHT11
– Un sensore di movimento
– Un display LCD 16×02
Montiamo il circuito come descritto nell’immagine seguente:
Poi passiamo al caricamento dello sketch:
[c]
// Created by //
// Alessio Bigini 2015 //
// https://alessiobigini.it //
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int buzzer = 11;
int led = 8;
int led1 = 6;
int tiltPin = 5;
int ledtilt = 4;
void setup()
{
Serial.begin(9600);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(led, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(tiltPin, INPUT);
pinMode(ledtilt, OUTPUT);
lcd.init();
lcd.backlight();
dht.begin();
lcd.print(" Alessio Bigini");
lcd.setCursor(0, 1);
lcd.print("");
delay(2500);
}
void loop()
{
int h = dht.readHumidity(); //Leggo l’umidità
int t = dht.readTemperature(); //Leggo la temperatura
lcd.setCursor(0, 0); //Stampo a schermo la temperatura e l’umidità
lcd.print("Temperatura: ");
lcd.print(t);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Umidita’: ");
lcd.print(h);
lcd.print("%");
if (t < 18)//Temperatura inferiore a 18°C
{
digitalWrite(12, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
noTone(buzzer);
}
if (t > 18 && t < 35)//Temperatura superiore a 18°C e inferiore a 35°C
{
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(12, LOW);
noTone(buzzer);
}
if (t > 35)//Temperatura superiore a 35°C
{
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
tone(buzzer, 392);
}
int sensore = digitalRead(tiltPin);
if ( sensore == HIGH )
digitalWrite(ledtilt, HIGH);
else
digitalWrite(ledtilt, LOW);
int luce = analogRead (A0); //porta analogica utilizzata
if (luce < 100) //condizione
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
if (luce < 100) //condizione
digitalWrite(led1, HIGH);
else
digitalWrite(led1, LOW);
}
[/c]
Una volta caricato lo sketch divertitevi a modificare il progetto aggiungendo sensori ecc.
A seguire alcune foto del progetto: