Una vida de tamaño cabeza humanoide que habla (13 / 16 paso)

Paso 13: Código Arduino, parte 1

Definir algunos pines de Arduino:

digitales pins

 const int LEDPIN=13; // light up when audio detected const int PIN_STROBE=4; // spectrum shield const int PIN_RESET=5; // spectrum shield const int PIN_MOTOR_L=3; //PWM to motor open mouth const int PIN_MOTOR_R=6; //PWM to motor close mouth const int PIN_MOTOR_SLEEP=7; //sleep fxn on motor board const int PIN_MOTOR_STALL=8; //stall warning on motor board 
 //analog pins const int PIN_LEFT=0; // L analog from spectrum shield const int PIN_RIGHT=1; // R analog from spectrum shield const int PIN_MOTOR_POT=3; //analog potentiometer on motor 

Resulta que realmente no necesita "cerrar" la boca con el motor-la caja de cambios parece relajar a la posición cerrada por sí mismo. Esto facilita control de movimiento incluso puesto que sólo tenemos que "abrir" la boca, es decir, correr el motor en una dirección. Todavía, podría así cable para arriba y programa para él por si acaso.

Tenemos que crear dos matrices para mantener la señal de cada uno de siete bandas en los canales de la L y R

 // spectrum shield band arrays int left[7]; int right[7]; 

Establecer el mínimo y máximo para el movimiento de la mandíbula:

 int minRotation = 400; //approximate reading when mouth closed int maxRotation = 600; //approximate reading when mouth open 

