Utente:N.Bertucccioli/Sensore di luminosità: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Creata pagina con "pagina per progetto arduino"
 
Nessun oggetto della modifica
Riga 1:
== Sensore di luminosità ==
pagina per progetto arduino
 
Questo progetto realizza un '''sensore di luminosità''' che, data la luce nell’ambiente e il livello di luminosità, attiva e disattiva automaticamente l’illuminazione oltre a indicale l’intensità luminosa e lo stato dell’illuminazione in un monitor.
 
=== Descrizione del progetto ===
 
Il sistema è così composto:
 
* in ingresso si hanno un sensore di luminosità che acquisisce l'intensità luminosa esterna e un potenziometro per regolare il livello di luce al di sotto del quale va accesa l'illuminazione;
* in uscita si ha un display LCD a 2 righe per mostrare la condizione di ''luce'' e ''buio''; un led che simula una lampada che si accende nella condizione di ''buio''.
 
Quando il sensore di luminosità è al di sotto di un livello stabilito dall’utente:
 
* si scrive nella prima riga del display lo stato ''buio''/''luce'';
* si accende il diodo led, in cui lo stato sia ''buio''.
 
Il potenziometro serve per regolare l'intensità luminosa al di sotto della quale si deve accendere l'impianto luminoso (simulato da un diodo led).
 
Così è possibile attivare l’illuminazione quando si ha un livello di illuminazione prestabilito, il quale varia a seconda delle esigenze dell’utente.
 
=== Schema elettrico ===
 
[[File:Sensore di luminosità schema.png|centro|senza_cornice|600x600px]]
*Un display LCD a 2 righe che è uno schermo con 2 righe e 16 colonne che permette di far scrivere ciò che si vuole su di esso;
*Il potenziometro ruotando la manopola permette di variare la resistenza da 0 a 1023;
*il fotoresistore varia la sua resistenza a differenza della luminosità presente nel luogo.
 
=== Schema di montaggio ===
 
[[File:Schema di montaggio Breadboard.png|centro|senza_cornice|600x600px]]
 
=== Codice ===
Definizione delle variabili, una libreria e il disegno da imprimere a forma di %
 
<syntaxhighlight lang="arduino" line="1" start="1">
#include <LiquidCrystal_I2C.h>
#define LED_PIN 3
 
int fotor=A0;
int led=2;
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
byte perc []={ //disegno il simbolo della percentuale
B11000,
B11001,
B00011,
B00110,
B01100,
B11000,
B10011,
B00011
};
//le 3 frasi che possono venire inpresse sullo schermo
String frase1 = "Luce";
String frase2 = "Buio";
String frase3 = "int.luce:";
</syntaxhighlight>
 
Definisco il setup dove viene impostato il led come OUTPUT e il FOTORESISTORE e il POTENZIOMETRO come INPUT, viene anche creato il simbolo di percentuale
 
<syntaxhighlight lang="arduino" line="1" start="23">
void setup(){
lcd.init();
lcd.createChar(0, perc);
lcd.backlight();
pinMode(LED_PIN, OUTPUT);
pinMode(fotor, INPUT);
pinMode(led, OUTPUT);
analogWrite(LED_PIN, 50);
Serial.begin(9600);
}
</syntaxhighlight>
 
Nel loop faccio funzionare le due variabili che ho creato per far funzionare tutto e inizio a scrivere una frase che non dovrà cambiare mai a differenza delle altre 2 che variano a differenza di ciò che il fotoresistore e il potenziometro gli dicono
 
<syntaxhighlight lang="arduino" line="1" start="33">
void loop(){ //qui provo a far funzionare tutto in loop
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(frase3);
luce();
potenziometro();
delay(500);
}
</syntaxhighlight>
 
La funzione che ho creato per far funzionare il potenziometro, scrivere la percentuale sul display e far accendere il led
 
<syntaxhighlight lang="arduino" line="1" start="41">
void potenziometro(){ //qui creo la funzione per far funzionare il potenziometro
float pot = analogRead(A1);
int percentuale = pot/1023*100;
int lucex = analogRead(fotor);
lcd.setCursor(10, 1); //qui scrivo sullo schermo a che valore si trova il potenziometro in percentuale
lcd.print(percentuale);
if(percentuale<10){
lcd.setCursor(12, 1);
lcd.write(byte(0));
}
if(percentuale>9){
lcd.setCursor(13, 1);
lcd.write(byte(0));
}
 
//accendo e spengo il led potendo decidere anche a che intensità accenderlo con il potenziometro
int luceLed(lucex-percentuale);
if (luceLed<930){
digitalWrite(led, LOW);
}
else{
digitalWrite(led, HIGH);
}
}
</syntaxhighlight>
 
Questa è la funzione che ho creato per far funzionare invece il fotoresistore e far scrivere sullo schermo lo stato della luminosità luce o buio
 
<syntaxhighlight lang="arduino" line="1" start="66">
void luce (){
int luce = analogRead(fotor);
if(luce<950){ //il valore 950 è quello della luce, da me è 950 perchè è l'unico valore con cui funziona(da controllare nel monitor seriale)
lcd.setCursor(0, 0);
lcd.print(frase1);
}
else{
lcd.setCursor(0, 0);
lcd.print(frase2);
}
}
</syntaxhighlight>
 
=== Conclusioni ===
 
Il dispositivo può essere espanso introducendo un sensore di prossimità per attivare l’illuminazione quando è presente una persona.