Reproductor de MP3 Arduino + sensor de distancia =DIVERSIÓN
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 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,9Proceso de manufactura
- Creación de una red de sensores inalámbricos en su hogar
- Monitoreo de CO2 con sensor K30
- ¿Qué tan alto eres?
- Sensor capacitivo de huellas dactilares con Arduino o ESP8266
- Reproducir audio en Arduino
- Arduino - Reproductor de MP3 basado en la web
- Torre de sensores de nubes Arduino
- Pistola de agua con sensor de movimiento
- Arduino - Enviar temperatura a la web a través de serie
- Mini radar con Arduino
- Luz controlada por toque usando Arduino