EL sombrero de alambre: Secuenciado y sonido activado con mando a distancia-con Arduino y Sparkfun (7 / 8 paso)

Paso 7: Funcionalidad y el código

Funcionalidad

El código es bastante auto-explicativo y (creo que) relativamente bien comentado. También hay un comando serial println en cada paso del camino de depuración especialmente si usted necesita ajustar el código para la calibración del potenciómetro.

Cuando usted enciende el dispositivo, EL alambre será "iniciar." En otras palabras, cada uno de ellos una vez flash en secuencia, desde el pin 2 al pin 9.
Ahora estamos en un estado de espera hasta que se pulsa el botón de modo. Cada vez que pulse el botón mode alterna a través de una secuencia diferente y parpadea el LED de modo (rojo) una vez, por lo que el operador puede confirmar un cambio de modo (como operador de sombrero).

Hay 7 secuencias que bucle continuamente entre los cambios de modo. En estos modos, si el operador ajusta el potenciómetro, la velocidad de la secuencia cambia.

Modos de secuenciados
Modo 1 - paso a través de todos
Modo 2 - llenar de abajo luego vacía de la parte inferior
Modo 3 - arriba y abajo
4 - barrido en botton al principio, el modo barrido de arriba a abajo
Modo 5 - pila y tuvo que unstack
Modo 6 - suplente intermitente
Modo 7 - entrecruzamiento

Modo del Sensor de sonido
Modo 8 - al llegar a este modo, el modo LED con flash 10 veces rápidamente con el fin de hacerle saber que usted está en este modo especial.
El potenciómetro se convierte ahora en el control de sensibilidad.

Todas las secuencias de
Modo 9 - esto sale del modo de sonido y continuamente funciona a través de múltiples lazos de cada uno de los modos de 1 a 7 (ahora está activado el control de velocidad en el potenciómetro). Cuando se presiona el botón Mode, retorno al modo 1.

EL CÓDIGO DE
Todo el código de Arduino está abajo y adjunto.

Instructables hacerlo resplandor 2012 sombrero secuenciador
ARDUINO UNO Rev. 3 + Dos de EL Escudo SPARKFUN
//
=== De piezas y configuración ===
EL Escudo Dos: Escudo montado sobre Arduino UNO Rev.3
EL cable: Conectado a El Escudo Dos en Digital Digital 2 Pins -> 9(OUTPUT)
Indicador LED: indica el cambio de modo y detección de sonido Pin 13(OUTPUT)
Interruptor momentáneo: conmutador (generalmente abierto) conectado al Pin Digital 11(INPUT)
Potenciómetro: Control de velocidad y sonido conectado a analógico 0
: DFRobot sonido micrófono Sensor de conectarse analógico 2

Escrito por: Dovadil

DISCAIMER: soy un programador muy amateur, así que por favor no juzgues el código probablemente innecesariamente complicado.
Sólo tenía una idea y lo hizo pasar. Espero que puede usar pedazos de este para su propio proyecto.
COMPARTIR!!!!!!

constantes para la prensa del botón de entrada y 1 salida de led
const int buttonPin = 11;     el número de pin pulsador
const int ledPin = 13;      el número de los pines del LED

const_variable para el pote y el Sensor de sonido
const int analogInPin = A0;  Clavija de entrada analógica que el potenciómetro está conectado a
const int analogInPinSound = A2;  Sensor de sonido de entrada analógica
int potValue = 0;        valor leído de la olla
int hora = 100;          intervalo de tiempo

varibales
inicializar el valor booleano = true;
int buttonState = 0;         variable para lectura del estado del pulsador
int modo = 0;
int soundVal = 0;
int soundPotThresholdValue = 0;
int soundSensitivityLimit = 0;
int x;
int y;
int z;

void setup()
{
inicializar comunicaciones serie a 9600 bps:
Serial.Begin(9600);
Los canales EL están en pines 2 al 9
Inicializar los pines como salidas
pinMode (2, salida);  canal A
pinMode (3, salida);  canal B
pinMode (4, salida);  canal C
pinMode (5, salida);  canal D
pinMode (6, salida);  canal E
pinMode (7, salida);  canal F
pinMode (8, salida);  canal G
pinMode (9, salida);  canal H
También contamos con dos LEDs de estado, pin 10 en el Escudo,
pinMode (10, salida);
y ledPin (pin 13) en el Arduino se
pinMode (ledPin, salida);
pinMode (buttonPin, entrada);
}

