Parcheggio automatico con Arduino: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Etichette: Modifica da mobile Modifica da web per mobile Modifica da mobile avanzata
Nessun oggetto della modifica
Riga 19:
* all'esterno, un display LCD sul quale viene presentato il numero di posti auto liberi oltre a informazioni di interesse generale;
* sempre esternamente, un visualizzatore luminoso composto da 8 LED RGB, che mostrano quali posti sono disponibili e occupati;
* internamente, i posteggi sono forniti di sensori a infrarossi, i quali rilevano la presenza dell'auto e la comunicano al visualizzatore esterno.
* nell'ingresso e uscita, vengono utilizzati dei [[w:Identificazione a radiofrequenza|lettori RFID]], per l'accesso e l'uscita dei veicoli con apposita chiave elettronica;
* nell'ingresso e uscita, tramite servomotori, se la chiave viene accettata dal lettore, le sbarre si alzano;-
* internamente, i posteggi sono forniti di sensori a infrarossi, i quali rilevano la presenza dell'auto e la comunicano al visualizzatore esterno.
 
== Componenti richiesti ==
Riga 87:
#include <MFRC522.h>
 
#define SS_PIN 109
#define RST_PIN 98
 
// #define chiave "1436E6E92D"
#define chiave "14 36 E6 E9"
 
 
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo sbarra;
int posizioneSbarra = 1800;
int pinSbarra = 7;
int velSbarra = 2022; // Velocità con cui si movimenta la sbarra
 
 
Line 150 ⟶ 152:
// Alza la sbarra
delay(3000);
 
for (posizioneSbarra = 180; posizioneSbarra >= 90; posizioneSbarra--) {
for sbarra.write(posizioneSbarra = 0; posizioneSbarra >= 90; posizioneSbarra++); {
sbarra.write(posizioneSbarra);
delay(velSbarra);
delay(velSbarra);
}
// Abbassa la sbarra
delay(5000);
for (posizioneSbarra = 90; posizioneSbarra <= 180; posizioneSbarra++) {
for (posizioneSbarra = 90; posizioneSbarra > 0; posizioneSbarra--) {
sbarra.write(posizioneSbarra);
delay(velSbarra);
}
}
}
</syntaxhighlight>
Line 165 ⟶ 171:
=== Visualizzatore luminoso di posti liberi ===
[[File:Led-rgb.svg|miniatura|LED RGB con relativa pedinatura]]
Il progetto prevede l'utilizzo di 8 LED RGB, per comunicare quali – degli otto parcheggi – sono liberi o occupati. Il numero di cavi necessario è pari ai controlli (<math>8 \times 2 = 16</math>, relativi ai terminali rossi e verdi) oltre a uno comune per la massa. I LED vengono gestiti da un sistema di sensori a infrarossi, posti davanti a ciascun parcheggio, che rilevano la presenza o l'assenza di un veicolo.
 
Per il visualizzatore è stata realizzata una apposita [[Utente:Hackerino3/Parcheggio(progettazione 3D)|maschera (stampata con stampante 3D)]] posta nella facciata del parcheggio, nella quale sono inseriti gli 8 LED RGB, che – in base al colore rosso o verde – indicano se il posto auto è occupato oppure no.
[[File:Circuito_parcheggio.svg|centro|senza_cornice|800x800px|Circuito sensori infrarossi e LED parcheggio]]
 
== Codice ==
Di seguito il codice che gestisce il pannello a LED collegato con i sensori a infrarossi. <syntaxhighlight lang="arduino" line="1">
const int IR1 = A0;
const int IR2 = A1;
const int IR3 = A2;
const int IR4 = A3;
const int IR5 = A4;
const int IR6 = A5;
const int IR7 = A6;
const int IR8 = A7;
int G1= 22 ;
int R1= 23 ;
int G2= 24 ;
int R2= 25 ;
int G3= 26 ;
int R3= 27 ;
int G4= 28 ;
int R4= 29 ;
int G5= 30 ;
int R5= 31 ;
int G6= 32 ;
int R6= 33 ;
int G7= 34 ;
int R7= 35 ;
int G8= 36 ;
int R8= 37 ;
 
