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

Reproductor de MP3 Arduino + sensor de distancia =DIVERSIÓN

Componentes y suministros

Arduino UNO
× 1
Reproductor de mp3 serie Arduino de catalex
También necesitas una tarjeta SD y una toma de tarjeta SD (de grande a pequeña) para la PC
× 1
Sensor ultrasónico - HC-SR04 (genérico)
× 2
algún altavoz con entrada de conector mp3
× 1

Acerca de este proyecto

Cómo utilizar el reproductor MP3 en serie de CATALEX

Mi tutorial anterior al respecto, solo se necesitaba una biblioteca ( #include ), y alguna función sencilla ya explicada en el tutorial anterior:

  void sendCommand (int8_t command, int16_t dat) {if (command ==CMD_PLAY_WITHFOLDER or command ==CMD_PLAY_WITHVOLUME) {Serial.print ("REPRODUCIENDO CANCIÓN, MUEVA LIGERAMENTE LA CABEZA PARA UN GRAN EFECTO");} delay ( 20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versión Send_buf [2] =0x06; // el número de bytes del comando sin byte inicial y byte final Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sin comentarios, 0x01 =comentarios Send_buf [5] =(int8_t) (dat>> 8); // datah Send_buf [6] =(int8_t) (dat); // datal Send_buf [7] =0xef; // byte final para (uint8_t i =0; i <8; i ++) // {mySerial.write (Send_buf [i]); // enviar bit a mp3 serial} Serial.println (); }  

Cómo utilizar la gama ultrasónica HC-SR04

Mi tutorial anterior al respecto, no se necesita biblioteca, es fácil de usar de todos modos. Acabo de tomar mi publicación anterior de hc-sr04 y la puse en esta función:

  long measureDistance () {larga duración, distancia; digitalWrite (trigPin, BAJO); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, BAJO); duración =pulseIn (echoPin, HIGH); distancia =(duración / 2) / 29,1; Serial.println ("distancia:"); Serial.println (distancia); distancia de regreso; // devuelve la distancia en cm}  

Cómo usar ambos Versión 1:Disparador de distancia mp3 simple

Primero instale la biblioteca si aún no la tiene ().

En esta versión del código, si algo se acerca a más de 50 cm, se activa el audio mp3. Lo usé para asustar a mis compañeros de cuarto con un clip muy fuerte de "hijo de puta sorpresa".

Nota: .ino completo El código se encuentra en los Anexos del proyecto a continuación.

  void loop () {if (measureDistance () <50) {sendCommand (CMD_PLAY_WITHFOLDER, 0X0203); // reproduce la tercera canción de la segunda carpeta delay (1000); // espera para evitar errores} delay (300); }  

Cómo utilizar tanto la versión 2 como el disparador de distancia de mp3 Disturbance

A esta versión no le importa la distancia, solo detecta diferencias entre lecturas. Si se dispara repentinamente por error, ponga un valor más alto en if (gap> 20) {....... necesitamos declarar nuevas variables fuera del ciclo. Lo hice al principio del código.

  int firstTime =0; // necesitamos declarar firstTime fuera del bucle long Distance, auxDistance, gap =0; void loop () {Distancia =medirDistancia (trigPin, echoPin); // medir la distancia y almacenar la brecha =abs (Distancia-auxDistance); // calcular la diferencia entre ahora y la última lectura if (firstTime ==0) {// necesario para cosas de estabilidad auxDistance =Distancia; brecha =0; // lo hace solo la primera vez después de reproducir una canción para evitar el mal funcionamiento del primer bucle firstTime ++; retraso (1000); } if (gap>
 20) {// si la variación de distancia es 20cm sendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // reproduce la primera canción de la segunda carpeta firstTime =0; // evita errores !! no nos gustan los errores delay (2000); } Serial.print ("Nueva distancia:"); // debugggggg Serial.print (Distancia); Serial.print ("Distancia anterior:"); Serial.print (auxDistance); Serial.println (espacio); retraso (300); auxDistance =Distancia; // almacena el valor de if () en el siguiente ciclo}  

Cómo utilizar ambos Versión 3:dos sensores de distancia

Con dos sensores de distancia puedes adivinar la dirección del movimiento así que hice un programa que dice " hola "o" adiós "dependiendo de la dirección de movimiento de la persona.

  • Primero definimos otros dos pines DIGITALES para controlar el segundo HC-SR04:
  #define trigPin 13 // para el PRIMER módulo de distancia #define echoPin 12 #define trigPin2 10 // para el SEGUNDO módulo de distancia #define echoPin2 9  
  • ¡Nuevas variables! ¡Sí!
  larga distancia, auxDistance, gap =0; Long Distance2, auxDistance2, gap2 =0; // nuevas variables  
  • En setup () agregamos nuestra nueva declaración de pines.
  pinMode (trigPin, SALIDA); pinMode (echoPin, ENTRADA); pinMode (trigPin2, SALIDA); pinMode (echoPin2, ENTRADA);  
  • Cambiamos la medidaDistancia () función, ahora la función lee los pines de los argumentos.
  long measureDistance (int trigger, int echo) {larga duración, distancia; digitalWrite (disparador, BAJO); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (disparador, ALTO); delayMicroseconds (10); digitalWrite (disparador, BAJO); duración =pulseIn (eco, ALTO); distancia =(duración / 2) / 29,1; Serial.println ("distancia:"); Serial.println (distancia); distancia de regreso; }  
  • En nuestro loop ():
  void loop () {Distancia =medirDistancia (trigPin, echoPin); // medir distancia1 y almacenar Distancia2 =medirDistancia (trigPin2, ecoPin2); // medir distancia2 y almacenar brecha =abs (Distancia-auxDistance); // calcula la diferencia entre la lectura actual y la última gap2 =abs (Distancia2-auxDistance2); // calcula la diferencia entre la lectura actual y la última lectura if (firstTime ==0) {// necesario para la estabilidad cosas auxDistance =Distancia; auxDistance2 =Distancia2; brecha =0; gap2 =0; // lo hace solo la primera vez después de reproducir una canción para evitar el mal funcionamiento del primer bucle firstTime ++; retraso (2000); } if (gap>
 20 y gap2 <20) {// si la variación de distancia es de 20cm sendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // reproduce la primera canción de la segunda carpeta firstTime =0; // evita errores !! Serial.println ("MOVIMIENTO DERECHO DETECTADO"); retraso (2000); } if (gap2> 20 y gap <20) {// si la variación de distancia es 20cm sendCommand (CMD_PLAY_WITHFOLDER, 0X0202); // reproduce la segunda canción de la segunda carpeta firstTime =0; // ¡¡evita errores !! Serial.println ("MOVIMIENTO IZQUIERDO DETECTADO"); retraso (2000); } Serial.println ("\\\\\\\\\\\\\\\\\\\\\"); // debugggggg Serial.print ("Nueva distancia:"); // debugggggg Serial. imprimir (Distancia); Serial.print ("Distancia anterior:"); Serial.print (auxDistance); Serial.print ("GAP"); Serial.println (espacio); Serial.print ("New Distace2:"); // debugggggg Serial.print (Distancia); Serial.print ("Old Distance2:"); Serial.print (auxDistance); Serial.print ("GAP2"); Serial.println (espacio); Serial.println ("\\\\\\\\\\\\\\\\\\\\\"); // retraso de depuración (300); auxDistance =Distancia; // almacena el valor de if () en el siguiente ciclo auxDistance2 =Distancia2; // almacena el valor de if () en el siguiente ciclo} Disturbance2 =0; left =0; right =0; delay (1000); // esperar para evitar errores} delay (300); auxDistance =Distancia; // almacena el valor de if () en el siguiente bucleuxDistance2 =Distance2; // almacena el valor de if () en el siguiente bucle}  

¡Feliz piratería, amigos!

Código

  • Versión 1, disparador de distancia MP3 simple
  • Versión 2, Disparador de distancia de mp3 Disturbance
  • VERSIÓN 3, CON DOS SENSORES, SENSOR DE DIRECCIÓN
Versión 1, Disparador de distancia mp3 simple Arduino
En esta versión del código, si algo se acerca a más de 50 cm, se activa el audio mp3. Lo usé para asustar a mis compañeros de cuarto con un clip muy fuerte de "hijo de puta sorpresa".
 // código reordenado por Javier Muñoz 10/11/2016 pregúntame a [email protected]#include  #define ARDUINO_RX 5 // debe conectarse a TX del módulo Serial MP3 Player # definir ARDUINO_TX 6 // conectarse a RX del módulo # definir trigPin 13 // para el módulo de distancia # definir echoPin 12SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // iniciar el protocolo serial, dígale a myserial qué pines son TX y RX //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////todos comandos necesarios en la hoja de datos (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // El reproductor MP3 comprende las órdenes en una cadena de 8 int // 0X7E FF 06 comando 00 00 00 EF; (si comando =01 siguiente orden de canción) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // SE REQUIEREN DATOS (número de canción) #define VOLUME_UP_ONE 0X04 #define VOLUME_D5ET_VOLX 0X04 ME 0X06 // SE REQUIEREN DATOS (número de volumen de 0 a 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_WITHVOLUME 0X22 // se necesitan datos 0x7E 06 22 00 xx yy EF; (xx volumen) (yy número de canción ) #define CMD_SEL_DEV 0X09 // SELECCIONE EL DISPOSITIVO DE ALMACENAMIENTO, SE REQUIEREN DATOS #define DEV_TF 0X02 // HOLA, IM LOS DATOS REQUERIDOS #define SLEEP_MODE_START 0X0A # define SLEEP_MODE_WAKEUP 0X0XD0XD_PRODUCCIÓN #define CMD_PAUSE 0X0E // PLAYBACK IS PAUSED # define CMD_PLAY_WITHFOLDER 0X0F // SE NECESITAN DATOS, 0x7E 06 0F 00 01 02 EF; (reproducir la canción con el directorio \ 01 \ 002xxxxxx.mp3 # definir STOP_PLAY 0X16 # definir PLAY_FOLDER 0X17 // se necesitan datos 0x7E 06 17 00 01 XX EF; (reproducir la carpeta 01) (valor xx no nos importa) #define SET_CYCLEPLAY 0X19 // se necesitan datos 00 start; 01 cerrar # definir SET_DAC 0X17 // se necesitan datos 00 iniciar SALIDA DAC; 01 DAC sin salida //////////////////////////////// //////////////////////////////////////////////////// //// void setup () {Serial.begin (9600); // Inicie nuestras comunicaciones en serie para el monitor en serie en nuestro pcmySerial.begin (9600); // Inicie nuestras comunicaciones en serie para el MP3delay (500); // Espere la inicialización del chip está completa sendCommand (CMD_SEL_DEV, DEV_TF); // seleccione el retardo de la tarjeta TF (200); // espere 200mspinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT);} void loop () {if (meterDistance ( trigPin, echoPin) <50) {sendCommand (CMD_PLAY_WITHFOLDER, 0X0203); // reproduce la tercera canción de la segunda carpetadelay (1000); // espera para evitar errores} delay (300);} void sendCommand (int8_t command, int16_t dat ) {retraso (20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versión Send_buf [2] =0x06; // el número de bytes del comando sin byte inicial y byte final Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sin comentarios, 0x01 =comentarios Send_buf [5] =(int8_t) (dat>> 8); // datah Send_buf [6] =(int8_t) (dat); // datal Send_buf [7] =0xef; // byte final para (uint8_t i =0; i <8; i ++) // {mySerial.write (Send_buf [i]); // enviar bit a mp3 serial Serial.print (Send_buf [i], HEX); / / enviar bit al monitor en serie en la pc} Serial.println ();} long measureDistance (int trigger, int echo) {larga duración, distancia; digitalWrite (disparador, BAJO); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (disparador, ALTO); delayMicroseconds (10); digitalWrite (disparador, BAJO); duración =pulseIn (eco, ALTO); distancia =(duración / 2) / 29,1; Serial.println ("distancia:"); Serial.println (distancia); distancia de retorno;} 
Versión 2, Disparador de distancia de mp3 de perturbación Arduino
A esta versión no le importa la distancia, solo detecta diferencias entre lecturas.
 // código reordenado por Javier Muñoz 10/11/2016 pregúntame a [email protected]#include  #define ARDUINO_RX 5 // debe conectarse a TX del módulo Serial MP3 Player # definir ARDUINO_TX 6 // conectarse a RX del módulo # definir trigPin 13 // para el módulo de distancia # definir echoPin 12SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // iniciar el protocolo serial, decirle a mi serie qué pines son TX y RX /////////////////////////////////////////// /////////////////////////////////////////////// todos los comandos necesarios en la hoja de datos (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // El reproductor MP3 entiende las órdenes en una cadena de 8 int // 0X7E FF 06 comando 00 00 00 EF; (si el comando =01 siguiente orden de la canción) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // SE REQUIEREN DATOS (número de canción) #define VOLUME_UP_ONE 0X04 # define VOLUME_DOWN_ONE 0DX05 # define VOLUME_DOWN_ONE 0DX05 _SET_VOLUME 0X06 // SE REQUIEREN DATOS (número de volumen de 0 a 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_WITHVOLUME 0X22 // se necesitan datos 0x7E 06 22 00 xx yy EF; (xx volumen) (yy número de canción ) #define CMD_SEL_DEV 0X09 // SELECCIONE EL DISPOSITIVO DE ALMACENAMIENTO, SE REQUIEREN DATOS #define DEV_TF 0X02 // HOLA, IM LOS DATOS REQUERIDOS #define SLEEP_MODE_START 0X0A # define SLEEP_MODE_WAKEUP 0X0XD0XD_PRODUCCIÓN #define CMD_PAUSE 0X0E // PLAYBACK IS PAUSED # define CMD_PLAY_WITHFOLDER 0X0F // SE NECESITAN DATOS, 0x7E 06 0F 00 01 02 EF; (reproducir la canción con el directorio \ 01 \ 002xxxxxx.mp3 # definir STOP_PLAY 0X16 # definir PLAY_FOLDER 0X17 // se necesitan datos 0x7E 06 17 00 01 XX EF; (reproducir la carpeta 01) (valor xx no nos importa) #define SET_CYCLEPLAY 0X19 // se necesitan datos 00 start; 01 cerrar # definir SET_DAC 0X17 // se necesitan datos 00 iniciar SALIDA DAC; 01 DAC sin salida //////////////////////////////// //////////////////////////////////////////////////// //// int firstTime =0; // necesitamos declarar firstTime fuera del bucle long Distance, auxDistance, gap =0; void setup () {Serial.begin (9600); // Iniciar nuestras comunicaciones en serie para el monitor en serie en our pcmySerial.begin (9600); // Iniciar nuestras comunicaciones en serie para EL MP3delay (500); // Esperar que la inicialización del chip se complete sendCommand (CMD_SEL_DEV, DEV_TF); // seleccionar el retraso de la tarjeta TF (200); // esperar 200mspinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT);} void loop () {Distance =meterDistance (trigPin, echoPin); // medir la distancia y storegap =abs (Distance-auxDistance); // calcular la diferencia entre ahora and last readingif (firstTime ==0) {// necesario para la estabilidad thingsauxDistance =Distance; gap =0; // lo hace solo la primera vez después de reproducir una canción para evitar el primer bucle malfuntcionfirstTime ++; delay (1000);} if (gap>
 20) {// si la variación de distancia es 20cmsendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // reproducir la primera canción de la segunda carpeta firstTime =0; // evitar errores !! (2000); } Serial.print ("Nueva distancia:"); // debuggggggSerial.print (Distancia); Serial.print ("Distancia anterior:"); Serial.print (auxDistance); Serial.println (espacio); retardo (300); auxDistance =Distancia; // almacena el valor para if () en el siguiente ciclo} void sendCommand (int8_t command, int16_t dat) {if (command ==CMD_PLAY_WITHFOLDER or command ==CMD_PLAY_WITHVOLUME) {Serial.print ("REPRODUCIENDO CANCIÓN, MUEVA LIGERAMENTE LA CABEZA PARA OBTENER UN GRAN EFECTO ");} delay (20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versión Send_buf [2] =0x06; // el número de bytes del comando sin byte inicial y byte final Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sin comentarios, 0x01 =comentarios Send_buf [5] =(int8_t) (dat>> 8); // datah Send_buf [6] =(int8_t) (dat); // datal Send_buf [7] =0xef; // byte final para (uint8_t i =0; i <8; i ++) // {mySerial.write (Send_buf [i]); // enviar bit a serial mp3} Serial.println ();} long measureDistance (int trigger , int echo) {larga duración, distancia; digitalWrite (disparador, BAJO); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (disparador, ALTO); delayMicroseconds (10); digitalWrite (disparador, BAJO); duración =pulseIn (eco, ALTO); distancia =(duración / 2) / 29.1; // Serial.println ("distancia:"); // Serial.println (distancia); distancia de retorno;} 
VERSIÓN 3, CON DOS SENSORES, SENSOR DE DIRECCIÓN Arduino
Ahora con dos sensores de distancia
 // código reordenado por Javier Muñoz 10/11/2016 pregúntame a [email protected]#include  #define ARDUINO_RX 5 // debe conectarse a TX del Serial MP3 Player module # define ARDUINO_TX 6 // conecta a RX del módulo # define trigPin 13 // para el PRIMER módulo de distancia #define echoPin 12 #define trigPin2 10 // para el SEGUNDO módulo de distancia #define echoPin2 9 # define trigPin 13 // para el módulo de distancia # define echoPin 12SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // inicie el protocolo serial, dígale a myserial qué pines son TX y RX ////////////////////// //////////////////////////////////////////////////// //////////////// todos los comandos necesarios en la hoja de datos (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // El reproductor MP3 entiende las órdenes en una cadena de 8 int // 0X7E FF 06 comando 00 00 00 EF; (si comando =01 siguiente orden de canción) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // SE REQUIEREN DATOS(número de canción) #define VOLUME_UP_ONE 0X04 # define VOLUME_DOWN_ONE 0X05 # define CMD_SET_VOLUME 0X06 // SE REQUIEREN DATOS (número de volumen de 0 a 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_WITHVOLUME 06 // Se necesitan datos 22 00 xx yy EF; (xx volumen) (yy número de canción) #define CMD_SEL_DEV 0X09 // SELECCIONE EL DISPOSITIVO DE ALMACENAMIENTO, SE REQUIEREN DATOS #define DEV_TF 0X02 // HOLA, YO SOY LOS DATOS REQUERIDOS #define SLEEP_MODE_START 0XAK_EMODEX define CMD_RESET 0X0C // CHIP RESET # define CMD_PLAY 0X0D // RESUME PLAYBACK # define CMD_PAUSE 0X0E // PLAYBACK IS PAUSED # define CMD_PLAY_WITHFOLDER 0X0F // SE NECESITAN DATOS, 0x7E 06 0F 00 01 02 EF; (reproduce la canción con el directorio 01 \ 002xxxxxx.mp3 # define STOP_PLAY 0X16 # define PLAY_FOLDER 0X17 // se necesitan datos 0x7E 06 17 00 01 XX EF; (reproducir la carpeta 01) (valor xx no nos importa) #define SET_CYCLEPLAY 0X19 // se necesitan datos 00 start; 01 cerrar # definir SET_DAC 0X17 // se necesitan datos 00 iniciar SALIDA DAC; 01 DAC sin salida //////////////////////////////// //////////////////////////////////////////////////// //// int firstTime =0; // necesitamos declarar firstTime fuera del bucle long Distance, auxDistance, gap =0; long Distance2, auxDistance2, gap2 =0; void setup () {Serial.begin (9600); / / Inicie nuestras comunicaciones en serie para el monitor en serie en nuestro pcmySerial.begin (9600); // Inicie nuestras comunicaciones en serie para el MP3delay (500); // Espere que la inicialización del chip se complete sendCommand (CMD_SEL_DEV, DEV_TF); // seleccione la tarjeta TF delay (200); // espera 200mspinMode (trigPin, OUTPUT); pinMode (echoPin, ENTRADA); pinMode (trigPin2, SALIDA); pinMode (echoPin2, ENTRADA); } void loop () {Distance =meterDistance (trigPin, echoPin); // medir la distancia1 y storeDistance2 =meterDistance (trigPin2, echoPin2); // medir la distancia2 y storegap =abs (Distance-auxDistance); // calcular la diferencia entre ahora y última lecturagap2 =abs (Distance2-auxDistance2); // calcula la diferencia entre la lectura actual y la última si (firstTime ==0) {// necesaria para la estabilidad thingsauxDistance =Distancia; auxDistance2 =Distancia2; gap =0; gap2 =0; / / lo hace solo la primera vez después de reproducir una canción para evitar el primer bucle malfuntcionfirstTime ++; delay (2000);} if (gap>
 20 y gap2 <20) {// si la variación de distancia es 20cmsendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // reproduce la primera canción de la segunda carpeta firstTime =0; // evita errores !! no nos gustan los erroresSerial.println ("MOVIMIENTO DERECHO DETECTADO"); delay (2000); } if (gap2> 20 y gap <20) {// si la variación de distancia es 20cmsendCommand (CMD_PLAY_WITHFOLDER, 0X0202); // reproducir la segunda canción de la segunda carpeta firstTime =0; // evitar errores !! no nos gustan los erroresSerial. println ("MOVIMIENTO IZQUIERDO DETECTADO"); retraso (2000); } Serial.println ("\\\\\\\\\\\\\\\\\\\\\"); // debuggggggSerial.print ("Nueva distancia:"); // debuggggggSerial.print ( Distancia); Serial.print ("Distancia anterior:"); Serial.print (auxDistance); Serial.print ("GAP"); Serial.println (espacio); Serial.print ("New Distace2:"); // debuggggggSerial.print (Distancia); Serial.print ("Antigua Distancia2:"); Serial.print (auxDistance); Serial.print ("GAP2"); Serial.println (espacio); Serial.println ("\\\\ \\\\\\\\\\\\\\\\\ "); // debuggggggdelay (300); auxDistance =Distancia; // almacena el valor de if () en el siguiente bucleuxDistance2 =Distance2; // almacena el valor de if () en el siguiente bucle} void sendCommand (int8_t command, int16_t dat) {if (command ==CMD_PLAY_WITHFOLDER o comando ==CMD_PLAY_WITHVOLUME) {Serial.print ("REPRODUCIR CANCIÓN, MUEVE LIGERAMENTE LA CABEZA PARA OBTENER UN GRAN EFECTO");} delay (20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versión Send_buf [2] =0x06; // el número de bytes del comando sin byte inicial y byte final Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sin comentarios, 0x01 =comentarios Send_buf [5] =(int8_t) (dat>> 8); // datah Send_buf [6] =(int8_t) (dat); // datal Send_buf [7] =0xef; // byte final para (uint8_t i =0; i <8; i ++) // {mySerial.write (Send_buf [i]); // enviar bit a serial mp3} Serial.println ();} long measureDistance (int trigger , int echo) {larga duración, distancia; digitalWrite (disparador, BAJO); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (disparador, ALTO); delayMicroseconds (10); digitalWrite (disparador, BAJO); duración =pulseIn (eco, ALTO); distancia =(duración / 2) / 29.1; // Serial.println ("distancia:"); // Serial.println (distancia); distancia de retorno;} 

Esquemas

SOLO UN SENSOR DE DISTANCIA DOS SENSORES DE DISTANCIA, solo agregue otro en los pines 10,9

Proceso de manufactura

  1. Creación de una red de sensores inalámbricos en su hogar
  2. Monitoreo de CO2 con sensor K30
  3. ¿Qué tan alto eres?
  4. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  5. Reproducir audio en Arduino
  6. Arduino - Reproductor de MP3 basado en la web
  7. Torre de sensores de nubes Arduino
  8. Pistola de agua con sensor de movimiento
  9. Arduino - Enviar temperatura a la web a través de serie
  10. Mini radar con Arduino
  11. Luz controlada por toque usando Arduino