Paso 6: Detalles técnicos...
Bueno, todavía tengo una bobina de hilo conductor a utilizar. Fue sólo más rápido conectar esto con métodos tradicionales.
Flora funciona con 3.3v lógica.
Mi sensor ultrasonido HC-SR04 funciona con 5 voltios y salidas de la misma.
Así que aquí es donde Dangit Jim, I'' m un artista, un poco, no un ingeniero eléctrico...
Esto significa que puede freír su Flora si utiliza dispositivos de lógica de 5 voltios. Mirando a su alrededor alguien había sugerido un resistor simple divisor de tensión circuito (otra manera lógica converter chip /) para darle algo lo suficientemente bueno para trabajo de gobierno.
Así que rebuscando entre mi surtido de resistor de ebay, vino cerca de algo que funcionó.
Para la salida del sensor, la línea eco pasa a través de una resistencia de 12K ohm al pin de datos. También la alimentación el mismo pin de datos es una resistencia de pullup de 22K ohm de la tierra. Creo que los verdaderos valores debían para ser 15K y 27K ohms.
El gatillo TRIG en el sensor de ultrasonidos parece funcionar bien en la señal sin cambios de la Flora.
Hice lo mismo con la LDR o fotocélula, ya que iba a poder eso para arriba con el crudo de voltaje de la batería.
El bosquejo básico del theremin fue modificado para sonido basado en la lectura del sensor utrasonic y luego sonido basado otra vez en la entrada de la fotocélula.
Podría interfaz el theremin con cualquier opción de sensores - estiramiento, presión, táctil capacitiva, sensores de proximidad, de nada.
Otra vez, basado en la experiencia, fue capaz de conectar LEDs con resistencias de 130 ohm para salida de cada pin de datos para flash luces.
Por supuesto, yo podría haber lanzado en un diodo de láser o dos en el circuito para la diversión pero vas a sacar un ojo.
Quitando la serie impresión y ajuste de todos los retrasos le daría un tono más continuo.
Acabo de poner valores por defecto en lugar del sistema haciendo la calibración del sensor de ultrasonidos.
Experimentar con los valores para el rango de detección de los sensores y la gama de frecuencia del sonido.
Hay algunos dibujos muestra a mapa establecer tonos musicales.
Todo esto era el prototipo en protoboard.
Luego puede transferir el circuito a la bra creando los cables necesarios dependiendo donde cada componente se sujeta en el sujetador.
Código Unoptimized sigue
===============================================================================
/ * Ping))) Sensor
Este bosquejo Lee PING))) telémetro ultrasónico y devuelve la
distancia hasta el objeto más cercano en rango. Para ello, envía un pulso
en el sensor para iniciar una lectura, entonces escucha un pulso
para volver. Es proporcional a la longitud del pulso regresan
la distancia del objeto al sensor.
El circuito:
* + V conexión de PING))) conectado a + 5V
* Conexión GND de PING))) conectado a tierra
* Conexión de SIG de PING))) conectado al pin digital 7
http://www.Arduino.CC/en/Tutorial/ping
creado el 03 de noviembre de 2008
por David A. Mellis
modificado 30 de agosto de 2011
por Tom Igoe
Este ejemplo de código es de dominio público.
*/
mod para el sensor ultrasonido HC-SR04
Esta constante no va a cambiar. Es el número de pin
de salida del sensor:
const echoPin int = 9; Pin de eco
const int pingPin = 10; Perno de TRIG
variable que contenga el valor del sensor
int sensorValue;
variable para calibrar el bajo valor
int sensorLow = 12;
variable para calibrar de alto valor
int sensorHigh = 1;
int pdsPin = 11; seleccionar el pin de entrada para la fotocélula
int pdsValue = 0; variable para almacenar el valor de la fotocélula
void setup() {}
inicializar la comunicación serial:
Serial.Begin(9600);
pinMode(7,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
}
void loop()
{
pdsValue = analogRead(pdsPin); obtener el valor de voltaje de entrada de pin
Serial.println(pdsValue); imprimir el valor a monitor Serial
establecer las variables durante el ping,
y el resultado de la distancia en pulgadas y centímetros:
larga duración, pulgadas, cm;
El PING))) es accionado por un pulso alto de 2 o más microsegundos.
Dar un breve impulso de baja previamente para asegurar un pulso limpio alto:
pinMode (pingPin, salida);
digitalWrite (pingPin, LOW);
delayMicroseconds(2);
digitalWrite (pingPin, HIGH);
delayMicroseconds(5);
digitalWrite (pingPin, LOW);
El mismo pin se utiliza para leer la señal del PING))): un alto
pulso cuya duración es el tiempo (en microsegundos) de envío
del ping a la recepción de su eco de un objeto.
pinMode (echoPin, entrada);
duración = pulseIn (echoPin, HIGH);
convertir el tiempo en una distancia
pulgadas = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.Print(inches);
Serial.Print ("in");
Serial.Print(cm);
Serial.Print("cm");
Serial.println();
Lee la entrada de A0 y almacenarlo en una variable
sensorValue = pulgadas;
mapa de los valores de los sensores para una amplia gama de campos de
campo de int = mapa (sensorValue, sensorLow, sensorHigh, 2000, 3500);
pitch2 int = mapa (pdsValue, 200, 1023, 2400, 3500);
reproducir el tono de 20 ms en el pin 8
tono (tono 6, 90);
Delay(30);
digitalWrite(7,HIGH);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
Espere un momento
Delay(90);
digitalWrite(7,LOW);
digitalWrite(3,LOW);
digitalWrite(2,LOW);
tono (6, pitch2, 90);
Delay(90);
}
microsecondsToInches(long microseconds) largo
{
Según ficha técnica de paralaje para el PING))), hay
73,746 microsegundos por pulgada (es decir, el sonido viaja a 1130 pies por
en segundo lugar). Esto da la distancia recorrida por el ping, saliente
y, por lo que dividimos por 2 para obtener la distancia del obstáculo.
Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
volver microsegundos / 74 / 2;
}
microsecondsToCentimeters(long microseconds) largo
{
La velocidad del sonido es 340 m/s o 29 microsegundos por centímetro.
El ping viaja hacia fuera y hacia atrás, para encontrar la distancia de la
objeto que tomamos la mitad de la distancia recorrida.
volver microsegundos / 29 / 2;
}