void loop()
{
Iniciar el programa con una única prueba de iluminación LED
Si (inicializar == true)
{
Delay(10);
Serial.println("");
Serial.println("");
Serial.println("Initialising...");
Serial.println("");
int estado;
Paso por todos los canales EL ocho (pines 2 al 9)
para (x = 2; x < = 9; x ++)
{
digitalWrite (ledPin, HIGH);    encender LED
digitalWrite (x, alto);         encender el canal EL
Delay(100);                    espere 1/10 de segundo
digitalWrite (ledPin, LOW);     Apagar el LED
digitalWrite (x, baja);          desactivar el canal EL
Delay(50);                     espere 1/10 de segundo
digitalWrite (ledPin, HIGH);    encender LED
digitalWrite (x, alto);         encender el canal EL
Delay(100);                    espere 1/10 de segundo
digitalWrite (ledPin, LOW);     Apagar el LED
digitalWrite (x, baja);          desactivar el canal EL
Delay(50);
deja de funcionar de inicialización después de una iteración
inicializar = false;
}
Serial.println("");
Serial.println (¡ "inicialización hecha!");
Serial.println ("esperando activación del modo");
}
Detail();

=== El modo 1 (paso a través de los ocho canales EL) ===
Si (modo == 1)
{
Paso por todos los canales EL ocho (pines 2 al 9)
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);   encender el canal EL
Delay(Time);              espere 1/10 de segundo
digitalWrite (x, baja);    desactivar el canal EL
}
}

=== MODO 2 (llenar de fondo entonces vacía de la parte inferior) ===
Si (modo == 2)
{
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
}
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, baja);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
}
}

=== El modo 3 (hasta abajo hasta abajo) ===
Si (modo == 3)
{
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
digitalWrite (x, baja);    desactivar el canal EL
}
para (x = 2; x < = 9; x ++)
{
Detail();
y = 11-x;
digitalWrite (y, alto);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
digitalWrite (y, bajo);    desactivar el canal EL
}
}

=== El modo 4 (barrido de abajo hacia arriba, barrido hacia fuera de arriba hacia abajo) ===
Si (modo == 4)
{
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);
Delay(Time);
}
para (x = 9; x > = 2; x--)
{
Detail();
digitalWrite (x, baja);
Delay(Time);
}
}

=== MODO 5 (pila y tuvo que unstack) ===
Si (modo == 5)
{
para (x = 2; x < = 9; x ++)
{
para (y = 9; y > = x; y)
{
digitalWrite (y, alto);
Delay(Time);
digitalWrite (y, bajo);
Detail();
}
digitalWrite (x, alto);
}
para (x = 9; x > = 2; x--)
{
para (y = x; y < = 9; y ++)
{
digitalWrite (y, alto);
Delay(Time);
digitalWrite (y, bajo);
Detail();
}
}
digitalWrite (y, bajo);
Delay(Time+20);
}

=== El modo 6 (alternativa intermitente) ===
Si (modo == 6)
{
Detail();
digitalWrite (2, alto);
digitalWrite (4, alto);
digitalWrite (6, alto);
digitalWrite (8, HIGH);
Delay(Time+75);
Detail();
digitalWrite (2, bajo);
digitalWrite (4, bajo);
digitalWrite (6, bajo);
digitalWrite (8, bajo);
digitalWrite (3, alto);
digitalWrite (5, alto);
digitalWrite (7, alto);
digitalWrite (9, alto);
Delay(Time+75);
Detail();
digitalWrite (3, bajo);
digitalWrite (5, bajo);
digitalWrite (7, bajo);
digitalWrite (9, bajo);
}

=== El modo 7 (entrecruzamiento) ===
Si (modo == 7)
{
para (x = 2; x < = 9; x ++)
{
y = 11-x;
digitalWrite (x, alto);   Encienda el LED (alto es el nivel de voltaje)
digitalWrite (y, alto);   Encienda el LED (alto es el nivel de voltaje)
Si (x == 5)
{
Delay(Time/2);
}
otra cosa
{
Delay(Time);
}
digitalWrite (x, baja);
digitalWrite (y, bajo);
Detail();
}
}

