Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Leitor de MP3 Arduino + sensor de distância =DIVERSÃO

Componentes e suprimentos

Arduino UNO
× 1
Leitor de mp3 serial Arduino da catalex
Você também precisa de um cartão SD e de um soquete de cartão SD (grande a pequeno) para o pc
× 1
Sensor ultrassônico - HC-SR04 (genérico)
× 2
algum alto-falante com entrada de entrada de mp3
× 1

Sobre este projeto





Como usar o reprodutor de MP3 serial da CATALEX


Meu tutorial anterior sobre isso, apenas uma biblioteca necessária ( #include ), e alguma função fácil já explicada no tutorial anterior:
  void sendCommand (int8_t command, int16_t dat) {if (command ==CMD_PLAY_WITHFOLDER or command ==CMD_PLAY_WITHVOLUME) {Serial.print ("PLAYING SONG, LEVE MOVE SUA CABEÇA PARA GRANDE EFEITO");} delay ( 20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versão Send_buf [2] =0x06; // o número de bytes do comando sem iniciar o byte e finalizar o byte Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sem feedback, 0x01 =feedback 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 para mp3 serial} Serial.println (); }  





Como usar a faixa ultrassônica HC-SR04


Meu tutorial anterior sobre isso, nenhuma biblioteca necessária, fácil de usar de qualquer maneira. Acabei de pegar meu post anterior hc-sr04 e colocá-lo nesta função:
  long measureDistance () {longa duração, distância; digitalWrite (trigPin, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (trigPin, HIGH); atrasoMicrosegundos (10); digitalWrite (trigPin, LOW); duração =pulseIn (echoPin, HIGH); distância =(duração / 2) / 29,1; Serial.println ("distância:"); Serial.println (distância); distância de retorno; // retorna a distância em cm}  





Como usar os dois Versão 1:acionador de distância mp3 simples


Primeiro instale a biblioteca se ainda não a tiver ().

Nesta versão do código, se algo ficar mais próximo do que 50 cm, ele aciona o áudio mp3. Eu usei para assustar meus colegas de quarto com um clipe muito alto de "filho da puta surpresa".

Nota: .ino completo o código está nos anexos do projeto abaixo.
  void loop () {if (measureDistance () <50) {sendCommand (CMD_PLAY_WITHFOLDER, 0X0203); // tocar a terceira música da segunda pasta delay (1000); // esperar para evitar erros} atraso (300); }  





Como usar a versão 2 e o gatilho de distância mp3 Disturbance


Esta versão não se preocupa com a distância, apenas detecta diferenças entre as leituras. Se disparar repentinamente por erro, coloque um valor mais alto em if (gap> 20) {....... precisamos declarar novas variáveis ​​fora do loop. Eu fiz isso no início do código.
  int firstTime =0; // precisamos declarar firstTime fora do loop long Distance, auxDistance, gap =0; void loop () {Distance =measureDistance (trigPin, echoPin); // medir a distância e armazenar gap =abs (Distance-auxDistance); // calcular a diferença entre agora e a última leitura if (firstTime ==0) {// necessário para coisas de estabilidade auxDistance =Distance; lacuna =0; // faz isso apenas na primeira vez após tocar uma música para evitar malfuntcion do primeiro loop firstTime ++; atraso (1000); } if (gap>
 20) {// se a variação da distância for 20 cm sendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // tocar a primeira música da segunda pasta firstTime =0; // evitar erros !! não gostamos de erros delay (2000); } Serial.print ("Novo Distace:"); // debugggggg Serial.print (Distância); Serial.print ("Distância Antiga:"); Serial.print (auxDistance); Serial.println (lacuna); atraso (300); auxDistance =Distance; // armazena o valor de if () no próximo loop}  





Como usar os dois Versão 3:dois sensores de distância


Com dois sensores de distância você pode realmente adivinhar a direção do movimento então eu fiz um programa que diz " olá "ou" tchau "dependendo da direção do movimento da pessoa.
  • Primeiro, definimos outros dois pinos DIGITAIS para controlar o segundo HC-SR04:
  #define trigPin 13 // para o PRIMEIRO módulo de distância #define echoPin 12 #define trigPin2 10 // para o SEGUNDO módulo de distância #define echoPin2 9  
  • Novas variáveis! Sim!
  longa distância, auxDistance, gap =0; Long Distance2, auxDistance2, gap2 =0; // novas variáveis ​​ 
  • No setup () adicionamos nossa nova declaração de pinos.
  pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT);  
  • Mudamos o measureDistance () função, agora a função lê os pinos dos argumentos.
  distância medida longa (disparador interno, eco interno) {duração longa, distância; digitalWrite (disparador, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (gatilho, HIGH); atrasoMicrosegundos (10); digitalWrite (disparador, LOW); duração =pulseIn (eco, HIGH); distância =(duração / 2) / 29,1; Serial.println ("distância:"); Serial.println (distância); distância de retorno; }  
  • Em nosso loop ():
  void loop () {Distance =measureDistance (trigPin, echoPin); // medir distance1 e armazenar Distance2 =measureDistance (trigPin2, echoPin2); // medir distance2 e armazenar gap =abs (Distance-auxDistance); // calcula a diferença entre agora e a última leitura gap2 =abs (Distance2-auxDistance2); // calcula a diferença entre agora e a última leitura if (firstTime ==0) {// necessário para as coisas de estabilidade auxDistance =Distance; auxDistance2 =Distance2; lacuna =0; gap2 =0; // faz isso apenas na primeira vez após tocar uma música para evitar malfuntcion do primeiro loop firstTime ++; atraso (2000); } if (gap>
 20 e gap2 <20) {// se a variação da distância for 20 cm sendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // tocar a primeira música da segunda pasta firstTime =0; // evitar erros !! não gostamos de erros Serial.println ("MOVIMENTO DIREITO DETECTADO"); atraso (2000); } if (gap2> 20 e gap <20) {// se a variação da distância for 20 cm sendCommand (CMD_PLAY_WITHFOLDER, 0X0202); // tocar a segunda música da segunda pasta firstTime =0; // evitar erros !! não gostamos de erros Serial.println ("MOVIMENTO ESQUERDO DETECTADO"); atraso (2000); } Serial.println ("\\\\\\\\\\\\\\\\\\\\\\\"); // debugggggg Serial.print ("Novo Distace:"); // debugggggg Serial. imprimir (distância); Serial.print ("Distância Antiga:"); Serial.print (auxDistance); Serial.print ("GAP"); Serial.println (lacuna); Serial.print ("Novo Distace2:"); // debugggggg Serial.print (Distância); Serial.print ("Old Distance2:"); Serial.print (auxDistance); Serial.print ("GAP2"); Serial.println (lacuna); Serial.println ("\\\\\\\\\\\\\\\\\\\\\\\"); // debugggggg delay (300); auxDistance =Distance; // armazena o valor para if () no próximo loop auxDistance2 =Distance2; // armazena o valor para if () no próximo loop} Disturbance2 =0; left =0; right =0; delay (1000); // espere para evitar erros} delay (300); auxDistance =Distance; // armazena o valor para if () no próximo loopauxDistance2 =Distance2; // armazena o valor para if () no próximo loop}  

Feliz hackeamento, pessoal!

Código

  • Versão 1, acionador de distância mp3 simples
  • Versão 2, acionador de distância mp3 Disturbance
  • VERSÃO 3, COM DOIS SENSORES, SENSOR DE DIREÇÃO
Versão 1, acionador de distância mp3 simples Arduino
Nesta versão do código, se algo ficar mais próximo do que 50 cm, ele aciona o áudio mp3. Usei-o para assustar meus colegas de quarto com um clipe muito alto "filho da puta surpresa".
 // código reorganizado por Javier Muñoz 11/10/2016 pergunte-me em [email protected]#include  #define ARDUINO_RX 5 // deve se conectar ao TX do módulo Serial MP3 Player # define ARDUINO_TX 6 // conectar ao RX do módulo # define trigPin 13 // para o módulo de distância # define echoPin 12SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // init o protocolo serial, diga ao myserial quais pinos são TX e RX //////////////////////////////////////// ////////////////////////////////////////////////todos comandos necessários na folha de dados (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // O MP3 player entende os pedidos em uma string de 8 int // 0X7E FF 06 comando 00 00 00 EF; (se command =01 próximo fim canção) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // dados são necessários (número de canção) #define VOLUME_UP_ONE 0x04 # define VOLUME_DOWN_ONE 0x05 # define CMD_SET_VOLU ME 0X06 // DADOS SÃO NECESSÁRIOS (número de volume de 0 a 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_WITHVOLUME 0X22 // dados são necessários 0x7E 06 22 00 xx yy EF; (xx volume) (yy número de música ) #define CMD_SEL_DEV 0x09 // SELECIONAR DISPOSITIVO DE ARMAZENAMENTO, de dados é necessária #define DEV_TF 0X02 // OLÁ, IM os dados necessários #define SLEEP_MODE_START 0x0A # definem SLEEP_MODE_WAKEUP 0x0B # define CMD_RESET 0x0C // reset chip # define CMD_PLAY 0X0D // retomar a reprodução #define CMD_PAUSE 0X0E // PLAYBACK ESTÁ PAUSADA # define CMD_PLAY_WITHFOLDER 0X0F // DADOS SÃO NECESSÁRIOS, 0x7E 06 0F 00 01 02 EF; (toca a música com o diretório \ 01 \ 002xxxxxx.mp3 # define STOP_PLAY 0X16 # define PLAY_FOLDER 0X17 // os dados são necessários 0x7E 06 17 00 01 XX EF; (reproduz a pasta 01) (valor xx, não nos importamos) #define SET_CYCLEPLAY 0X19 // os dados são necessários 00 start; 01 close # define SET_DAC 0X17 // dados são necessários 00 start DAC OUTPUT; 01 DAC sem saída //////////////////////////////// //////////////////////////////////////////////////////// //// void setup () {Serial.begin (9600); // Iniciar nossas comunicações seriais para monitor serial em nosso pcmySerial.begin (9600); // Iniciar nossas comunicações seriais para o MP3delay (500); // Aguarde a inicialização do chip está completa sendCommand (CMD_SEL_DEV, DEV_TF); // selecione o atraso do cartão TF (200); // aguarde 200mspinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT);} void loop () {if (measureDistance ( trigPin, echoPin) <50) {sendCommand (CMD_PLAY_WITHFOLDER, 0X0203); // reproduzir a terceira música da segunda pastadelay (1000); // esperar para evitar erros} delay (300);} void sendCommand (comando int8_t, int16_t dat ) {atraso (20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versão Send_buf [2] =0x06; // o número de bytes do comando sem iniciar o byte e finalizar o byte Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sem feedback, 0x01 =feedback 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 para serial mp3 Serial.print (Send_buf [i], HEX); / / enviar bit para monitor serial no pc} Serial.println ();} long measureDistance (int trigger, int echo) {long duration, distance; digitalWrite (disparador, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (gatilho, HIGH); atrasoMicrosegundos (10); digitalWrite (disparador, LOW); duração =pulseIn (eco, HIGH); distância =(duração / 2) / 29,1; Serial.println ("distância:"); Serial.println (distância); distância de retorno;} 
Versão 2, acionador de distância mp3 Disturbance Arduino
Esta versão não se preocupa com a distância, apenas detecta diferenças entre as leituras.
 // código reorganizado por Javier Muñoz 11/10/2016 pergunte-me em [email protected]#include  #define ARDUINO_RX 5 // deve se conectar ao TX do módulo Serial MP3 Player # define ARDUINO_TX 6 // conectar ao RX do módulo # define trigPin 13 // para o módulo de distância # define echoPin 12SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // init o protocolo serial, diga ao myserial quais pinos são TX e RX ///////////////////////////////////////////// ////////////////////////////////////////////////////// todos os comandos necessários em a folha de dados (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // O tocador de MP3 entende os pedidos em uma string de 8 int // 0X7E FF 06 comando 00 00 00 EF; (se comando =01 próxima ordem de música) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // DADOS SÃO NECESSÁRIOS (número de música) #define VOLUME_UP_ONE 0X04 # define VOLUME_DOWN_ONE 0X05 # define CMD _SET_VOLUME 0X06 // DADOS SÃO NECESSÁRIOS (número de volume de 0 a 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_WITHVOLUME 0X22 // dados são necessários 0x7E 06 22 00 xx yy EF; (xx volume) (yy número de música ) #define CMD_SEL_DEV 0x09 // SELECIONAR DISPOSITIVO DE ARMAZENAMENTO, de dados é necessária #define DEV_TF 0X02 // OLÁ, IM os dados necessários #define SLEEP_MODE_START 0x0A # definem SLEEP_MODE_WAKEUP 0x0B # define CMD_RESET 0x0C // reset chip # define CMD_PLAY 0X0D // retomar a reprodução #define CMD_PAUSE 0X0E // PLAYBACK ESTÁ PAUSADA # define CMD_PLAY_WITHFOLDER 0X0F // DADOS SÃO NECESSÁRIOS, 0x7E 06 0F 00 01 02 EF; (toca a música com o diretório \ 01 \ 002xxxxxx.mp3 # define STOP_PLAY 0X16 # define PLAY_FOLDER 0X17 // os dados são necessários 0x7E 06 17 00 01 XX EF; (reproduz a pasta 01) (valor xx, não nos importamos) #define SET_CYCLEPLAY 0X19 // os dados são necessários 00 start; 01 close # define SET_DAC 0X17 // dados são necessários 00 start DAC OUTPUT; 01 DAC sem saída //////////////////////////////// //////////////////////////////////////////////////////// //// int firstTime =0; // precisamos declarar firstTime fora do loop long Distance, auxDistance, gap =0; void setup () {Serial.begin (9600); // Iniciar nossas comunicações seriais para o monitor serial em our pcmySerial.begin (9600); // Iniciar nosso coms Serial para o MP3delay (500); // Esperar a inicialização do chip está completa sendCommand (CMD_SEL_DEV, DEV_TF); // selecionar o atraso do cartão TF (200); // aguardar 200mspinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT);} void loop () {Distance =measureDistance (trigPin, echoPin); // medir a distância e storegap =abs (Distance-auxDistance); // calcular a diferença entre agora and last readingif (firstTime ==0) {// necessário para estabilidade thingsauxDistance =Distance; gap =0; // faz isso apenas na primeira vez após tocar uma música para evitar o primeiro loop malfuntcionfirstTime ++; delay (1000);} if (gap>
 20) {// se a variação da distância for 20cmsendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // tocar a primeira música da segunda pasta firstTime =0; // evitar erros !! nós não gostamos de errorsdelay (2000); } Serial.print ("New Distace:"); // debuggggggSerial.print (Distance); Serial.print ("Old Distance:"); Serial.print (auxDistance); Serial.println (gap); delay (300); auxDistance =Distance; // armazena o valor de if () no próximo loop} void sendCommand (comando int8_t, int16_t dat) {if (comando ==CMD_PLAY_WITHFOLDER ou comando ==CMD_PLAY_WITHVOLUME) {Serial.print ("PLAYING SONG, MOVE LEVE SUA CABEÇA PARA OBTER GRANDE EFEITO ");} atraso (20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versão Send_buf [2] =0x06; // o número de bytes do comando sem iniciar o byte e finalizar o byte Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sem feedback, 0x01 =feedback 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 para serial mp3} Serial.println ();} long measureDistance (int trigger , int echo) {longa duração, distância; digitalWrite (disparador, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (gatilho, HIGH); atrasoMicrosegundos (10); digitalWrite (disparador, LOW); duração =pulseIn (eco, HIGH); distância =(duração / 2) / 29,1; // Serial.println ("distância:"); // Serial.println (distância); distância de retorno;} 
VERSÃO 3, COM DOIS SENSORES, SENSOR DE DIREÇÃO Arduino
Agora com dois sensores de distância
 // código reorganizado por Javier Muñoz 10/11/2016 pergunte-me em [email protected]#include  #define ARDUINO_RX 5 // deve se conectar ao TX do Serial MP3 Player módulo # define ARDUINO_TX 6 // conecta ao RX do módulo # define trigPin 13 // para o PRIMEIRO módulo de distância #define echoPin 12 # define trigPin2 10 // para o SEGUNDO módulo de distância #define echoPin2 9 # define trigPin 13 // para o módulo de distância # define echoPin 12SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // inicie o protocolo serial, diga ao myserial quais pinos são TX e RX //////////////////// //////////////////////////////////////////////////////// //////////////// todos os comandos necessários na folha de dados (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // O tocador de MP3 entende ordens em uma string de 8 int // 0X7E FF 06 comando 00 00 00 EF; (se o comando =01 próxima ordem de música) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // DADOS SÃO NECESSÁRIOS(número da música) #define VOLUME_UP_ONE 0X04 # define VOLUME_DOWN_ONE 0X05 # define CMD_SET_VOLUME 0X06 // DADOS SÃO NECESSÁRIOS (número de volume de 0 a 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_VOLUME 0X06 // DADOS SÃO NECESSÁRIOS (número de volume de 0 até 30 (0x1E)) # define SET_DAC 0X17 # define CMD_PLAY_WITHVOLUME 06 0xX22 // dados são necessários 0 0xX22 // 22 00 xx yy EF; (xx volume) (yy número da música) #define CMD_SEL_DEV 0X09 // SELECIONE O DISPOSITIVO DE ARMAZENAMENTO, DADOS SÃO NECESSÁRIOS #define DEV_TF 0X02 // OLÁ, IM OS DADOS NECESSÁRIOS #define SLEEP_MODE_START 0X0UPA # 0X0UPA define CMD_RESET 0X0C // CHIP RESET # define CMD_PLAY 0X0D // RETOMA A REPRODUÇÃO # define CMD_PAUSE 0X0E // A REPRODUÇÃO ESTÁ PAUSADA # define CMD_PLAY_WITHFOLDER 0X0F // DADOS SÃO NECESSÁRIOS, 0x7E 06 0F 00 01 02 EF; (reproduz a música com o diretório \ 01 \ 002xxxxxx.mp3 # define STOP_PLAY 0X16 # define PLAY_FOLDER 0X17 // os dados são necessários 0x7E 06 17 00 01 XX EF; (reproduz a pasta 01) (valor xx não nos importamos) #define SET_CYCLEPLAY 0X19 // os dados são necessários 00 start; 01 close # define SET_DAC 0X17 // dados são necessários 00 start DAC OUTPUT; 01 DAC sem saída //////////////////////////////// //////////////////////////////////////////////////////// //// int firstTime =0; // precisamos declarar firstTime fora do loop long Distance, auxDistance, gap =0; long Distance2, auxDistance2, gap2 =0; void setup () {Serial.begin (9600); / / Inicie nossas comunicações seriais para monitor serial em nosso pcmySerial.begin (9600); // Iniciar nossas comunicações seriais para o MP3delay (500); // A inicialização do chip de espera está completa sendCommand (CMD_SEL_DEV, DEV_TF); // selecione o cartão TF delay (200); // espera por 200mspinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT); } void loop () {Distance =measureDistance (trigPin, echoPin); // medir distance1 e storeDistance2 =measureDistance (trigPin2, echoPin2); // medir distance2 e storegap =abs (Distance-auxDistance); // calcular a diferença entre agora e última leituragap2 =abs (Distance2-auxDistance2); // calcular a diferença entre agora e a última leituraif (firstTime ==0) {// necessário para a estabilidade thingsauxDistance =Distance; auxDistance2 =Distance2; gap =0; gap2 =0; / / faz isso apenas na primeira vez após tocar uma música para evitar o primeiro loop malfuntcionfirstTime ++; delay (2000);} if (gap>
 20 e gap2 <20) {// se a variação da distância for 20cmsendCommand (CMD_PLAY_WITHFOLDER, 0X0201); // tocar a primeira música da segunda pasta firstTime =0; // evitar erros !! não gostamos de errorsSerial.println ("RIGHT MOVEMENT DETECTED"); delay (2000); } if (gap2> 20 e gap <20) {// se a variação da distância for 20cmsendCommand (CMD_PLAY_WITHFOLDER, 0X0202); // tocar a segunda música da segunda pasta firstTime =0; // evitar erros !! não gostamos de errorsSerial. println ("MOVIMENTO À ESQUERDA DETECTADO"); atraso (2000); } Serial.println ("\\\\\\\\\\\\\\\\\\\\\\\"); // debuggggggSerial.print ("Novo Distace:"); // debuggggggSerial.print ( Distance); Serial.print ("Old Distance:"); Serial.print (auxDistance); Serial.print ("GAP"); Serial.println (gap); Serial.print ("New Distace2:"); // debuggggggSerial.print (Distância); Serial.print ("Old Distance2:"); Serial.print (auxDistance); Serial.print ("GAP2"); Serial.println (lacuna); Serial.println ("\\\\ \\\\\\\\\\\\\\\\\\\\ "); // debuggggggdelay (300); auxDistance =Distance; // armazena o valor para if () no próximo loopauxDistance2 =Distance2; // armazena o valor para if () no próximo loop} void sendCommand (comando int8_t, int16_t dat) {if (comando ==CMD_PLAY_WITHFOLDER ou comando ==CMD_PLAY_WITHVOLUME) {Serial.print ("REPRODUZINDO A MÚSICA, MOVE LEVE SUA CABEÇA PARA UM GRANDE EFEITO");} atraso (20); Send_buf [0] =0x7e; // byte inicial Send_buf [1] =0xff; // versão Send_buf [2] =0x06; // o número de bytes do comando sem iniciar o byte e finalizar o byte Send_buf [3] =comando; // Send_buf [4] =0x00; // 0x00 =sem feedback, 0x01 =feedback 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 para serial mp3} Serial.println ();} long measureDistance (int trigger , int echo) {longa duração, distância; digitalWrite (disparador, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (gatilho, HIGH); atrasoMicrosegundos (10); digitalWrite (disparador, LOW); duração =pulseIn (eco, HIGH); distância =(duração / 2) / 29,1; // Serial.println ("distância:"); // Serial.println (distância); distância de retorno;} 

Esquemas

APENAS UM SENSOR DE DISTÂNCIA DOIS SENSORES DE DISTÂNCIA, basta adicionar outro nos pinos 10,9

Processo de manufatura

  1. Construindo uma rede de sensores sem fio em sua casa
  2. Monitoramento de CO2 com Sensor K30
  3. Qual é sua altura?
  4. Sensor capacitivo de impressão digital com um Arduino ou ESP8266
  5. Tocar áudio no Arduino
  6. Arduino - MP3 Player baseado na web
  7. Arduino Cloud Sensor Tower
  8. Pistola de água com sensor de movimento
  9. Arduino - Enviar temperatura para a Web via serial
  10. Mini Radar com Arduino