⭐⭐⭐ Sfida ⏱️ 30 minuti

Sbarra automatica

La versione furba della sbarra! Il sensore di distanza vede che arriva un'auto. Poi il cicalino fa beep e la sbarra si apre da sola. L'auto è andata via? Allora si richiude.

Prima fai un veloce accesso. Poi il tuo progetto è subito pronto.

🧰 Che cosa ti serve?

🗺️ Schema di collegamento

Segui i fili dall'Arduino a ogni componente. Puoi scegliere tu i colori dei fili.

Da A
Arduino UNO · D9 Sensore di distanza HC-SR04 · Trig
Arduino UNO · D10 Sensore di distanza HC-SR04 · Echo
Arduino UNO · 5V Sensore di distanza HC-SR04 · Vcc
Arduino UNO · GND Sensore di distanza HC-SR04 · Gnd
Arduino UNO · D5 Servomotore SG90 · PWM
Arduino UNO · 5V Servomotore SG90 · VCC
Arduino UNO · GND Servomotore SG90 · GND
Arduino UNO · D8 Buzzer attivo · S
Arduino UNO · 5V Buzzer attivo · +
Arduino UNO · GND Buzzer attivo · -

🛠️ Così lo costruisci

  1. Collega il HC-SR04: Trig al pin 9, Echo al pin 10, Vcc a 5V e Gnd a GND.
  2. Collega il servo: arancione al pin 5, rosso a 5V e marrone a GND.
  3. Collega il cicalino: S al pin 8, + a 5V e − a GND.
  4. Incolla una cannuccia o uno stecchino del gelato sul servo come sbarra e metti il sensore davanti.

💻 Il codice

// Sbarra automatica
// Arriva un'auto (qualcosa a meno di 15 cm)? Allora il cicalino fa beep e la sbarra si apre.

#include <Servo.h>

const int TRIG_PIN = 9;       // Trig del HC-SR04 sul pin 9
const int ECHO_PIN = 10;      // Echo del HC-SR04 sul pin 10
const int SERVO_PIN = 5;      // Filo arancione/giallo del servo sul pin 5
const int CICALINO_PIN = 8;   // S del cicalino sul pin 8
const int VICINO = 15;        // Da questa distanza (cm) la sbarra si apre

const int CHIUSO = 0;         // Angolo quando la sbarra è chiusa
const int APERTO = 90;        // Angolo quando la sbarra è aperta

Servo sbarra;

long misuraDistanza() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  long tempo = pulseIn(ECHO_PIN, HIGH, 30000);
  if (tempo == 0) return 999;
  return tempo / 58;
}

void setup() {
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(CICALINO_PIN, OUTPUT);
  sbarra.attach(SERVO_PIN);
  sbarra.write(CHIUSO);
}

void loop() {
  long distanza = misuraDistanza();

  if (distanza < VICINO) {
    Serial.println(F("Auto vista! Sbarra aperta."));
    digitalWrite(CICALINO_PIN, HIGH); // Beep breve
    delay(100);
    digitalWrite(CICALINO_PIN, LOW);

    sbarra.write(APERTO);
    delay(1000);
    // Resta aperta finché l'auto è ancora lì
    while (misuraDistanza() < VICINO) {
      delay(200);
    }
    delay(2000);                      // Aspetta ancora un po' finché l'auto è davvero via
    sbarra.write(CHIUSO);
    Serial.println(F("Sbarra chiusa."));
  }
  delay(100);
}

🧠 Che cosa fa il codice?

  • Il HC-SR04 misura sempre la distanza. Meno di 15 cm? Allora c'è un'auto.
  • Il cicalino fa un breve beep e il servo gira a 90 gradi: aperto.
  • Finché l'auto è lì, la sbarra resta aperta. Poi aspettiamo 2 secondi e si chiude.

🎯 Prova anche…

  • Conta quante auto sono passate e mostralo nel monitor seriale
  • Aggiungi un LED rosso e uno verde come semaforo vicino alla sbarra
  • Fai aprire la sbarra solo se viene premuto anche un pulsante

🚀 Costruisci questo progetto con Codey: apri codey.online/it/starter-kits/uno/projects/automatic-barrier e clicca su FAI QUESTO. Così il codice e lo schema di collegamento sono subito pronti.

Prima fai un veloce accesso. Poi il tuo progetto è subito pronto.
⬇️ Scarica questa pagina come PDF 📚 Scarica il tutorial completo (PDF)

Codey Online è un prodotto di OTRONIC

Crea il tuo progetto Arduino o ESP32 con l'AI

Descrivi cosa vuoi realizzare. Codey Online scrive il codice, disegna lo schema di collegamento, lo compila e programma la tua scheda direttamente dal browser.

Inizia gratis