=== MODO 8 (modo sonido) ===
Si (modo == 8)
{
Prueba de sonido
detailSound();
Si ((soundVal,DEC) == 512)
{
flash por sonido
para (x = 2; x < = 9; x ++)
{
digitalWrite (x, alto);
Delay(40);
}
para (x = 9; x > = 2; x--)
{
digitalWrite (x, baja);
Delay(40);
}
}
}

//=================MODE 9 ==================
Si (modo == 9)
{
runAllSequences();
}

//=================MODE 10 ==================
Si (modo == 10)
{
}
}

// =========================================
=== FUNCIONES ===
// =========================================

detail() vacío
{
Lea el equivalente en valor y mapa de la gama para el tiempo
Si ((mode == 8) || (Mode == 0)) Si no es en modo de sonido, o si el programa no ha empezado
{
no hacer nada
}
otra cosa
{
Si ((potValue! = analogRead(analogInPin))) //pot no se cambia
{
tiempo = mapa (potValue, 0, 1024, 40, 200);
imprimir los resultados en el monitor serial:
Serial.Print ("\n potenciómetro =");
Serial.Print(potValue);
Serial.Print ("\t de retraso de tiempo =");
Serial.Print(Time);
Serial.Print ("milisegundos");
esperar 2 milisegundos antes del siguiente bucle
para el convertidor de analógico a digital resolver
después de la última lectura:
Delay(2);
potValue = analogRead(analogInPin);
}
}
leer el estado del pulsador valor:
buttonState = digitalRead(buttonPin);
Si (buttonState == HIGH)
{
buttonPressed();
digitalWrite (ledPin, LOW);
}
}

void detailSound()
{
soundPotThresholdValue = analogRead(analogInPin); umbral de
soundSensitivityLimit = mapa (soundPotThresholdValue, 0, 1024, 0, 512);
soundVal=analogRead(analogInPinSound); valor real del sonido
Si (soundVal > soundSensitivityLimit)
{
Serial.Print ("\n umbral =");
Serial.println(soundSensitivityLimit);
Serial.Print ("\n sonido de nivel de entrada =");
Serial.println(soundVal);
digitalWrite (ledPin, HIGH);
para (x = 2; x < = 9; x ++)
{
digitalWrite (x, alto);
Delay(15);
}
para (x = 2; x < = 9; x ++)
{
digitalWrite (x, baja);
Delay(15);
}
}
digitalWrite (ledPin, LOW);
Delay(10);
}

void buttonPressed()
{
digitalWrite (ledPin, HIGH);
Delay(300);             una pausa para controlar el programa. cambio de modo de asegurar
Mode = modo + 1;        incremento de modo
Si (modo > 9) / / si el modo es mayor que 9, reinicie desde el modo 1
{
modo = 1;
Serial.println("");
Serial.println ("restablecimiento de modo secuencia");
Serial.println("");
para (x = 0; x < = 3; x ++)
{
digitalWrite (ledPin, LOW);
Delay(100);
digitalWrite (ledPin, HIGH);
Delay(100);
digitalWrite (ledPin, LOW);
}
}
Serial.println("");
Serial.println("");
Serial.println ("tecla");
Serial.Print ("modo de:");
Serial.Print(Mode);
Serial.println("");
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}
Si el modo es el modo de sonido, parpadeo led rápidamente 10 veces
Si (modo == 8) //sound
{
para (x = 0; x < = 10; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (ledPin, HIGH);
Delay(50);
digitalWrite (ledPin, LOW);
Delay(25);
}
}
}
void runAllSequences()
{
=== El modo 1 (paso a través de los 8 canales) ===
para (z = 0; z < = 7; z ++) //because esta es la secuencia relativamente corta, hace un par de veces siempre
{
Paso por todos los canales EL ocho (pines 2 al 9)
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);   encender el canal EL
Delay(Time);              espere 1/10 de segundo
digitalWrite (x, baja);    desactivar el canal EL
}
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}

=== MODO 2 (llenar de fondo entonces vacía de la parte inferior) ===
para (z = 0; z < = 3; z ++) //because esta es la secuencia relativamente corta, hace un par de veces siempre
{
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
}
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, baja);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
}
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}

