Maestro de acordeón - un sintetizador de música python/arduino (2 / 3 paso)

Paso 2: Configurar el Arduino

Interfaz con el acelerometro

Conecte el acelerómetro a la placa arduino. Si usas el ADXL335 conectar la clavija marcada ST en el pin analógico 0, Z a la clavija analógica 1, Y al pin analógico 2, X a la clavija analógica 3 y GND al pin analógico 4 y VCC al pin analógico 5. Si usted consigue perdido en cualquier lugar, sólo se refieren a la

hojas de datos. Hojas de datos siempre tienden a lo denso, pero valen una exploración cercana.

El pin es irrelevante para nuestro proyecto, los pasadores de X-Y-Z de salida los datos brutos, el pin GND es la tierra (lógico bajo o 0 voltios), el VCC es la fuente de alimentación para el acelerómetro (lógico alto). El siguiente código establece esto para arriba en el arduino.

 // Define variables to be used to process raw accelerometer values int x, y, z, mag; int xPrev, yPrev, zPrev; // Constant for Low Pass filter const double k = 0.8f; // Define pins for ADXL335 const int xPin = 1; const int yPin = 2; const int zPin = 3; const int vcc = A5; const int gnd = A4; void setup() { //Default baud rate Serial.begin(9600); pinMode(vcc, OUTPUT); digitalWrite(vcc, HIGH); pinMode(gnd, OUTPUT); digitalWrite(gnd, LOW); // Initialize variables x = 0; y = 0; z = 0; xPrev = 0; yPrev = 0; zPrev = 0; } 

Luego utilizamos la función analogRead(pin) , donde 'pin' es cualquiera de los 3 pines es decir xPin, yPin o zPin definido anteriormente para leer un valor entre el 0 al 1024, que nos indica el valor de la aceleración que se lee.

Así que vamos a empezar a leer estos valores!

Filtrado de

Esto es intrínsecamente bastante complicado desde la aceleración de la lectura de una pieza (relativamente) barata de hardware como la ADXL335 es problemático. El tipo de señal que vas a obtener del acelerometro va a estar lleno de ruido de señal. Esto significa que nuevos valores de acelerómetro no son confiables, y por lo tanto usamos un filtro. En este caso utilizamos un Filtro de paso bajo

. Queremos permitir sólo señales de baja frecuencia pase a través, valores que no difieren demasiado de las lecturas anteriores. Nota: incluso con filtrado complicados, el margen de error de un acelerómetro barato va a ser alta, así que integrar en el tiempo para obtener la velocidad y/o posición del acelerómetro va para componer este error - los valores que estamos recibiendo no será preciso en todo. También hay consideraciones de sesgo deriva puede hacerse, pero para eso está fuera del alcance de este tutorial. Sentido de datos ruidosos es un campo a su propio! Así que vamos a mantenerlo simple por ahora.

