⭐⭐⭐ Sfida
⏱️ 30 minuti
Sensore di parcheggio deluxe
La versione deluxe del sensore di parcheggio! Fa bip più in fretta quando ti avvicini, e il display OLED mostra la distanza in centimetri. Con una barretta che diventa più lunga quando ti avvicini.
🧰 Che cosa ti serve?
🔌
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 · D8 |
Buzzer attivo · S |
Arduino UNO · 5V |
Buzzer attivo · + |
Arduino UNO · GND |
Buzzer attivo · - |
Arduino UNO · A4 |
Piccolo schermo OLED 0,91" · SDA |
Arduino UNO · A5 |
Piccolo schermo OLED 0,91" · SCL |
Arduino UNO · 5V |
Piccolo schermo OLED 0,91" · VCC |
Arduino UNO · GND |
Piccolo schermo OLED 0,91" · GND |
🛠️ Così lo costruisci
- Collega il HC-SR04: Trig al pin 9, Echo al pin 10, Vcc a 5V e Gnd a GND.
- Collega il cicalino: S al pin 8, + a 5V e − a GND.
- Collega il display OLED: SDA a A4, SCL a A5, VCC a 5V e GND a GND.
- Tre componenti hanno bisogno di 5V e GND. Usa le strisce + e − della tua breadboard.
💻 Il codice
// Sensore di parcheggio deluxe
// Come il sensore di parcheggio normale, ma ora vedi la distanza anche sul display OLED.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.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 CICALINO_PIN = 8; // S del cicalino sul pin 8
Adafruit_SSD1306 display(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
// Misura la distanza in centimetri
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; // Nessun eco: niente vicino
return tempo / 58;
}
// Mostra la distanza grande sul display, con una barretta sotto
void mostraDistanza(long distanza) {
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
if (distanza >= 999) {
display.print(F("---"));
} else {
display.print(distanza);
display.print(F(" cm"));
}
// Barretta: più vicino, più lunga
int lunghezza = map(constrain(distanza, 0, 100), 0, 100, 128, 0);
display.fillRect(0, 24, lunghezza, 8, SSD1306_WHITE);
display.display();
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(CICALINO_PIN, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(SSD1306_WHITE);
}
void loop() {
long distanza = misuraDistanza();
mostraDistanza(distanza);
if (distanza < 5) {
digitalWrite(CICALINO_PIN, HIGH); // Molto vicino: un tono lungo
delay(100);
} else if (distanza < 50) {
digitalWrite(CICALINO_PIN, HIGH); // Bip breve
delay(50);
digitalWrite(CICALINO_PIN, LOW);
delay(distanza * 10); // Più vicino = bip più veloci
} else {
digitalWrite(CICALINO_PIN, LOW);
delay(100);
}
}
🧠 Che cosa fa il codice?
misuraDistanza()misura la distanza in centimetri con il HC-SR04.mostraDistanza()mette il numero grande sul display e disegna una barretta confillRect().- Il cicalino fa bip più in fretta quando la distanza diventa più piccola.
🎯 Prova anche…
- Mostra "STOP!" sul display se sei a meno di 5 cm
- Mostra la distanza in metri se qualcosa è a più di 1 metro
- Aggiungi l'anello LED che cambia colore da verde a rosso
🚀 Costruisci questo progetto con Codey: apri codey.online/it/starter-kits/uno/projects/parking-sensor-deluxe e clicca su FAI QUESTO. Così il codice e lo schema di collegamento sono subito pronti.
Codey Online è un prodotto di OTRONIC