Sensore ad ultrasuoni

 

 

/*
CODICE PER DETERMINARE LA DISTANZA TRA
UN SENSORE A ULTRASUONI DEVANTECH SRF04
E UN OSTACOLO.
*/
long duration, inches, cm;
long echo = 0;
int pinTrig = 6;    //il pin utilizzato  il pin 9, chiamato pinTrig
int pinEcho = 7;
int pinLED = 8;
long val = 0;
boolean vicino = false;

void setup()
{
Serial.begin(57600);  // attivazione della comunicazione seriale
// per ottenere i dati di ritorno dal sensore
pinMode (pinLED, OUTPUT);
digitalWrite (pinLED, LOW);

}

long ping()
{
// impostazione
pinMode(pinEcho, INPUT);       // il pin 10  settato come input
digitalWrite(pinEcho, HIGH);   // attiviamo la resistenza di pull-up

pinMode(pinTrig, OUTPUT);      //il pin 9  settato come output  
digitalWrite(pinTrig, LOW);    //0 volt iniziali al pin 9
delayMicroseconds(2);          //delay di 2 microsecondi in cui  
//il pin rimane low (per evitare 
//rumore di fondo causa
//alimentazione)

// invio del Trigger
digitalWrite(pinTrig, HIGH); //invio di 5 volt al pin 9
delayMicroseconds(10);       //il pin rimane impostato come high 
//per 10 microsecondi
digitalWrite(pinTrig, LOW);

// misurazione dell' eco
echo = pulseIn(pinEcho, HIGH, 37000);  //ascolta l'eco
long valoreUS = (echo / 58.138);       //valore di echo in cm
return valoreUS;
}


void loop()
{
val = ping();   // chiamata alla funzione ping e storaggio  
// del valore di echo finale nella variabile val

Serial.print("cm ");
Serial.println(val);
delay(150);    //attende 250 millisecondi prima di ripetere il ciclo


if (val < 100

&& val > 10)  // modifica qui i valori massimo e minimo
{
vicino = true;
} else {
vicino = false;
}

if (vicino){ 
//{for (long i = 0; i < 2048 * 3; i++ )
//{
// 1 / 2048Hz = 488uS, or 244uS high and 244uS low to create 50% duty cycle

tone(pinLED,500,150);
//digitalWrite(pinLED, HIGH);
//  delayMicroseconds(244);
//digitalWrite(pinLED, LOW);
// delayMicroseconds(244);
//delay(30);
//}

} else {
//  tone(pinLED,1000);
digitalWrite (pinLED, LOW);
}
}

/*
CODICE PER DETERMINARE LA DISTANZA TRA
UN SENSORE A ULTRASUONI DEVANTECH SRF04
E UN OSTACOLO.
*/
long duration, inches, cm;
long echo = 0;
int pinTrig = 6;    //il pin utilizzato  il pin 9, chiamato pinTrig
int pinEcho = 7;
int pinLED = 8;
long val = 0;
boolean vicino = false;

void setup()
{
Serial.begin(57600);  // attivazione della comunicazione seriale
// per ottenere i dati di ritorno dal sensore
pinMode (pinLED, OUTPUT);
digitalWrite (pinLED, LOW);

}

long ping()
{
// impostazione
pinMode(pinEcho, INPUT);       // il pin 10  settato come input
digitalWrite(pinEcho, HIGH);   // attiviamo la resistenza di pull-up

pinMode(pinTrig, OUTPUT);      //il pin 9  settato come output  
digitalWrite(pinTrig, LOW);    //0 volt iniziali al pin 9
delayMicroseconds(2);          //delay di 2 microsecondi in cui  
//il pin rimane low (per evitare 
//rumore di fondo causa
//alimentazione)

// invio del Trigger
digitalWrite(pinTrig, HIGH); //invio di 5 volt al pin 9
delayMicroseconds(10);       //il pin rimane impostato come high 
//per 10 microsecondi
digitalWrite(pinTrig, LOW);

// misurazione dell' eco
echo = pulseIn(pinEcho, HIGH, 37000);  //ascolta l'eco
long valoreUS = (echo / 58.138);       //valore di echo in cm
return valoreUS;
}


void loop()
{
val = ping();   // chiamata alla funzione ping e storaggio  
// del valore di echo finale nella variabile val

Serial.print("cm ");
Serial.println(val);
delay(150);    //attende 250 millisecondi prima di ripetere il ciclo


if (val < 100

&& val > 10)  // modifica qui i valori massimo e minimo
{
vicino = true;
} else {
vicino = false;
}

 

if (vicino){ 
//{for (long i = 0; i < 2048 * 3; i++ )
//{
// 1 / 2048Hz = 488uS, or 244uS high and 244uS low to create 50% duty cycle

tone(pinLED,500,150);
//digitalWrite(pinLED, HIGH);
//  delayMicroseconds(244);
//digitalWrite(pinLED, LOW);
// delayMicroseconds(244);
//delay(30);
//}

} else {
//  tone(pinLED,1000);
digitalWrite (pinLED, LOW);
}
}

JSN Teki template designed by JoomlaShine.com