Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Himno nacional de EE. UU. con luces y tono

Componentes y suministros

Arduino Nano R3
Tenga en cuenta que esto tiene 4 procesadores diferentes Yo uso el 328P (antiguo gestor de arranque)
× 1
Buzzer
Cualquier zumbador antiguo servirá. Usé un zumbador de 16 ohmios.
× 1
Interruptor de botón SparkFun de 12 mm
No es exactamente el que utilicé, pero el mío era 6x6x6mm
× 2
Interruptor basculante 250V 3A
Cualquier interruptor de encendido servirá. Usé un estuche de 9 voltios con un interruptor, pero está oculto en mi estuche, así que agregué un interruptor al exterior. Solo busque cualquier interruptor basculante.
× 1
Resistencia de 330 ohmios
Cualquier resistencia funcionará, pero haz un cálculo de LED y asegúrate de no pasar por encima de la salida de LED o 40 mA como máximo por pin en el Nano. 330 ohmios es prácticamente estándar en cualquier paquete de inicio Arduino.
× 3
LED (genérico)
6 LED o los que desee. 2 rojos, 2 blancos y 2 azules. El LED rojo que utilicé fue de 2,2 V y el otro de 3,2 V cada LED. Resultados en 9,7 mA y 6,7 mA usando 330 ohmios. (recuerde que estoy usando 2 por salida, por lo que ~ 13 mA y ~ 20 mA, que es la mitad de la corriente de salida máxima del pin)
× 6
Placa de pruebas SparkFun soldable - Mini
Cualquier tablero funcionará, suelde o no suelde su llamada sobre cómo se verá. O puede hacerlo sin uno y simplemente taladrar agujeros y madera y pegar las piezas en su lugar.
× 1
batería de 9V (genérica)
muchas opciones de alimentación. Usé una batería de 9 voltios con una caja y un interruptor. Puede usar solo un cable USB o incluso 4 baterías AA siempre que cumpla con los requisitos de entrada Nano. Lamento haber pagado dinero extra por uno que tenía un interruptor de encendido / apagado, ya que usé un interruptor separado.
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Depende de usted si desea soldar

Acerca de este proyecto

Comencé el año pasado haciendo programación para un eventual proyecto musical y de luces navideñas. Este es un proyecto paralelo que alguien me pidió que hiciera y pensó que sería divertido. Inicialmente, esto iba a ser solo una canción con luces, pero eso es poco convincente.

Aquí hay un enlace en caso de que haya tenido problemas con el video:

https://youtu.be/C2jyn80Mjus

Este proyecto utiliza un Arduino Nano. En este proyecto utilizo dos botones pulsadores diferentes para hacer dos canciones diferentes usando la función Tone (). Uno es el sonido de 'carga' y el otro es el 'Himno Nacional de EE. UU.'. Hasta que se presionan los botones, solo hace una iluminación aleatoria para los efectos.

En este boceto, hago un uso intensivo de las funciones para simplificar mi proceso de escritura de las funciones, pero mantengo el control total del proceso de iluminación / sonido para poder hacer pequeños ajustes si no me gusta lo que escucho / veo con muy poca dificultad. .

Mi objetivo al publicar este proyecto es compartir algunas de las cosas que he aprendido en diseño / codificación para que, si está haciendo algo similar, esto pueda ayudar.

Así es como se veía el diseño inicial en la placa de pruebas mientras probaba el sistema y el código.

Aquí está la configuración del sistema de energía. Elijo una batería de 9 voltios por tamaño y no depende de una pared USB o de la alimentación de una computadora.

Así es como se ve una vez que todo está soldado desde el interior. Recomiendo encarecidamente soldar solo con la cubierta superior y luego agregar los lados más tarde

Código

  • USA_ANTHEM_Updated.ino
