Alen96
Nuovo Utente
- Messaggi
- 3
- Reazioni
- 0
- Punteggio
- 21
Salve, ho un problema. Ho realizzato un parcheggio meccanizzato e ho due sensori a infrarossi di prossimità, uno per l'ingresso e uno per l'uscita. Ho impostato che possono entrare nel parcheggio attraverso il sensore di entrata solamente 10 macchine (<=10) ma in realtà così non accade perché il valore non riporta: alle volte si blocca con 5 e alle volte si blocca con 6. Da cosa può dipendere?
C:
#include <Servo.h>
Servo motore;
//Pin
const int infrarossoIngresso = 13;
const int infrarossoUscita = 12;
const int ledVerde = 3;
const int ledRosso = 4;
const int ledGiallo = 5;
const int fotoresistenza = A5;
//Variabili
int posizioneServo = 0;
int varIngresso = 0;
int varUscita = 0;
int contatorePosti = 0;
int varLuminosita = 0;
int stato = 0;
void setup()
{
Serial.begin(9600);
pinMode(infrarossoIngresso, INPUT);
pinMode(infrarossoUscita, INPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRosso, OUTPUT);
pinMode(ledGiallo, OUTPUT);
pinMode(fotoresistenza, INPUT);
motore.attach(2);
}
void loop ()
{
varIngresso = digitalRead(infrarossoIngresso);
varUscita = digitalRead(infrarossoUscita);
varLuminosita = analogRead(fotoresistenza);
if(varIngresso == HIGH && varUscita == HIGH)
{
posizioneServo = 15;
delay(15);
motore.write(posizioneServo);
delay(15);
}
if(varIngresso == LOW && varUscita == HIGH && contatorePosti <= 10)
{
stato = 1;
Serial.println(contatorePosti);
posizioneServo = 90;
delay(1000);
motore.write(posizioneServo);
delay(15);
}
if(varIngresso == HIGH && varUscita == LOW)
{
stato = 2;
posizioneServo = 90;
delay(1000);
motore.write(posizioneServo);
delay(15);
}
if(stato == 1)
{
contatorePosti++;
stato = 0;
}
if(stato == 2)
{
contatorePosti--;
stato = 0;
}
if(posizioneServo < 85)
{
digitalWrite(ledVerde, LOW);
digitalWrite(ledRosso, HIGH);
}
else
{
digitalWrite(ledRosso, LOW);
digitalWrite(ledVerde, HIGH);
}
if(varLuminosita > 900)
{
digitalWrite(ledGiallo, HIGH);
}
else {
digitalWrite(ledGiallo, LOW);
}
}