Inicializar:

 void setup() {<br> pinMode(LEDPIN, OUTPUT); // LED //initialize spectrum board related pins pinMode(PIN_RESET, OUTPUT); // reset pinMode(PIN_STROBE, OUTPUT); // strobe digitalWrite(PIN_RESET,LOW); // reset low digitalWrite(PIN_STROBE,HIGH); //pin 5 is RESET on the shield } 

Para leer el analizador de espectro, uso llamar a los siguientes:

 void readMSGEQ7()<br>{ //reset the data digitalWrite(PIN_RESET, HIGH); digitalWrite(PIN_RESET, LOW); //loop thru all 7 bands int sumRight = 0; int sumLeft = 0; for(int band=0; band < 7; band++) { digitalWrite(PIN_STROBE,LOW); // go to the next band delayMicroseconds(20); //gather some data left[band] = analogRead(PIN_LEFT); // store left band reading //right[band] = left[band]; //use this only for MONO! right[band] = analogRead(PIN_RIGHT); // store right band reading digitalWrite(PIN_STROBE,HIGH); // reset the strobe pin sumRight = sumRight+right[band]; // get the sum from all bands sumLeft = sumLeft+left[band]; // get the sum from all bands if(left[band] > 100 || right[band] > 100) { digitalWrite(LEDPIN,HIGH); // sound detected } else { digitalWrite(LEDPIN,LOW); // reset low } } } 

Esta rutina crea un retraso de 7 x 20 mseg (millisec 140). Acaba de decir. Cuando los motores en marcha, siempre es bueno tener retrasos duros en mente (ya que usted no tendrá ningún control del motor mientras el retardo de activa, podría ser correr a toda velocidad).

Después de llamar a readMSGEQ7, podemos fijar el motor a una posición basada en la señal de audio. En este ejemplo utilizo el total de la señal de todas las bandas de 7, pero sólo el canal izquierdo (para que el movimiento de la boca no se verán afectado por audio de canal derecho). La máxima señal de cada canal es de 1024, así que la suma máxima teórica es de 7 canales x 1024 = 7168. Prácticamente el máximo no conseguirá más de 5000-6000. Podría obtener una señal de entrada media y establecer min/max de eso, pero yo prefiero algo más sencillo. Primero limitará a la suma de "sumLeft"

 if (sumLeft > 1024) {sumLeft = 1024}; //constrain to 1024 max 

Y luego sumLeft al min y max de la posición de la mandíbula. Simple.

 int mouthPosition = map(sumLeft, 0, 1024, minRotation, maxRotation); 

Establecer algunos límites para la posición de la boca como destino de alta y destino baja (esto evita que el motor intentando llegar a la posición exacta y permite en cambio una gama (+ /-"posError").

 targetH = target_mouthPosition + posError;<br>targetL = target_mouthPosition - posError; 

Artículos Relacionados

OpenTrashCan: Una Internet inteligente con bote de basura que habla

OpenTrashCan: Una Internet inteligente con bote de basura que habla

OpenTrashCan se conecta a tu red wifi y le envía un correo electrónico cuando su totalidad, te habla e incluso puede ser controlado desde la App de OpenTrashCan para los teléfonos Android. Verlo en acción aquí:¿ Quiere comprar uno? Regístrate en la l
Una vida más verde más energía eficiente

Una vida más verde más energía eficiente

conservación de la energía es una gran manera de ahorrar dinero y ayudar al medio ambiente. Este Instructable describe algunas de las cosas que mi familia ha hecho para reducir nuestro uso de la energía y el impacto global negativo sobre el medio amb
Parapacking: Cómo embalar lejos una cometa de la energía sin que conseguir enredado

Parapacking: Cómo embalar lejos una cometa de la energía sin que conseguir enredado

con una interesante y divertida al aire libre actividad extrema como cometas de potencia, manteniendo la cometa y guardarlo correctamente son la clave para una vida larga y acertada de la cometa.Cometa se ha convertido en un pasatiempo muy popular y
Cómo utilizar una olla a presión (y elegir que comprar)

Cómo utilizar una olla a presión (y elegir que comprar)

Olla a presión es una de mis herramientas de cocina favorito absoluto! Tienen una mala reputación por ser destructores de cocina y cena - pero como todas las otras herramientas son perfectamente seguras como utilizarlos correctamente. Estos días las
Hacer una vida Real Gingy - clon y le encantar

Hacer una vida Real Gingy - clon y le encantar

Me emocioné realmente cuando vi el reto encantada objetos pero no podía averiguar qué hacer. Para las malas hierbas a través de las opciones que hice algunas prioridades. 1) debe ser algo divertido para mis hijos, y 2) se debe proporcionar un propósi
Cómo vivir una vida estética por usar, comer, viajar por y escuchando a colores específicos para una semana

Cómo vivir una vida estética por usar, comer, viajar por y escuchando a colores específicos para una semana

por siete días consecutivos, elegimos un solo color y trató de vestido en ese color, comer sólo alimentos de ese color, escuchar música relacionada con ese color y generalmente hacer tantas opciones como posible1 para ajustarse a ese color.Lunes - ro
Cabeza de Robot Animatronic que habla

Cabeza de Robot Animatronic que habla

(Robot concurso entrada categoría = 18 +)Este instructable es un parlante animatronic robot cabeza construí, que llamo Robot jefe 2.  Para tener una idea de la funcionalidad del Robot jefe 2, haga clic en el siguiente video corto o puede copiar y peg
Hackear tu vida: Una guía para vivir una vida más saludable y feliz

Hackear tu vida: Una guía para vivir una vida más saludable y feliz

Cuando vi que había un concurso de hacks de la vida, inmediatamente pensé en esas ideas increíblemente genio para hacer cosas simples aún más sencillo. Pero luego me di cuenta que esos poco "ah ha!" momentos no realmente hacen un impacto en su v
Cómo hacer una pistola de tamaño bolsillo

Cómo hacer una pistola de tamaño bolsillo

he visto un montón de tutoriales que te enseñan cómo hacer un cañón de pluma. Lamentablemente no tenía una pluma decente a la mano para hacer dicha arma. Así que he utilizado los materiales disponibles para hacer mi propio bolsillo pistola. Esta arma
Podcast de Instructables Vol. 2 - construir una vida más verde: aerogenerador produce electricidad de mdavis19

Podcast de Instructables Vol. 2 - construir una vida más verde: aerogenerador produce electricidad de mdavis19

misión de parte de Instructables es inspirar a nuestra comunidad para crear y compartir grandes proyectos. Lo hacemos aunque concursos, tema meses y retos que son estacionalmente su caso, parte de una tendencia cultural más grande, o simplemente zona
Podcast de Instructables Vol. 1 - construir una vida más verde: Robbtoberfest

Podcast de Instructables Vol. 1 - construir una vida más verde: Robbtoberfest

misión de parte de Instructables es inspirar a nuestra comunidad para crear y compartir grandes proyectos. Lo hacemos aunque concursos, tema meses y retos que son estacionalmente su caso, parte de una tendencia cultural más grande, o simplemente zona
Jammin' para una vida sostenible

Jammin' para una vida sostenible

actualmente estamos tomando una clase en Maharishi University of Management llamado diseño de Permacultura en el que estábamos llegar a una idea que podríamos crear y dar instrucciones sobre cómo hacerlo.Hemos decidido hacer Mermelada!Hicimos Cran ma
Por qué es una mierda su corporativo una vida de trabajo de la semana de 40 horas! (y cómo podría salir)

Por qué es una mierda su corporativo una vida de trabajo de la semana de 40 horas! (y cómo podría salir)

alguna vez encuentras va a funcionar, arrastrando pero??? .. se arrastra fuera de la cama con un reloj de alarma y espera hasta el último minuto, andgetting en todo lo que mismo tráfico con todas las personas que esperan hasta el último minuto para s
Traer una vida a tu coche Audi fallido por fijación motor Audi

Traer una vida a tu coche Audi fallido por fijación motor Audi

Si tu coche de Audi de elección ha fracasado y ahora está funcionando un obstáculo técnico y desea darle una vida a él mediante la sustitución de su motor, probablemente tienes que pagar una fuerte cantidad por su afición. Pero en el competitivo merc