Piezoelettrico su HC-SR04

Ho iniziato un progetto a scuola, il progetto consiste nell’utilizzo di un UNO col sensore ad ultrasuoni HC-SR04 e un display dove vengono visualizzate le informazioni riguardanti la distanza.
Vorrei aggiungere un buzzer (ho un piezo preso da una scheda madre) che mi dia un suono proporzionale alla distanza, ma non riesco a farlo funzionare.
Qualcuno può gentilmente aggiungermi il pezzo di codice per far funzionare il buzzer? GRAZIE INFINITE

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  

int Trigger(9);
int Echo(10);
int Distanza;
int Tempo;

void setup() {
  
  lcd.begin(16, 4);
  
  pinMode (Trigger, OUTPUT);
  pinMode (Echo, INPUT);
  
}

void loop() {
  
  digitalWrite(Trigger, HIGH);
  delay(100);
  digitalWrite(Trigger, LOW);
  
  Tempo= pulseIn(Echo, HIGH);
  
  Distanza = Tempo/58
  
  
  ;lcd.clear();
  lcd.print("DISTANZA:");
  lcd.setCursor(0, 1);
  lcd.print(Distanza, 10);
  lcd.print(" cm");
  lcd.setCursor(-4, 2);
  lcd.print("TEMPO DI RISP:");
  lcd.setCursor(-4, 3);
  lcd.print(Tempo, 10);
  lcd.print(" Microsec.");
    
  delay(100);
  
}

Dipende dal buzzer. Se é un buzzer con oscillatore integrato non riuscirai a cambiare tono.
Emette un suono se lo connetti ai 5V?
Ciao Uwe

Risolto!! :slight_smile:
Lo speaker è un comunissimo piezo staccato da una scheda madre di un pc.
Ecco lo sketch modificato:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  

int Trigger(9);
int Echo(10);
int Distanza;
int Tempo;
int x;
int speaker(13);

void setup() {
  
  lcd.begin(16, 4);
  
  pinMode (Trigger, OUTPUT);
  pinMode (Echo, INPUT);
  
}

void loop() {
  
  digitalWrite(Trigger, HIGH);
  delay(100);
  digitalWrite(Trigger, LOW);
  
  Tempo= pulseIn(Echo, HIGH);
  
  Distanza = Tempo/58
  
  
  ;lcd.clear();
  lcd.print("DISTANZA:");
  lcd.setCursor(0, 1);
  lcd.print(Distanza, 10);
  lcd.print(" cm");
  lcd.setCursor(-4, 2);
  lcd.print("TEMPO DI RISP:");
  lcd.setCursor(-4, 3);
  lcd.print(Tempo, 10);
  lcd.print(" Microsec.");
    
  delay(100);
  
  if(Distanza<60) {
    x=map(Distanza, 60, 0, 0, 2180);
    tone(speaker, x, 50);
  }
  
}

Adesso il funzionamento è il seguente: Il display mostra distanza fino a 160 (cm) e tempo di risposta (microsec.) e il piezo emetterà un suono crescente da 60cm fino a 4-3 cm (che è il limite massimo del sensore)
PS: Grazie per la disponibilità!!! :smiley: