#include <Servo.h>
Servo servomotor1;
// the setup function runs once when you press reset or power the board
void setup() {
servomotor1.attach(6);//servo entrada
// LED de les plaçes de pàrquing
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(A6, OUTPUT);
pinMode(A7, OUTPUT);
pinMode(A8, OUTPUT);
pinMode(A9, OUTPUT);
// display de l'entrada
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
//LDR de les plaçes de pàrquing
pinMode(A10, INPUT);
pinMode(A11, INPUT);
pinMode(A12, INPUT);
pinMode(A13, INPUT);
}
void loop() {
//És el valor que el LDR de cada plaça definirà si estan ocupades o no
int toleranciaParquing1 = 600;
int toleranciaParquing2 = 680;
int toleranciaParquing3 = 660;
int toleranciaParquing4 = 900;
// És el valor que recull cada plaça de pàrquing
int parquing1 = analogRead(A10);
int parquing2 = analogRead(A11);
int parquing3 = analogRead(A12);
int parquing4 = analogRead(A13);
// Si el valor que detecta la plaça és major que la tolerancia d'aquesta, el led s'encendra vermell i s'apagarà el led verd, i es considerara la plaça ocupada.
// Si el valor és menor, el led vermell s'apagarà i s'encendrà el led verd, i es considerarà la plaça lliure
if (parquing1>toleranciaParquing1){
digitalWrite(A3,1);
digitalWrite(A2,0);
parquing1=1;
}else{
digitalWrite(A3,0);
digitalWrite(A2,1);
parquing1=0;
}
delay(100);
if (parquing2>toleranciaParquing2){
digitalWrite(A5,1);
digitalWrite(A4,0);
parquing2=1;
}else{
digitalWrite(A5,0);
digitalWrite(A4,1);
parquing2=0;
}
delay(100);
if (parquing3>toleranciaParquing3){
digitalWrite(A7,1);
digitalWrite(A6,0);
parquing3=1;
}else{
digitalWrite(A7,0);
digitalWrite(A6,1);
parquing3=0;
}
delay(100);
if (parquing4>toleranciaParquing4){
digitalWrite(A9,1);
digitalWrite(A8,0);
parquing4=1;
}else{
digitalWrite(A9,0);
digitalWrite(A8,1);
parquing4=0;
}
delay(100);
int parquingTotal = parquing1+parquing2+parquing3+parquing4; // parquingTotal és la suma de totes les plaçes ocupades
// El display de l'entrada marcarà el nombre de plaçes lliures segons el nombre de plaçes ocupades
if (parquingTotal == 0){
digitalWrite(13,1);
digitalWrite(12,0);
digitalWrite(11,0);
digitalWrite(10,1);
digitalWrite(9,0);
digitalWrite(8,1);
digitalWrite(7,1);
}
if (parquingTotal == 1){
digitalWrite(13,1);
digitalWrite(12,1);
digitalWrite(11,0);
digitalWrite(10,1);
digitalWrite(9,1);
digitalWrite(8,0);
digitalWrite(7,1);
}
if (parquingTotal == 2){
digitalWrite(13,0);
digitalWrite(12,1);
digitalWrite(11,1);
digitalWrite(10,1);
digitalWrite(9,1);
digitalWrite(8,0);
digitalWrite(7,1);
}
if (parquingTotal == 3){
digitalWrite(13,1);
digitalWrite(12,0);
digitalWrite(11,0);
digitalWrite(10,1);
digitalWrite(9,0);
digitalWrite(8,0);
digitalWrite(7,0);
}
if (parquingTotal == 4){
digitalWrite(13,1);
digitalWrite(12,1);
digitalWrite(11,1);
digitalWrite(10,1);
digitalWrite(9,1);
digitalWrite(8,1);
digitalWrite(7,0);
}
// Si totes les plaçes estan ocupades, la barrera es tancarà i no deixarà pasar més cotxes.
// Si queden plaçes lliures la barrera s'obrirà
if (parquingTotal==4){
servomotor1.write(140);
}else{
servomotor1.write(180);
}
}