void setup(){
Serial.begin(9600);
pinMode(G1,OUTPUT);
pinMode(R1,OUTPUT);
pinMode(G2,OUTPUT);
pinMode(R2,OUTPUT);
pinMode(G3,OUTPUT);
pinMode(R3,OUTPUT);
pinMode(G4,OUTPUT);
pinMode(R4,OUTPUT);
pinMode(G5,OUTPUT);
pinMode(R5,OUTPUT);
pinMode(G6,OUTPUT);
pinMode(R6,OUTPUT);
pinMode(G7,OUTPUT);
pinMode(R7,OUTPUT);
pinMode(G8,OUTPUT);
pinMode(R8,OUTPUT);
}
</syntaxhighlight>Dopo aver stabilito i pin e aver definito gli output e gli input, i sensori a infrarossi cominciano la lettura, tramite la funzione analogRead(), e osservano la presenza del veicolo all'interno del posto auto. Se l'infrarossi da come uscita un segnale inferiore a 600 (valore osservato tramite la lettura del monitor seriale), il posto è vuoto e di conseguenza il LED corrispondente a tale posto rimane verde, mentre in caso contrario, il LED diventa rosso.<syntaxhighlight lang="arduino" line="1" start="45">
 
 
void loop(){
int d1 = analogRead(IR1);
int d2 = analogRead(IR2);
int d3 = analogRead(IR3);
int d4 = analogRead(IR4);
int d5 = analogRead(IR5);
int d6 = analogRead(IR6);
int d7 = analogRead(IR7);
int d8 = analogRead(IR8);
Serial.print("Analog Reading=");
Serial.print(analogRead(IR1));
Serial.print("\t Digital Reading=");
delay(500);
 
if(d1 < 600)
{
digitalWrite(G1,HIGH);
digitalWrite(R1,LOW);
}
else
{
digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
}
if(d2 < 600)
{
digitalWrite(G2,HIGH);
digitalWrite(R2,LOW);
}
else
{
digitalWrite(G2,LOW);
digitalWrite(R2,HIGH);
}
if(d3 < 600)
{
digitalWrite(G3,HIGH);
digitalWrite(R3,LOW);
}
else
{
digitalWrite(G3,LOW);
digitalWrite(R3,HIGH);
}
if(d4 < 600)
{
digitalWrite(G4,HIGH);
digitalWrite(R4,LOW);
}
else
{
digitalWrite(G4,LOW);
digitalWrite(R4,HIGH);
}
if(d5 < 600)
{
digitalWrite(G5,HIGH);
digitalWrite(R5,LOW);
}
else
{
digitalWrite(G5,LOW);
digitalWrite(R5,HIGH);
}
if(d6 < 600)
{
digitalWrite(G6,HIGH);
digitalWrite(R6,LOW);
}
else
{
digitalWrite(G6,LOW);
digitalWrite(R6,HIGH);
}
if(d7 < 600)
{
digitalWrite(G7,HIGH);
digitalWrite(R7,LOW);
}
else
{
digitalWrite(G7,LOW);
digitalWrite(R7,HIGH);
}
if(d8 < 600)
{
digitalWrite(G8,HIGH);
digitalWrite(R8,LOW);
}
else
{
digitalWrite(G8,LOW);
digitalWrite(R8,HIGH);
}
}
</syntaxhighlight>
 
=== Display LCD ===
Il progetto prevede anche l'utilizzo di un display LCD, il quale, posto sulla facciata anteriore del parcheggio, fornisce agli utenti informazioni utili riguardo all'utilizzo di questo.
 
[[File:16x2 LCD Display (cropped).jpg|miniatura|display LCD 16x2]]
 
== Codice ==
 
== Espansioni suggerite ==