=== El modo 3 (hasta abajo hasta abajo) ===
para (z = 0; z < = 3; z ++) //because esta es la secuencia relativamente corta, hace un par de veces siempre
{
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
digitalWrite (x, baja);    desactivar el canal EL
}
para (x = 2; x < = 9; x ++)
{
Detail();
y = 11-x;
digitalWrite (y, alto);   encender el canal EL
Delay(Time);        espere 1/10 de segundo
digitalWrite (y, bajo);    desactivar el canal EL
}
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}

=== El modo 4 (barrido de abajo hacia arriba, barrido hacia fuera de arriba hacia abajo) ===
para (z = 0; z < = 3; z ++) //because esta es la secuencia relativamente corta, hace un par de veces siempre
{
para (x = 2; x < = 9; x ++)
{
Detail();
digitalWrite (x, alto);
Delay(Time);
}
para (x = 9; x > = 2; x--)
{
Detail();
digitalWrite (x, baja);
Delay(Time);
}
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}

=== MODO 5 (pila y tuvo que unstack) ===
para (z = 0; z < = 3; z ++) //because esta es la secuencia relativamente corta, hace un par de veces siempre
{
para (x = 2; x < = 9; x ++)
{
para (y = 9; y > = x; y)
{
digitalWrite (y, alto);
Delay(Time);
digitalWrite (y, bajo);
Detail();
}
digitalWrite (x, alto);
}
para (x = 9; x > = 2; x--)
{
para (y = x; y < = 9; y ++)
{
digitalWrite (y, alto);
Delay(Time);
digitalWrite (y, bajo);
Detail();
}
}
digitalWrite (y, bajo);
Delay(Time+20);
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}

=== El modo 6 (alternativa intermitente) ===
para (z = 0; z < = 10; z ++) //because se trata de una secuencia corta, puede veces
{
Detail();
digitalWrite (2, alto);
digitalWrite (4, alto);
digitalWrite (6, alto);
digitalWrite (8, HIGH);
Delay(Time+75);
Detail();
digitalWrite (2, bajo);
digitalWrite (4, bajo);
digitalWrite (6, bajo);
digitalWrite (8, bajo);
digitalWrite (3, alto);
digitalWrite (5, alto);
digitalWrite (7, alto);
digitalWrite (9, alto);
Delay(Time+75);
Detail();
digitalWrite (3, bajo);
digitalWrite (5, bajo);
digitalWrite (7, bajo);
digitalWrite (9, bajo);
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}

=== El modo 7 (entrecruzamiento) ===
para (z = 0; z < = 10; z ++) //because se trata de una secuencia corta, puede veces
{
para (x = 2; x < = 9; x ++)
{
y = 11-x;
digitalWrite (x, alto);   Encienda el LED (alto es el nivel de voltaje)

digitalWrite (y, alto);   Encienda el LED (alto es el nivel de voltaje)
Si (x == 5)
{
Delay(Time/2);
}
otra cosa
{
Delay(Time);
}
digitalWrite (x, baja);
digitalWrite (y, bajo);
Detail();
}
}
para (x = 2; x < = 9; x ++) //turn todos los canales off - reset para el siguiente bucle
{
digitalWrite (x, baja);
}
}

Artículos Relacionados

Robot de mano gesto controlado con sonido activado sistema de luz

Robot de mano gesto controlado con sonido activado sistema de luz

En este Instructable mostrará instrucciones paso a paso de cómo hacer dedo controla robot con sistema de sonido de luz activadoEste robot puede ser controlado con los cuatro dedos de su hand(left/right). Y el robot automáticamente Encienda/apague la
Sonido activado 4 X 7 RGB LED Matrix

Sonido activado 4 X 7 RGB LED Matrix

