IL CODICE

Close-up of Arduino microcontroller connected to a breadboard with a glowing LED.

#include <Servo.h>

const int trigPin = 12;
const int echoPin = 13;
const int servoPin = 6;

Servo myServo;
long durata;
float distanza;
float somma;

// Stato trappola
bool trappolaChiusa = false;
bool oggettoVicino = false;

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

myServo.attach(servoPin);
myServo.write(0); // posizione iniziale (aperta)

Serial.begin(9600);
}

// funzione per leggere distanza
float misuraDistanza() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

durata = pulseIn(echoPin, HIGH);
float distanza = durata * 0.034 / 2;
return distanza;
}

void loop() {
// media di 5 misure
somma = 0;
for (int i = 0; i < 5; i++) {
somma += misuraDistanza();
delay(50);
}
distanza = somma / 5;

Serial.print(“Distanza media: “);
Serial.println(distanza);

// rilevamento oggetto entro 20 cm
if (distanza > 0 && distanza <= 20) {
oggettoVicino = true;
} else {
oggettoVicino = false;
}

// logica trappola
if (oggettoVicino && !trappolaChiusa) {
myServo.write(90); // chiudi trappola
trappolaChiusa = true; // segna che la trappola è chiusa
}

// quando l’oggetto se ne va
if (!oggettoVicino && trappolaChiusa) {
delay(1500); // attesa 2,5 secondi
myServo.write(0); // riapri trappola
trappolaChiusa = false; // reset stato
}

delay(200);
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto