⭐⭐⭐ Sfida ⏱️ 25 minuti

Misuratore di distanza con barra luminosa

Costruisci una barra luminosa che mostra quanto è vicina una cosa. Lontano: nessuna lucina. Più è vicina, più lucine si accendono. Prima verde, poi arancione e molto vicino rosso.

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

🧰 Che cosa ti serve?

1× Arduino UNO
1× Sensore di distanza HC-SR04
1× Anello LED RGB (8 LED)
🔌
Cavo USB + Cavetti jumper

🗺️ 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 · D6 Anello LED RGB (8 LED) · DI
Arduino UNO · 5V Anello LED RGB (8 LED) · 5V
Arduino UNO · GND Anello LED RGB (8 LED) · GND

🛠️ 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 l'anello LED: DI al pin 6, 5V a 5V e GND a GND.

💻 Il codice

// Misuratore di distanza con barra luminosa
// Più ti avvicini, più lucine si accendono: verde, poi arancione, poi rosso.

#include <Adafruit_NeoPixel.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 RING_PIN = 6;     // DI dell'anello LED sul pin 6
const int NUMERO_LED = 8;
const int DISTANZA_MAX = 80; // Oltre questo (in cm): tutte le lucine spente

Adafruit_NeoPixel anello(NUMERO_LED, RING_PIN, NEO_GRB + NEO_KHZ800);

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);
  anello.begin();
  anello.setBrightness(40);
  anello.show();
}

void loop() {
  long distanza = misuraDistanza();
  Serial.print(F("Distanza: "));
  Serial.print(distanza);
  Serial.println(F(" cm"));

  // Quante lucine devono accendersi? Vicino = 8, lontano = 0
  int numero = map(constrain(distanza, 0, DISTANZA_MAX), 0, DISTANZA_MAX, NUMERO_LED, 0);

  for (int i = 0; i < NUMERO_LED; i++) {
    if (i < numero) {
      if (i < 3)      anello.setPixelColor(i, anello.Color(0, 255, 0));    // Verde
      else if (i < 6) anello.setPixelColor(i, anello.Color(255, 120, 0));  // Arancione
      else            anello.setPixelColor(i, anello.Color(255, 0, 0));    // Rosso
    } else {
      anello.setPixelColor(i, 0);                                        // Spento
    }
  }
  anello.show();
  delay(100);
}

🧠 Che cosa fa il codice?

  • misuraDistanza() misura la distanza con il HC-SR04.
  • map() trasforma la distanza in un numero di lucine: da 0 a 8.
  • Le prime 3 lucine sono verdi, le 3 dopo arancioni e le ultime 2 rosse.

🎯 Prova anche…

  • Fai lampeggiare tutte le lucine in rosso se sei più vicino di 10 cm
  • Aggiungi il buzzer che fa beep quando è rosso
  • Rendi il misuratore più sensibile: tutte le lucine accese a 40 cm invece di 80 cm

🚀 Costruisci questo progetto con Codey: apri codey.online/it/starter-kits/uno/projects/distance-light-bar 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