es este instructable sobre un sonido activado matriz de Led RGB de Led RGB y artículos del asimiento de casa. Los usos de la matriz de LED tres contadores binarios de 4 bits y un desplazamiento de 4 bits registrar (para los conductores de tierra en e
Suerte EL sombrero de alambre

Suerte EL sombrero de alambre

en este Instructable, voy a mostrar cómo hacer un sombrero EL alambre.En mi caso particular, hice este sombrero para día de San Patricio.Actualmente estoy asistiendo a la Universidad de Missouri de ciencia y tecnología, y Saint Pat es un gran problem
8 x 8 x 8 LED cubo con Arduino Mega (+ sonido + PS controlador + juego)

8 x 8 x 8 LED cubo con Arduino Mega (+ sonido + PS controlador + juego)

este es un instructivo que se basa en el cubopor Chr, (por SuperTech-IT, (y por das-labor.org, (http://www.das-labor.org/wiki/Borg3d_Bauanleitung...)pero creo que su mejor y más fácil.Comencé este proyecto sin ninguna habilidad de toprogramming de so
Motorizados, sonido reaccionando Star Wars en el St modelo de Bandai, con Arduino.

Motorizados, sonido reaccionando Star Wars en el St modelo de Bandai, con Arduino.

Hecho de Star Wars en el St modelo de Bandai.Reacciona al sonido y vuelve su cabeza hacia ella.Hecho con Arduino Nano, un elemento personalizado de 3dprinted, micrófonos, micro servo.Este instructivo está hecho para compartir las modificaciones neces
Como hacer pulsera de alambre de rama de árbol con perlas de naranja

Como hacer pulsera de alambre de rama de árbol con perlas de naranja

¿Está llegando el otoño, estás buscando joyas de rama? Hoy en día, este tutorial es totalmente acerca de cómo hacer pulseras de alambre de rama de árbol con los granos.Paso 1: Materiales necesarios para hacer la pulsera de rama de árbol de alambre co
Sonido perfecto con almohadillas de Gel-sello (y algún software increíble)

Sonido perfecto con almohadillas de Gel-sello (y algún software increíble)

Me encanta la presencia vivo que obtener de mi estéreo analógico, pero cuando estoy en el camino, tengo que recurrir a mi iPhone y audífonos. Ya hay muchos buenos Instructables que caminar a través de auriculares de ajuste personalizado, y te recomie
Luz activado por movimiento con Arduino y HC-SR04 sensor

Luz activado por movimiento con Arduino y HC-SR04 sensor

Este proyecto lo hice hace tiempo a la luz hasta la cocina, al abrir la puerta de atrás.La idea era al abrir la puerta de atrás, esta luz se enciende durante 15 segundos, que me dará tiempo suficiente para alcanzar el interruptor de la luz en la pare
Reproducir sonido en pc con arduino y progduino

Reproducir sonido en pc con arduino y progduino

Hoy voy a mostrar lo fácil que es construir un reproductor sencillo y ejecutarlo en el ordenador con arduino y progduino.Más información sobre progduino: http://www.progduino.comPaso 1: Código de Arduino - reproductor en su pc.Copie el código en su e
Activado por voz de LEDs con Arduino

Activado por voz de LEDs con Arduino

Este proyecto es una extensión para el reconocimiento de voz con Arduino (leandro4b). Sin embargo, en lugar de usar 3 LEDs de color separados, usé un multicolor RGBW LED emisor de 4 canales. Tuve la oportunidad de trabajar en LED Engin el verano pasa
Controlador de alambre EL Arduino (sonido activado)

Controlador de alambre EL Arduino (sonido activado)

este proyecto consolida el trabajo con el sonido para activar el alambre utilizando un Arduino Mini Pro 3.3V con un circuito basado en parte en 'Programable LilyPad-alambre vestido.' de quasiben Un resultado similar puede obtenerse utilizando uno de
Sonido activado cámara Flash

Sonido activado cámara Flash

un sonido rápido y sucio y peligroso activado flash para capturar momentos en el tiempoPaso 1: Lo primero que necesitarás es un altavoz de la computadora amplificado Aquí la víctima sacrificial es un par de kardons de harmon de la venta de garage $1P
Sonido activado LED

Sonido activado LED

Ive siempre ha querido las luces a parpadear con el bajo en mi carro pero las luces de la tienda comprado no funcionan muy bien así que decidí construir yo mismo. Usé 100 de LEDs rojos, verdes y azules. Grabé accidentalmente boca abajo causa tuve que
Sonido activado luz para que el reloj

Sonido activado luz para que el reloj

¿Ha usted nunca voltea algo sólo porque quería ver la hora en la noche?Te despiertas en medio de la noche preguntando a qué hora es.Qué pasa si la alarma no funcionaba y se han dormido!En los meses de invierno Cuándo está oscuro afuera, es fácil conf