USA_ANTHEM_Updated.ino Arduino
La pancarta Star Spangled con LED, carga, tono, todas las funciones. Simplemente copie y pegue.
 / * Star Spangled Banner con LED Creado por Ryan Aebi Junio ​​de 2018 Código de estructura-Bucle básico para hacer referencia a otras funciones-Los botones pulsadores hacen ya sea Star Spangled Banner o Charge sonidos con luces Star Spangled Banner Notes-La función tiene una nota asignada por entero para Frecuencia (Hz) y duración (tiempo en n) -LED lo elijo yo mismo de forma semi-aleatoria cuando escribo la función-La función está construida para aumentar el tono con cada reproducción (se restablece al tono normal al inicio / reinicio del hardware) -Pitch calculado es 1/12 de un total o .06 Diseño de botones / cableado-3 conjuntos de LED de rojo, azul y verde en cada canal, incluidos 2 de cada uno en paralelo.-Botón de reinicio externo, botón de inicio para la canción, interrupción de la canción para cargar * /// ********************************************* *************** Enteros declarados const int ChargeButton =3; // (Nano D3) uno pin 2 debe ser un pin de interrupción const int StartButton =5; // (Nano D5) uno pin 4 const int BuzzerPin =9; // (Nano D9) uno pin 9 const int RedLED =6; // (Nano D6) uno pin 6 const int WhiteLED =7; // (Nano D7) uno pin 7 const int BlueLED =8; // (Nano D8) uno pin 8 int n =1000; // declarando el número entero, este valor cambiará con cada canción int DurationOn =n; // La declaración de un entero para más adelante se utilizará en los cálculos de stacatto int DurationRest =n; // la declaración de un entero para más adelante se usará en los cálculos de stacatto // la suma de x &y debe ser 1 Tengo más notas sobre esto más adelante en float x =.66; // declarando float por tiempo en float y =.34; // declarando float para el tiempo libre // velocidad a la que las luces parpadean aleatoriamente mientras se espera el botón input int Twinkle_Rate =250; // tenga en cuenta que si aumenta drásticamente los botones puede que no respondan el 100% del tiempo // una tasa de centelleo más baja mejora la respuesta al presionar el botón // establece números enteros para los estados de los botones int StartButtonState; int ChargeButtonState; // nota que el Do central es 4C (si bemol y mi bemol) int Note1 =233; // 3Bb 233Hz int Note2 =294; // 4D 294Hz int Note3 =330; // 4E 330Hz int Note4 =349; // 4F 349Hz int Note5 =392; // 4G 392Hz int Note6 =440; // 4A 440Hz int Note7 =466; // 4Bb 466Hz int Note8 =523; // 5C 523Hz int Note9 =587; // 5D 587Hz int Note10 =622; // 5Eb 622Hz int Note11 =698; // 5F 698Hz // ****************************************** ****************** Función de carga / Carga Songvoid () {n =600; // velocidad a la que avanza la canción // Formato:escribe pin (s) en, tono a una frecuencia específica (de esta manera no está sujeto a // cambios al final del Himno Nacional, más sobre esto más adelante), demora el mismo tiempo que tono para sincronizar música, // escribe los pines que estaban encendidos y demora para descansar digitalWrite (RedLED, HIGH); tono (BuzzerPin, 392, n / 3); retraso (n / 3); escritura digital (LED rojo, BAJO); retraso (70); digitalWrite (WhiteLED, HIGH); tono (BuzzerPin, 523, n / 3); retraso (n / 3); digitalWrite (WhiteLED, LOW); retraso (70); digitalWrite (BlueLED, HIGH); tono (BuzzerPin, 659, n / 3); retraso (n / 3); digitalWrite (BlueLED, LOW); retraso (70); escritura digital (LED rojo, ALTO); digitalWrite (WhiteLED, HIGH); digitalWrite (BlueLED, HIGH); tono (BuzzerPin, 784, n * 3/4); retraso (n * 3/4); digitalWrite (BlueLED, LOW); escritura digital (LED rojo, BAJO); digitalWrite (WhiteLED, LOW); retraso (70); digitalWrite (BlueLED, HIGH); tono (BuzzerPin, 659, n / 4); retraso (n / 4); digitalWrite (BlueLED, LOW); retraso (70); escritura digital (LED rojo, ALTO); digitalWrite (WhiteLED, HIGH); digitalWrite (BlueLED, HIGH); tono (BuzzerPin, 784, n * 2); retraso (n * 2); digitalWrite (BlueLED, LOW); escritura digital (LED rojo, BAJO); digitalWrite (WhiteLED, LOW); retraso (70);} // **************************************** ******************** Función SingleDWvoid SingleDWwithNote (int HZ, int TurnOn, int Duration, int Staccato) {// Hertz en el que se encuentra la nota (referencia Nota #) / / turn on =pin (LED rojo / blanco / azul) que se sintonizará // la duración es por cuánto tiempo // Staccato 1 =sí, 0 =no da como resultado una nota ligeramente acortada, o un valor int x alto como solo un pausa breve if (Staccato ==1) {DurationOn =Duration * x;} // cuánto tiempo el tono y las luces están encendidas es DurationShort else if (Staccato ==0) {DurationOn =Duration;} digitalWrite (TurnOn, HIGH); tono (BuzzerPin, HZ, DurationOn); retraso (DurationOn); digitalWrite (Encendido, BAJO); if (Staccato ==1) {DurationRest =Duration * y; retraso (DurationRest); }} // ******************************************** **************** Función del himno nacional de EE. UU. / Songvoid USNationalAnthem () {n =577; // velocidad a la que se reproduce el sonido calculada a partir de:60.000 (ms / factor BPM) / 104 BPM =577 ms / * el valor de una negra es n un valor de media nota en n * 2 corcheas es n / 2 notas de ocho punteadas es n * 3 / 4 * / // Los enteros x &y son para staccato / agregar silencio después de una nota // tenga en cuenta que x + y debe =1 o el int. La velocidad n se eliminará // disminuirá x y aumentará y para hacer que las notas sean más pronunciadas y nerviosas / optimistas x =.92; // el stacatio verdadero es aproximadamente 1/2 o 2/3 del valor, por lo que el valor de x está entre .5 y .7 para un staccato verdadero y =.08; //1.00-.92(x valor) =.08 // barras 1-5, líneas 1 SingleDWwithNote (Note4, RedLED, n * 3/4, 1); SingleDWwithNote (Note2, WhiteLED, n / 4, 1); SingleDWwithNote (Note1, RedLED, n, 1); SingleDWwithNote (Note2, WhiteLED, n, 1); SingleDWwithNote (Note4, RedLED, n, 1); SingleDWwithNote (Note7, WhiteLED, n * 2, 1); SingleDWwithNote (Note9, BlueLED, n * 3/4, 1); SingleDWwithNote (Note8, WhiteLED, n / 4, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note2, WhiteLED, n, 1); SingleDWwithNote (Note3, BlueLED, n, 1); SingleDWwithNote (Note4, RedLED, n * 2, 1); SingleDWwithNote (Note4, RedLED, n / 2, 1); SingleDWwithNote (Note4, RedLED, n / 2, 1); // barra6-9 línea 2 SingleDWwithNote (Note9, BlueLED, n * 3/2, 1); SingleDWwithNote (Note8, WhiteLED, n / 2, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note6, BlueLED, n * 2, 1); SingleDWwithNote (Note5, WhiteLED, n / 2, 1); SingleDWwithNote (Note6, BlueLED, n / 2, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note4, BlueLED, n, 1); SingleDWwithNote (Note2, WhiteLED, n, 1); SingleDWwithNote (Note1, BlueLED, n, 1); SingleDWwithNote (Note4, RedLED, n * 3/4, 1); SingleDWwithNote (Note2, WhiteLED, n / 4, 1); // barras 10-13 línea 3 SingleDWwithNote (Note1, RedLED, n, 1); SingleDWwithNote (Note2, WhiteLED, n, 1); SingleDWwithNote (Note4, RedLED, n, 1); SingleDWwithNote (Note7, WhiteLED, n * 2, 1); SingleDWwithNote (Note9, BlueLED, n * 3/4, 1); SingleDWwithNote (Note8, WhiteLED, n / 4, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note2, WhiteLED, n, 1); SingleDWwithNote (Note3, BlueLED, n, 1); SingleDWwithNote (Note4, RedLED, n * 2, 1); SingleDWwithNote (Note4, RedLED, n / 2, 1); SingleDWwithNote (Note4, RedLED, n / 2, 1); // compás 14-17, línea 4, final de la página 1 SingleDWwithNote (Note9, BlueLED, n * 3/2, 1); SingleDWwithNote (Note8, WhiteLED, n / 2, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note6, BlueLED, n * 2, 1); SingleDWwithNote (Note5, WhiteLED, n / 2, 1); SingleDWwithNote (Note6, BlueLED, n / 2, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note4, BlueLED, n, 1); SingleDWwithNote (Note2, WhiteLED, n, 1); SingleDWwithNote (Note1, RedLED, n, 1); SingleDWwithNote (Note9, BlueLED, n / 2, 1); SingleDWwithNote (Note9, BlueLED, n / 2, 1); // compases 18-21, línea 5, inicio de la página 2 SingleDWwithNote (Note9, BlueLED, n, 1); SingleDWwithNote (Note10, RedLED, n, 1); SingleDWwithNote (Note11, WhiteLED, n, 1); SingleDWwithNote (Note11, WhiteLED, n * 2, 1); SingleDWwithNote (Note10, RedLED, n / 2, 1); SingleDWwithNote (Note9, BlueLED, n / 2, 1); SingleDWwithNote (Note8, WhiteLED, n, 1); SingleDWwithNote (Note9, BlueLED, n, 1); SingleDWwithNote (Note10, RedLED, n, 1); SingleDWwithNote (Note10, RedLED, n * 2, 1); SingleDWwithNote (Note10, RedLED, n, 1); // barras 22-25, línea 6 SingleDWwithNote (Note9, WhiteLED, n * 3/2, 1); SingleDWwithNote (Note8, BlueLED, n / 2, 1); SingleDWwithNote (Note7, WhiteLED, n, 1); SingleDWwithNote (Note6, RedLED, n * 2, 1); SingleDWwithNote (Note5, BlueLED, n / 2, 1); SingleDWwithNote (Note6, RedLED, n / 2, 1); SingleDWwithNote (Note7, WhiteLED, n, 1); SingleDWwithNote (Note2, BlueLED, n, 1); SingleDWwithNote (Note3, RedLED, n, 1); SingleDWwithNote (Note4, WhiteLED, n * 2, 1); SingleDWwithNote (Note4, RedLED, n, 1); n =n * 1,08; // 60.000 / 96 bpm =625 ms; solo un ligero retardo // compases 26-28, línea 7 SingleDWwithNote (Note7, WhiteLED, n, 1); SingleDWwithNote (Note7, WhiteLED, n, 1); SingleDWwithNote (Note7, WhiteLED, n / 2, 1); SingleDWwithNote (Note6, BlueLED, n / 2, 1); SingleDWwithNote (Note5, RedLED, n, 1); SingleDWwithNote (Note5, RedLED, n, 1); SingleDWwithNote (Note5, RedLED, n, 1); SingleDWwithNote (Note8, WhiteLED, n, 1); SingleDWwithNote (Note10, RedLED, n / 2, 1); SingleDWwithNote (Note9, BlueLED, n / 2, 1); SingleDWwithNote (Note8, WhiteLED, n / 2, 1); SingleDWwithNote (Note7, RedLED, n / 2, 1); // barras 29-30 SingleDWwithNote (Note7, RedLED, n, 1); SingleDWwithNote (Note6, BlueLED, n * 2, 1); // 2x para contener SingleDWwithNote (Note4, RedLED, n / 2, 1); SingleDWwithNote (Note4, RedLED, n / 2, 1); SingleDWwithNote (Note7, BlueLED, n * 3/2, 1); SingleDWwithNote (Note8, WhiteLED, n / 2, 1); SingleDWwithNote (Note9, BlueLED, n / 2, 1); SingleDWwithNote (Note10, RedLED, n / 2, 1); n =n * 1,2; // retardo grande // compases 31-34 final de la canción SingleDWwithNote (Note11, WhiteLED, n * 2, 1); // retención adicional en SingleDWwithNote libre (Note7, RedLED, n / 2, 1); SingleDWwithNote (Note8, WhiteLED, n / 2, 1); SingleDWwithNote (Note9, BlueLED, n * 3/2, 1); SingleDWwithNote (Note10, RedLED, n / 2, 1); SingleDWwithNote (Note8, WhiteLED, n, 1); SingleDWwithNote (Note7, RedLED, n * 3, 1); // solo manteniendo 3 valores // rasie todas las notas en 3 pasos //1.06 derivado de la teoría musical. Tome una nota en hercios y luego divídala por // nota debajo de ella (los sostenidos y bemoles cuentan como una nota) hasta 1.06 // Puede eliminar este párrafo siguiente para evitar cambios de frecuencia o cambiarlo si lo desea Note1 =Note1 * 1,06 * 1,06 * 1,06; Note2 =Note2 * 1.06 * 1.06 * 1.06; Note3 =Note3 * 1.06 * 1.06 * 1.06; Note4 =Note4 * 1.06 * 1.06 * 1.06; Note5 =Note5 * 1.06 * 1.06 * 1.06; Note6 =Note6 * 1.06 * 1.06 * 1.06; Note7 =Note7 * 1.06 * 1.06 * 1.06; Note8 =Note8 * 1.06 * 1.06 * 1.06; Note9 =Note9 * 1.06 * 1.06 * 1.06; Note10 =Note10 * 1.06 * 1.06 * 1.06; Note11 =Note11 * 1.06 * 1.06 * 1.06;} // *********************************** ************************* Twinkle void Twinkle (int Twinkle_Time) // Colocar un número en () muestra cuánto tiempo ocurre el centelleo {// construido esta función para otro uso, por lo que tiene un extraño cálculo inicial innecesario // cambia el tiempo y la tasa en un número entero más pequeño, tenga en cuenta que el front-end redondea Twinkle_Time =Twinkle_Time / Twinkle_Rate; // en este caso, Tiwkle Time es =a Twinkle Rate, por lo que el valor es 1 para (Twinkle_Time; Twinkle_Time> 0; Twinkle_Time--) // dado que el valor es 1 solo se procesa una vez {int B =random (1,4); // número entero aleatorio de 1, 2 o 3 int C =aleatorio (1,4); // entero aleatorio de 1, 2 o 3 // no hay problemas si ambos enteros son iguales, solo se enciende un LED, se suma a la aleatoriedad // evalúa cada entero para que se ejecute en un LED de color específico if (B ==1) { digitalWrite (RedLED, HIGH);} if (B ==2) {digitalWrite (WhiteLED, HIGH);} if (B ==3) {digitalWrite (BlueLED, HIGH);} if (C ==1) {digitalWrite ( RedLED, HIGH);} if (C ==2) {digitalWrite (WhiteLED, HIGH);} if (C ==3) {digitalWrite (BlueLED, HIGH);} delay (Twinkle_Rate); // mantiene el LED encendido durante un establecemos el período de tiempo // y luego escribimos los LED correspondientes bajos. frío posiblemente simlify y simplemente escriba los 3 bajo puede acelerar el tiempo si (B ==1) {digitalWrite (RedLED, LOW);} if (B ==2) {digitalWrite (WhiteLED, LOW);} if (B ==3) {digitalWrite (BlueLED, LOW);} if (C ==1) {digitalWrite (RedLED, LOW);} if (C ==2) {digitalWrite (WhiteLED, LOW);} if (C ==3) {digitalWrite (BlueLED, LOW);}}} // *********************************** ************************* Setupvoid setup () {pinMode (ChargeButton, INPUT_PULLUP); // pone como entrada y habilita la resistencia pull up interna para el botón pinMode (StartButton, INPUT_PULLUP); // pone como entrada y habilita la resistencia pull up interna para el botón pinMode (RedLED, OUTPUT); // LED configurado como salida pinMode (WhiteLED, OUTPUT); // LED configurado como salida pinMode (BlueLED, OUTPUT); // LED configurado como salida pinMode (BuzzerPin, OUTPUT); // Zumbador configurado como salida // digitalWrite (ChargeButton, HIGH); no es necesario ya que está habilitado como pullup, es simplemente redundante // digitalWrite (StartButton, HIGH); no es necesario ya que está habilitado como pullup, es simplemente redundante // establece todos los LED en LOW para evitar errores. Para mi diseño HIGH =ON, LOW =OFF digitalWrite (RedLED, LOW); digitalWrite (WhiteLED, LOW); digitalWrite (BlueLED, LOW); } // ********************************************* *************** Main Loopvoid loop () {// lee los estados de los botones, los pines se conectaron a la resistencia interna configurada como alta // los pines estarán bajos cuando se presione StartButtonState =digitalRead (StartButton); // bajo =presionado ChargeButtonState =digitalRead (ChargeButton); // bajo =presionado // evalúa contra enteros para hacer el primer pin de función que fue resuelto como bajo // la frecuencia de muestreo para los botones de lectura es el int twinkle_rate (.25 segundos) if (StartButtonState ==LOW) {USNationalAnthem ();} else if (ChargeButtonState ==LOW) {Charge ();} else {Twinkle (Twinkle_Rate);} // si no se presionan alfileres, ¡brilla! otra vez ... y otra vez ... y otra vez ...} 

Esquemas

Muestra las conexiones eléctricas mediante la placa de pruebas Muestra conexiones de cableado sin soldar ¡Siga los cables! Muestra el costo de cada artículo, el costo total y dónde se compró.

Proceso de manufactura

  1. Circuito con un interruptor
  2. Luces navideñas
  3. Pañuelo con loción
  4. Acceed:Switch gigabit de 12 puertos con 4 puertos SFP
  5. Supervisión de la temperatura con Raspberry Pi
  6. Panel de interruptores / LED con Arduino para FS2020
  7. Declaración de caso de cambio de C ++ con EJEMPLO
  8. switch…caso en C (Sentencia Switch en C) con ejemplos
  9. Declaración de cambio de caso de Java con ejemplo
  10. La Red Nacional MEP ™ se conecta con los fabricantes propiedad de minorías
  11. Atenuación de luces con PWM usando el botón pulsador