Problem Sound Sensor.

/* Sensor de Ultrasonidos *------------------------ * * Lee valores (00014-01199) de un sensor de ultrasonidos (hasta 3 metros) * y escribe los valores en el puerto serie. * * * copyleft 2005 Mackie for XLAB | DojoDave for DojoCorp * */

int ultraSoundSignal = 7; // PIN de se[ch65533]al de ultrasonidos int val = 0; // Variable auxiliar int ultrasoundValue = 0; // Valor del senros de ultrasonidos int timecount = 0; // Contador del eco int ledPin = 13; // LED conectado al PIN 13

void setup() {

beginSerial(9600); // Configura la velocidad al puerto seria 9600 baudios

pinMode(ledPin, OUTPUT); // Configura el PIN del LED como salida digital. }

void loop() { timecount = 0; val = 0; pinMode(ultraSoundSignal, OUTPUT); // Conmuta el PIN de la se[ch65533]al a salida digital

/* Env[ch65533]a un pulso bajo-alto-bajo para lanzar el pulso de activaci[ch65533]n del sensor * ---------------------------------------------------------------------------- */

digitalWrite(ultraSoundSignal, LOW); // Env[ch65533]a un pulso bajo delayMicroseconds(2); // Espera dos microsegundos digitalWrite(ultraSoundSignal, HIGH);// Env[ch65533]a un pulso alto delayMicroseconds(5); // Espera 5 segundos digitalWrite(ultraSoundSignal, LOW); // Se queda en espera

/* En espera, escuchando el pulso de eco * -------------------------------------- */

pinMode(ultraSoundSignal, INPUT); // Conmuta el PIN de la se[ch65533]al a entrada digital val = digitalRead(ultraSoundSignal); // Recoge el valor del PIN de se[ch65533]al while(val == LOW) { // Espera a que el PIN de se[ch65533]al sea alto val = digitalRead(ultraSoundSignal); }

while(val == HIGH) { // Espera a que el PIN de se[ch65533]al sea bajo val = digitalRead(ultraSoundSignal); timecount = timecount +1; // Cuenta el tiempo que dura el pulso alto (amplitud) }

/* Escribe los valores resuktantes en el puerto serie * --------------------------------------------------- */

ultrasoundValue = timecount; // El contador es el valor obtenido por el sensor

serialWrite('A'); // Escribe en el puerto serie el valor obtenido printInteger(ultrasoundValue); serialWrite(10); serialWrite(13);

/* Enciende el LED si se ha recibido un pulso de eco * -------------------------------------------------- */

if(timecount > 0){ digitalWrite(ledPin, HIGH); }

/* Delay del programa * ------------------- */

delay(100); }

Please, someone help me, it's not working, the software tell me about a error but i don't know how fix it.

the software tell me about a error

What is the error?

  • Brian

that this poorly written

I suspect you didn't understand my question. I'd like you to post the exact error message as it's displayed to you. Something like "syntax error at" or "undefined variable".

  • Brian
 beginSerial(9600);

There's one.

serialWrite('A');

And another, unless you've put wrappers around these.

"Serial" (with a capital "S") is an object. "Serial.begin" is a method belonging to the object, as is "Serial.write".

"digitalWrite", "pinMode", "delayMicroseconds" are functions.

int ultraSoundSignal = 7;            // PIN de se?al de ultrasonidos
int val = 0;                         // Variable auxiliar
int ultrasoundValue = 0;             // Valor del senros de ultrasonidos
int timecount = 0;                   // Contador del eco
int ledPin = 13;                     // LED conectado al PIN 13

void setup() {

   Serial.beginl(9600); // Configura la velocidad al puerto seria 9600 baudios 

 pinMode(ledPin, OUTPUT);            // Configura el PIN del LED como salida digital.
}

void loop() {
 timecount = 0;
 val = 0;
 pinMode(ultraSoundSignal, OUTPUT);   // Conmuta el PIN de la se?al a salida digital

/* Env?a un pulso bajo-alto-bajo para lanzar el pulso de activaci?n del sensor 
* ----------------------------------------------------------------------------
*/

 digitalWrite(ultraSoundSignal, LOW); // Env?a un pulso bajo
 delayMicroseconds(2);                // Espera dos microsegundos
 digitalWrite(ultraSoundSignal, HIGH);// Env?a un pulso alto
 delayMicroseconds(5);                // Espera 5 segundos
 digitalWrite(ultraSoundSignal, LOW); // Se queda en espera

/* En espera, escuchando el pulso de eco
* --------------------------------------
*/

 pinMode(ultraSoundSignal, INPUT);    // Conmuta el PIN de la se?al a entrada digital
 val = digitalRead(ultraSoundSignal); // Recoge el valor del PIN de se?al
 while(val == LOW) {                  // Espera a que el PIN de se?al sea alto
   val = digitalRead(ultraSoundSignal);
 }

while(val == HIGH) {                   // Espera a que el PIN de se?al sea bajo
  val = digitalRead(ultraSoundSignal);
  timecount = timecount +1;            // Cuenta el tiempo que dura el pulso alto (amplitud)
}

/* Escribe los valores resuktantes en el puerto serie
* ---------------------------------------------------
*/

ultrasoundValue = timecount;           // El contador es el valor obtenido por el sensor

Serial.Write('A');                      // Escribe en el puerto serie el valor obtenido
printInteger(ultrasoundValue);
Serial.write('\r');
Serial.write('\n');

/* Enciende el LED si se ha recibido un pulso de eco
* --------------------------------------------------
*/

if(timecount > 0){
  digitalWrite(ledPin, HIGH);
}

/* Delay del programa
* -------------------
*/

  delay(100);
}

You'll have to fix "printInteger" yourself - it isn't defined here.

I'm not sure this sketch will produce very good results, you may want to use "pulseIn" to measure the return pulse length.