Esto agregamos en nuestro programa loop():

 void loop() { // Apply a Low Pass Filter on the raw signal x = k*xPrev + (1-k)*(analogRead(xPin) - xAvg); y = k*yPrev + (1-k)*(analogRead(yPin) - yAvg); z = k*zPrev + (1-k)*(analogRead(zPin) - zAvg); // Calculate the magnitude of the force for this particular implementation mag = (int) sqrt(x*x + y*y + z*z); // Update values for next iteration xPrev = x; yPrev = y; zPrev = z; } 

Definimos 'k' arriba setup(). Se trata de una filtración constante. No dude en modificar esta constante pero permanecer dentro de la gama 0.5 < < 1 k. Los valores más altos significa que confiamos en nuevos valores incluso menos, y por lo que tendrán menos efecto en la siguiente iteración, esto es lo que queremos. También puede notar xAvg, yAvg y zAvg. Se trata de una función de calibrar, así que deja que hablar ahora.

Sin ningún tipo de calibración del acelerómetro escupirá típicamente los valores de la gama media del 0 al 1024. Esto no es muy beneficioso para nosotros ya que queremos el cambio relativo en la aceleración de un punto de referencia, posición de salida del acelerómetro. Cada vez que arranca el arduino, ejecutamos la función calibrate(). Es imperativo que la placa arduino solos durante el tiempo, cualquier empujones del acelerómetro alterará la exactitud de la calibración.

Añadir esto al final del código de arduino:

 // Function to re-zero the acceleremeter, finds an average void calibrate() { int i; xAvg = 0; yAvg = 0; zAvg = 0; for(i = 0; i < calCount; i++) { // Read in the raw unclean data sset xAvg += analogRead(xPin); yAvg += analogRead(yPin); zAvg += analogRead(zPin); } // Get the average xAvg = xAvg / calCount; yAvg = yAvg / calCount; zAvg = zAvg / calCount; delay(100); } 

Al final del día, la calibración es realmente sólo un promedio simple que terminan restando de los valores crudos. Ningún fanciness aquí.

Transmisión de datos a analizar

Código completo: https://github.com/aehernandez/Accordion-Master/bl...

Artículos Relacionados

Sintetizador de música analógico controlado por MIDI

Sintetizador de música analógico controlado por MIDI

Para mi proyecto de diseño senior de ingeniería eléctrica, decidí diseñar un sintetizador de música analógica con control MIDI. Tengo que admitir, esto era lo que quería hacer desde la escuela secundaria y fue mi objetivo como músico, artista, bricol
Sintetizador digital VRA8-P para Arduino Uno

Sintetizador digital VRA8-P para Arduino Uno

Hecho por ISGK instrumentoshttps://github.com/risgk/digital-Synth-vra8-pConcepto3 voz sintetizador polifónico de Pseudo para Arduino UnoCaracterísticasVoz 3 Pseudo Polyphonic Synthesizer (sintetizador de Paraphonic), módulo de sonido MIDISerial MIDI
Sintetizador digital VRA8-X para Arduino Uno

Sintetizador digital VRA8-X para Arduino Uno

Hecho por ISGK instrumentoshttps://github.com/risgk/digital-Synth-vra8-xConceptoExperimental sintetizador para Arduino UnoCaracterísticasMonophonic sintetizador (o módulo de sonido MIDI)Serial MIDI en (38400 bps), tasa de salida (Pin 6), de Audio PWM
Sintetizador digital VRA8-M para Arduino Uno

Sintetizador digital VRA8-M para Arduino Uno

Hecho por ISGK instrumentoshttps://github.com/risgk/digital-Synth-vra8-mConceptoSintetizador monofónico (módulo de sonido MIDI) para Arduino UnoCaracterísticasSerial MIDI en (38400 bps), tasa de salida (Pin 6), de Audio PWM PWM: 62500 hertziosTarifa
Cómo obtener un sintetizador libre

Cómo obtener un sintetizador libre

¿Quieres un sintetizador de música pero corto en efectivo? ¿Sabía que usted puede conseguir uno por muy poco (< $50) o incluso gratis? Sigue leyendo y descubre cómo...Paso 1: El secreto Bien que sabía había un retén - que no está recibiendo un Oberhe
Convertir tu Arduino en un sintetizador de tabla de ondas de 4 voz con sólo unos pocos componentes...

Convertir tu Arduino en un sintetizador de tabla de ondas de 4 voz con sólo unos pocos componentes...

Se han realizado múltiples proyectos de sintetizador para el Arduino, pero pocos han sido capaces de utilizar toda la potencia del procesador Arduino. DZL de GeekPhysical escribió un sintetizador de tabla de ondas de 4 voz que es uno de los más avanz
Guitarra de aire

Guitarra de aire

Aquí hay un breve tutorial sobre cómo hacer una guitarra de aire funcional (suena como un oxímoron...) que fue inspirada de un anterior Intel IoT Hackathon en Cambridge.Paso 1: Qué hace Air Guitar?Ahora puede tocar instrumentos, sin los instrumentos!
La leyenda de Zelda tesoro

La leyenda de Zelda tesoro

¿Que fan de Zelda no ha soñado con ser dueño de su propio cofre del tesoro? Ahora usted puede hacer su propio siguiendo estos pasos. Este tesoro se enciende y reproduce sonidos al igual que la cosa real! Todo lo que necesitas es:1. dos Arduino Uno2.
Tierra seguimiento LED Longboard Mod

Tierra seguimiento LED Longboard Mod

este mod usa un codificador personalizado diseñado en una de las ruedas que es el longboard en el suelo y encienden los LEDs para que la luz permanece inmóvil en el suelo mientras que el tablero se mueve sobre él.Para hacer este instructable como fác
Cómo jugar violín

Cómo jugar violín

este instructable va a enseñarle los aspectos básicos de tocar el violín.Usted aprenderá:1. Cómo prepararse jugar2. Cómo leer música de violín3. cómo sostener el violín y el arco4. Cómo poner toda esta información para jugar "Bollos cruzados caliente
Kaosduino: Crear tu propio kaosillitaor

Kaosduino: Crear tu propio kaosillitaor

este proyecto es parte de experimentos realizado mientras se hace un artista en residencia en Instructables. Puedes ver los proyectos aquí.Inspirado por Korgs Kaossilator tomé sobre mí para construir una versión opensource. La gente de esta manera pu
Pulso Sensor con Bluetooth y Arduino

Pulso Sensor con Bluetooth y Arduino

Esto proyectos pretende utilizar el sensor del pulso (que es fácilmente disponible ahora) con arduino uno y módulo Bluetooth HC-05, el sensor del pulso se coloca en el dedo y mide la frecuencia cardíaca y luego envía el pulso al móvil android mediant
Cómo hacer un Video de cámara oculta YouTube

Cómo hacer un Video de cámara oculta YouTube

Ha sido un tiempo desde mi última instructable; ha pasado casi un año realmente. Yo aún con frecuencia leer el sitio, pero mis esfuerzos creativos han cambiado. Pasé por una fase de fuerte fotografía por un tiempo, y ahora estoy interesado en los vid
Mejor sonido de guitarra Kill-Switch Pedal

Mejor sonido de guitarra Kill-Switch Pedal

¿quiere callar a veces? ¿Tal vez hacer algunos Tom Morello scratchen estilo ' en la guitarra, pero con las dos manos libres? ¿Qué tal un pedal apagador de tu piano eléctrico o un pedal de control para su jefe o Roland de engranaje puede ser momentáne