Problema sensore a ultrasuoni.

Salve a tutti.
Sono nuovo sicche non so se sono nell'area giusta comunque vi spiego il problema.
Ho avuto l'idea di portare come progetto di esame un sensore di parcheggio, ma non uno qualsiasi ma fatto da me, sicche senza HC-SR04.
Solo che non riesco a programmare il mio Arduino Uno.
Il circuito che ho creato io è funzionante perchè l'ho testato con un generatore di funzioni e oscilloscopio, solo che in uscita (quindi il ricevitore) non mi mostra un segnale quadro che cambia la sua lunghezza, quindi non posso usare il comando PulseIn, però ho anche il problema in trasmissione perche non andato a vedere con l'oscilloscopio cosa mi usciva da arduino e mi dava una sinusoide invece che degli impulsi quadri.
Qualcuno potrebbe darmi un programma funzionante?
Spero di essere stato abbastanza chiaro e di aver caricato bene i file.

_3.ino (1.13 KB)

Benvenuto. :slight_smile:
Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Per un sensore standard HC RS04 io uso questo per provarli:

//HC RS04 Sensore ultrasuoni

const byte triggerPort = 7;
const byte echoPort = 8;
 
void setup() 
{ delay(1000);
  Serial.begin( 9600 );
  Serial.println( "Sensore ultrasuoni: ");
  pinMode( triggerPort, OUTPUT );
  pinMode( echoPort, INPUT );
}

void loop() 
{ digitalWrite( triggerPort, LOW ); //porta bassa l'uscita del trigger
  digitalWrite( triggerPort, HIGH ); //invia un impulso di 10microsec su trigger
  delayMicroseconds( 10 );
  digitalWrite( triggerPort, LOW );
  long duration = pulseIn( echoPort, HIGH );
  long r = 0.034 * duration / 2;
  Serial.print( "durata: " );
  Serial.print( duration );
  Serial.print( " , " );
  Serial.print( "distanza: " );
  //dopo 38ms è fuori dalla portata del sensore
  if( duration > 38000 ) 
    Serial.println( "fuori portata");
  else 
  { Serial.print( r ); Serial.println( "cm" );
  }
  delay( 1500 ); //aspetta 1.5 secondi
}

Nel tuo codice perchè non abiliti la seriale e non fai un pò di debug usando la Serial.print() invece di usare varie tone ?
Stampa r e duration

Allora mi sa non mi sono spiegato.
Io quel programma l'ho gia provato a usare ma il mio circuito non mi da in usita un segnale tanto lungo quanto distante dall'oggetto, mi da solo un impulso quadro. Sicche io devo calcolare il tempo tra i primi 10 impulsi e quello di ricezione e calcolare la distanza. Arduino poi ha in uscita una cassa che produrrà un suono.
Ho visto con l'oscilloscopio che il segnale che esce da arduino, nel trigger è nulla perchè?