#include <Servo.h>
Servo sbarra;
const int trigPin = 10;
const int echoPin = 11;
const int led1 = 2;
const int led2 = 3;
long durata;
float distanza;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
// Inizializza servo
sbarra.attach(9);
sbarra.write(90); // Sbarra alzata
Serial.begin(9600); // Per debug, opzionale
}
void loop() {
distanza = misuraDistanza();
if (distanza < 4.0) { // Presenza rilevata
lampeggiaLED();
sbarra.write(0); // Abbassa la sbarra
delay(5000); // Aspetta 5 secondi
spegniTutto();
sbarra.write(90); // Alza la sbarra
}
}
float misuraDistanza() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
durata = pulseIn(echoPin, HIGH);
return durata * 0.034 / 2; // Conversione in cm
}
void lampeggiaLED() {
for (int i = 0; i < 10; i++) {
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
delay(500);
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
delay(500);
}
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
}
void spegniTutto() {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}