Hola.
Tengo instalado en el coche el típico juego de 4 sensores ulrasónicos comprado por ebay. Me saca del apuro, pero con Arduino podría dar mucho más de sí.
He buscado en el foro y ninguno de los temas abiertos (en inglés casi todos) aporta algo de luz al respecto.
Los sensores son como estos, a dos hilos: http://img.alibaba.com/photo/463312570/Strong_Detecting_Ability_ultrasonic_sensors.jpg
He partido del código de la función PING, pero no hace nada. Lo he modificado de la siguiente manera:
int pin = 7;
long duracion, centimetros;
void setup() {
Serial.begin(9600);
}
void loop()
{
pinMode(pin, OUTPUT);
emitir();
pinMode(pin, INPUT);
duracion = pulseIn(pin, HIGH);
centimetros = conversion(duracion);
Serial.print(duracion);
Serial.print("\t");
Serial.print(centimetros);
Serial.print("cm");
Serial.println();
delay(1000);
}
long conversion(long microsegundos){
return microsegundos / 29 / 2;
}
void emitir(){
tone(pin,40000);
delayMicroseconds(100);
noTone(pin);
}
Con esto, recibo un máximo de 14 microsegundos, si pongo el dedo pegando al sensor, la cifra baja un poco, y si voy apretando el sensor muy poco a poco la cifra va bajando hasta cero.
De lo anterior, extraigo la conclusión de que lo que me está detectando es la carcasa del elemento. El motivo supongo que será porque la función tone() está pensada para otra cosa y no ofrece el voltaje suficiente.
Mi pregunta es: ¿hay alguna forma de que la función tone() ofrezca mayor voltaje?
Si la respuesta es hacer ciclos de digitalWrite low-high-low-high... de 25microsegundos el ciclo (40kHz), dejadlo porque lo he probado y no recibe señal alguna.
Si habeis llegado hasta aquí, gracias por vuestra atención.