{"id":5314,"date":"2020-10-21T10:08:01","date_gmt":"2020-10-21T13:08:01","guid":{"rendered":"https:\/\/www.usinainfo.com.br\/blog\/?p=5314"},"modified":"2020-10-21T14:42:04","modified_gmt":"2020-10-21T17:42:04","slug":"sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato","status":"publish","type":"post","link":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/","title":{"rendered":"Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato"},"content":{"rendered":"<p>Voc\u00ea j\u00e1 pensou em criar uma caixa de som utilizando o df player mini com Arduino e controlada atrav\u00e9s de gestos? Se j\u00e1 pensou, acredite, pois \u00e9 poss\u00edvel! Nesse artigo voc\u00ea vai aprender a criar sua caixa musical controlada pelo <strong>Sensor de Gestos APDS9960<\/strong> e montar o seu projeto com o DFPlayer Mini.<\/p>\n<p>Em \u00e9poca de pandemia, como a que estamos passando, projetos que permitam acionar mecanismos sem toque est\u00e3o em alta, evitando toques f\u00edsicos desnecess\u00e1rios. J\u00e1 pensou em controlar seu M\u00f3dulo MP3 Arduino somente por meio de gestos, passando m\u00fasicas, retornando ou mesmo fazendo ajustes de volume?<\/p>\n<div id=\"attachment_5644\" style=\"width: 553px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5644\" class=\"wp-image-5644\" title=\"Exemplo de Funcionamento do Sensor de Gestos APDS9960\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/sensor-de-gestos-e-cor-apds-9960.gif\" alt=\"Exemplo de Funcionamento do Sensor de Gestos APDS9960\" width=\"543\" height=\"310\" \/><p id=\"caption-attachment-5644\" class=\"wp-caption-text\"><em>Exemplo de Funcionamento do Sensor de Gestos APDS9960<\/em><\/p><\/div>\n<p>Esse projeto permite a voc\u00ea controlar suas m\u00fasicas atrav\u00e9s de 4 tipos de gestos: movimento para esquerda, direita, cima e baixo. Cada gesto realizar\u00e1 um controle diferente na execu\u00e7\u00e3o musical.<\/p>\n<p style=\"text-align: left;\">Dessa forma, com esse artigo voc\u00ea aprender\u00e1 a utilizar o M\u00f3dulo MP3 DFPlayer Mini, configurar a comunica\u00e7\u00e3o com o sensor de gestos APDS9960 e ainda criar sua caixa musical com a uni\u00e3o dos v\u00e1rios dispositivos de MP3 e sensor de um modo r\u00e1pido e pr\u00e1tico.<\/p>\n<p>&nbsp;<\/p>\n<h2>Produtos Necess\u00e1rios para Desenvolver o Projeto com Sensor de Gestos APDS9960<\/h2>\n<p>Para garantir esses resultados voc\u00ea precisar\u00e1 dos seguintes elementos eletr\u00f4nicos na nossa loja:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/protoboard-e-jumpers\/protoboard-830-pontos-para-montagem-de-projetos-3733.html\" target=\"_blank\" rel=\"noopener noreferrer\">Protoboard;<\/a><\/li>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/protoboard-e-jumpers\/jumpers-para-protoboard-kit-com-65-conectores-macho-macho-1374.html\" target=\"_blank\" rel=\"noopener noreferrer\">Jumpers;<\/a><\/li>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/placas-arduino\/placa-nano-v3-compativel-arduino-3630.html\" target=\"_blank\" rel=\"noopener noreferrer\">Arduino Nano;<\/a><\/li>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/resistores\/resistor-330r-14w-kit-com-10-unidades-2977.html\" target=\"_blank\" rel=\"noopener noreferrer\">Resistor 330R;<\/a><\/li>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/mp3-arduino\/modulo-mp3-arduino-dfplayer-mini-5187.html\" target=\"_blank\" rel=\"noopener noreferrer\">M\u00f3dulo DFPlayer Mini;<\/a><\/li>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/outros-sensores-arduino\/sensor-de-gestos-e-cor-apds-9960-4983.html\" target=\"_blank\" rel=\"noopener noreferrer\">M\u00f3dulo sensor de gestos APDS9960;<\/a><\/li>\n<li><a href=\"https:\/\/www.usinainfo.com.br\/diversos\/mini-alto-falante-para-projetos-com-fios-2052.html\" target=\"_blank\" rel=\"noopener noreferrer\">Speaker.<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Esquem\u00e1tico do Projeto com\u00a0Sensor de Gestos APDS9960<\/h2>\n<p>A seguir, apresentaremos a estrutura do circuito eletr\u00f4nico do player de som controlado por gestos.<\/p>\n<div id=\"attachment_5616\" style=\"width: 623px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3.png\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5616\" class=\"wp-image-5616\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3.png\" alt=\"Circuito Eletr\u00f4nico da caixa de som MP3 controlada por gestos\" width=\"613\" height=\"368\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3.png 1773w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3-300x180.png 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3-1024x615.png 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3-768x461.png 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/SomMP3-1536x923.png 1536w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/a><p id=\"caption-attachment-5616\" class=\"wp-caption-text\"><em>Figura 1 &#8211; Circuito Eletr\u00f4nico da caixa de som MP3 controlada por gestos.<\/em><\/p><\/div>\n<p>&nbsp;<\/p>\n<p><em><strong>Esse circuito \u00e9 dividido em tr\u00eas partes importantes:<\/strong> o sensor de gestos, o Arduino NANO e o DFPlayer Mini. Cada dispositivo ser\u00e1 fundamental na aplica\u00e7\u00e3o.<\/em><\/p>\n<p>O Arduino Nano \u00e9 o respons\u00e1vel por realizar a leitura e processamento do gesto realizado com o sensor APDS9960. Ap\u00f3s o processamento e reconhecimento do gesto, o Arduino enviar\u00e1 um comando para o DFPlayer Mini com Arduino. O Arduino poder\u00e1 enviar 4 comandos poss\u00edveis: avan\u00e7ar m\u00fasica, retroceder m\u00fasica, aumentar ou baixar o volume.<\/p>\n<p>O circuito da protoboard \u00e9 apresentado a seguir.<\/p>\n<div id=\"attachment_5633\" style=\"width: 652px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-scaled.jpg\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5633\" class=\"wp-image-5633\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-scaled.jpg\" alt=\"ircuito do Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato\" width=\"642\" height=\"482\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-scaled.jpg 2560w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-1536x1152.jpg 1536w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-2048x1536.jpg 2048w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina-320x240.jpg 320w\" sizes=\"auto, (max-width: 642px) 100vw, 642px\" \/><\/a><p id=\"caption-attachment-5633\" class=\"wp-caption-text\">Figura 2 &#8211; Circuito do Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato<\/p><\/div>\n<p>Agora, vou te apresentar a programa\u00e7\u00e3o completa para desenvolver esse projeto.<\/p>\n<p>&nbsp;<\/p>\n<h2>Desenvolvimento e discuss\u00e3o da L\u00f3gica de Programa\u00e7\u00e3o do Projeto Sensor de Gestos APDS9960<\/h2>\n<p>A l\u00f3gica do projeto \u00e9 apresentada abaixo e possui um funcionamento muito simples. Primeiramente, foram declaradas as bibliotecas de uso dos dispositivos e funcionalidades utilizadas: comunica\u00e7\u00e3o serial, df player mini com arduino e Sensor de Gestos APDS9960, conforme apresentadas nas linhas 1 a 3.<\/p>\n<pre class=\"lang:arduino decode:true\">#include \"SoftwareSerial.h\"\r\n#include \"DFRobotDFPlayerMini.h\"\r\n#include \"Adafruit_APDS9960.h\"\r\n\r\nAdafruit_APDS9960 apds;\r\nDFRobotDFPlayerMini myDFPlayer;\r\n\r\nSoftwareSerial mySoftwareSerial(10, 11); \/\/ RX, TX\r\n\r\nchar command;\r\nint pausa = 0;\r\n\r\nvoid setup() \r\n{\r\n  Serial.begin(9600); \/\/INICIALIZA A SERIAL\r\n\r\n  mySoftwareSerial.begin(9600);\r\n  \/\/Verifica se o modulo esta respondendo e se o\r\n  \/\/cartao SD foi encontrado\r\n  Serial.println();\r\n  Serial.println(F(\"DFRobot DFPlayer Mini\"));\r\n  Serial.println(F(\"Inicializando o Modulo DFPlayer MP3.\"));\r\n  \r\n  if (!myDFPlayer.begin(mySoftwareSerial))\r\n  {\r\n  Serial.println(F(\"Nao inicializado:\"));\r\n  Serial.println(F(\"1. Verifique as conex\u00f5es do DFPlayer Mini.\"));\r\n  Serial.println(F(\"2. Insira um SD Card.\"));\r\n  while (true);\r\n  }\r\n  \r\n  Serial.println();\r\n  Serial.println(F(\"Modulo DFPlayer Mini inicializado!\"));\r\n  \r\n  \/\/Definicoes iniciais\r\n  myDFPlayer.setTimeOut(500);\r\n  myDFPlayer.volume(20); \/\/Volume 5\r\n  myDFPlayer.EQ(0); \/\/Equalizacao normal\r\n  \r\n  if(!apds.begin())\r\n  { \/\/Se o sensor n\u00e3o for inicializado, faca\r\n    Serial.println(\"Falha ao inicializar o dispositivo. Verifique as conexoes!\"); \/\/Imprime o texto no monitor serial\r\n  }\r\n  else\r\n  {\r\n    Serial.println(\"Dispositivo inicializado!\"); \/\/IMPRIME O TEXTO NO MONITOR SERIAL\r\n  }\r\n\r\n  \/\/Habilita o modo de deteccao de gesto quando o sensor detectar algo proximo\r\n  apds.enableProximity(true);\r\n  apds.enableGesture(true);\r\n}\r\n\r\nvoid loop() \r\n{\r\n\r\n    uint8_t gesture = apds.readGesture(); \/\/Realiza a leitura do gesto\r\n\r\n          \/\/Aumenta o Volume\r\n          if(gesture == APDS9960_UP)\r\n          {\r\n          myDFPlayer.volumeUp();\r\n          Serial.print(\"Volume atual:\");\r\n          Serial.println(myDFPlayer.readVolume());\r\n          }\r\n          \r\n          \/\/Retorna para a musica anterior\r\n          if(gesture == APDS9960_LEFT)\r\n          {\r\n          myDFPlayer.previous();\r\n          Serial.println(\"Anterior:\");\r\n          Serial.print(\"Trilha atual:\");\r\n          Serial.println(myDFPlayer.readCurrentFileNumber()-1);\r\n          }\r\n\r\n          \/\/Avan\u00e7a para a proxima musica\r\n          if(gesture == APDS9960_RIGHT)\r\n          {\r\n          myDFPlayer.next();\r\n          Serial.println(\"Proxima:\");\r\n          Serial.print(\"Trilha atual:\");\r\n          Serial.println(myDFPlayer.readCurrentFileNumber()+1);\r\n          }\r\n          \r\n          \/\/Diminui volume\r\n          if(gesture == APDS9960_DOWN) \r\n          {\r\n          myDFPlayer.volumeDown();\r\n          Serial.print(\"Current Volume:\");\r\n          Serial.println(myDFPlayer.readVolume());\r\n          }\r\n\r\n}<\/pre>\n<p>Ap\u00f3s isso, foram criados os objetos <em>apds<\/em> e <em>myDFPlayer.\u00a0<\/em>Esses objetos ser\u00e3o utilizados para manipula\u00e7\u00e3o das fun\u00e7\u00f5es ao longo do c\u00f3digo.<\/p>\n<pre class=\"start-line:5 lang:c# decode:true \">Adafruit_APDS9960 apds;\r\nDFRobotDFPlayerMini myDFPlayer;<\/pre>\n<p>Depois da declara\u00e7\u00e3o dos objetos, configuramos os pinos para comunica\u00e7\u00e3o serial e declara\u00e7\u00e3o das vari\u00e1veis utilizadas.<\/p>\n<pre class=\"start-line:8 lang:c# decode:true \">SoftwareSerial mySoftwareSerial(10, 11); \/\/ RX, TX\r\n \r\nchar command;\r\nint pausa = 0;<\/pre>\n<p>Finalmente, entramos na fun\u00e7\u00e3o setup.<\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Configurando e inicializando os dispositivos &#8211; Fun\u00e7\u00e3o void setup<\/h2>\n<p>Nessa fun\u00e7\u00e3o faremos todas as configura\u00e7\u00f5es iniciais e que ser\u00e3o necess\u00e1rias para o funcionamento do nosso projeto.<\/p>\n<pre class=\"start-line:13 lang:c# decode:true\">void setup() \r\n{\r\n  Serial.begin(9600); \/\/INICIALIZA A SERIAL\r\n \r\n  mySoftwareSerial.begin(9600);\r\n  \/\/Verifica se o modulo esta respondendo e se o\r\n  \/\/cartao SD foi encontrado\r\n  Serial.println();\r\n  Serial.println(F(\"DFRobot DFPlayer Mini\"));\r\n  Serial.println(F(\"Inicializando o Modulo DFPlayer MP3.\"));\r\n  \r\n  if (!myDFPlayer.begin(mySoftwareSerial))\r\n  {\r\n  Serial.println(F(\"Nao inicializado\"));\r\n  Serial.println(F(\"1. Verifique as conex\u00f5es do DFPlayer Mini.\"));\r\n  Serial.println(F(\"2. Insira um SD Card.\"));\r\n  while (true);\r\n  }\r\n  \r\n  Serial.println();\r\n  Serial.println(F(\"Modulo DFPlayer Mini inicializado!\"));\r\n  \r\n  \/\/Definicoes iniciais\r\n  myDFPlayer.setTimeOut(500);\r\n  myDFPlayer.volume(20); \/\/Volume 5\r\n  myDFPlayer.EQ(0); \/\/Equalizacao normal\r\n  \r\n  if(!apds.begin())\r\n  { \/\/Se o sensor n\u00e3o for inicializado, faca\r\n    Serial.println(\"Falha ao inicializar o dispositivo. Verifique as conexoes!\"); \/\/Imprime o texto no monitor serial\r\n  }\r\n  else\r\n  {\r\n    Serial.println(\"Dispositivo inicializado!\"); \/\/IMPRIME O TEXTO NO MONITOR SERIAL\r\n  }\r\n \r\n  \/\/Habilita o modo de deteccao de gesto quando o sensor detectar algo proximo\r\n  apds.enableProximity(true);\r\n  apds.enableGesture(true);\r\n}<\/pre>\n<p>Primeiramente, inicializamos as comunica\u00e7\u00f5es seriais e enviamos a mensagem de verifica\u00e7\u00e3o de funcionamento do m\u00f3dulo DFPlayer Mini para o monitor serial. A por\u00e7\u00e3o de c\u00f3digo \u00e9 apresentada a seguir.<\/p>\n<pre class=\"start-line:15 lang:c# decode:true\">Serial.begin(9600); \/\/INICIALIZA A SERIAL\r\n \r\n  mySoftwareSerial.begin(9600);\r\n  \/\/Verifica se o modulo esta respondendo e se o\r\n  \/\/cartao SD foi encontrado\r\n  Serial.println();\r\n  Serial.println(F(\"DFRobot DFPlayer Mini\"));\r\n  Serial.println(F(\"Inicializando o Modulo DFPlayer MP3.\"));<\/pre>\n<p>Ap\u00f3s isso, realizamos a verifica\u00e7\u00e3o de inicializa\u00e7\u00e3o do m\u00f3dulo df player mini com arduino. Caso n\u00e3o seja inicializado corretamente, ele apresentar\u00e1 a mensagem &#8220;Nao inicializado&#8221; e apresentar\u00e1 outra mensagem para verificar as conex\u00f5es do m\u00f3dulo e reiniciar o df player mini com arduino.<\/p>\n<pre class=\"start-line:24 lang:c# decode:true\">if (!myDFPlayer.begin(mySoftwareSerial))\r\n  {\r\n  Serial.println(F(\"Nao inicializado:\"));\r\n  Serial.println(F(\"1. Verifique as conex\u00f5es do DFPlayer Mini.\"));\r\n  Serial.println(F(\"2. Insira um SD Card.\"));\r\n  while (true);\r\n  }<\/pre>\n<p>Caso esteja tudo correto, o m\u00f3dulo ser\u00e1 inicializado e apresentar\u00e1 a mensagem &#8220;Modulo DFPlayer Mini inicializado!&#8221;. Ap\u00f3s isso, o m\u00f3dulo ser\u00e1 configurado com volume igual a 5 e sistema com equaliza\u00e7\u00e3o normal.<\/p>\n<pre class=\"start-line:32 lang:c# decode:true \">Serial.println();\r\nSerial.println(F(\"Modulo DFPlayer Mini inicializado!\"));\r\n  \r\n\/\/Definicoes iniciais\r\nmyDFPlayer.setTimeOut(500);\r\nmyDFPlayer.volume(20); \/\/Volume 5\r\nmyDFPlayer.EQ(0); \/\/Equalizacao normal<\/pre>\n<p>Depois disso, temos a inicializa\u00e7\u00e3o do sensor de gestos APDS9960. A primeira condi\u00e7\u00e3o \u00e9 utilizada para verificar se o sensor foi inicializado corretamente. Caso ocorra algum problema, o fluxo de c\u00f3digo entrar\u00e1 na condi\u00e7\u00e3o e apresentar\u00e1 a mensagem &#8220;Falha ao iniciar o dispositivo. Verifique as conex\u00f5es!&#8221;. Caso contr\u00e1rio, ser\u00e1 apresentada a mensagem &#8220;Dispositivo inicializado!&#8221;.<\/p>\n<p>Por fim, temos a configura\u00e7\u00e3o de funcionamento do sensor de gestos quando ele detectar algo pr\u00f3ximo. A por\u00e7\u00e3o de c\u00f3digo \u00e9 apresentada a seguir.<\/p>\n<pre class=\"start-line:49 lang:c# decode:true \">  \/\/Habilita o modo de deteccao de gesto quando o sensor detectar algo proximo\r\n  apds.enableProximity(true);\r\n  apds.enableGesture(true);<\/pre>\n<p>Em seguida, entraremos na fun\u00e7\u00e3o void loop.<\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>A l\u00f3gica principal na fun\u00e7\u00e3o void loop<\/h2>\n<p>Nessa fun\u00e7\u00e3o ser\u00e1 implementado o processo de leitura do sensor de gestos. O sensor de gestos \u00e9 o m\u00f3dulo de cor roxa, que \u00e9 apresentado na figura abaixo.<\/p>\n<div id=\"attachment_5634\" style=\"width: 677px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-scaled.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5634\" class=\"wp-image-5634 \" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-scaled.jpg\" alt=\"sensor apds9960 e df player mini com arduino\" width=\"667\" height=\"500\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-scaled.jpg 2560w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-1536x1152.jpg 1536w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-2048x1536.jpg 2048w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/circuitousina2-320x240.jpg 320w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/a><p id=\"caption-attachment-5634\" class=\"wp-caption-text\">Figura 3 &#8211; Sensor de Gestos APDS9960.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>A seguir, temos o c\u00f3digo completo, que foi implementado na fun\u00e7\u00e3o void loop.<\/p>\n<pre class=\"start-line:54 lang:c# decode:true\">void loop() \r\n{\r\n \r\n    uint8_t gesture = apds.readGesture(); \/\/Realiza a leitura do gesto\r\n \r\n          \/\/Aumenta o Volume\r\n          if(gesture == APDS9960_UP)\r\n          {\r\n          myDFPlayer.volumeUp();\r\n          Serial.print(\"Volume atual:\");\r\n          Serial.println(myDFPlayer.readVolume());\r\n          }\r\n          \r\n          \/\/Retorna para a musica anterior\r\n          if(gesture == APDS9960_LEFT)\r\n          {\r\n          myDFPlayer.previous();\r\n          Serial.println(\"Anterior:\");\r\n          Serial.print(\"Trilha atual:\");\r\n          Serial.println(myDFPlayer.readCurrentFileNumber()-1);\r\n          }\r\n \r\n          \/\/Avan\u00e7a para a proxima musica\r\n          if(gesture == APDS9960_RIGHT)\r\n          {\r\n          myDFPlayer.next();\r\n          Serial.println(\"Proxima:\");\r\n          Serial.print(\"Current track:\");\r\n          Serial.println(myDFPlayer.readCurrentFileNumber()+1);\r\n          }\r\n          \r\n          \/\/Diminui volume\r\n          if(gesture == APDS9960_DOWN) \r\n          {\r\n          myDFPlayer.volumeDown();\r\n          Serial.print(\"Volume atual:\");\r\n          Serial.println(myDFPlayer.readVolume());\r\n          }\r\n \r\n}<\/pre>\n<p>A primeira coisa que voc\u00ea deve fazer na fun\u00e7\u00e3o void loop \u00e9 realizar a leitura do gesto realizado pelo usu\u00e1rio. De acordo com o gesto ser\u00e1 retornado um valor para a vari\u00e1vel <em>gesture<\/em>.<\/p>\n<pre class=\"start-line:57 lang:c# decode:true \">uint8_t gesture = apds.readGesture(); \/\/Realiza a leitura do gesto<\/pre>\n<p>Ap\u00f3s realizar a leitura voc\u00ea deve verificar qual foi o gesto realizado pelo seu usu\u00e1rio. Isso \u00e9 realizado atrav\u00e9s das 4 condi\u00e7\u00f5es de teste que foram implementadas no c\u00f3digo.<\/p>\n<p>A primeira condi\u00e7\u00e3o verifica se o gesto foi um movimento para cima. Caso seja verdade, o fluxo de c\u00f3digo entrar\u00e1 na condi\u00e7\u00e3o e aumentar\u00e1 o volume. A por\u00e7\u00e3o de c\u00f3digo \u00e9 apresentada abaixo.<\/p>\n<pre class=\"start-line:59 lang:c# decode:true\">          \/\/Aumenta o Volume\r\n          if(gesture == APDS9960_UP)\r\n          {\r\n          myDFPlayer.volumeUp();\r\n          Serial.print(\"Volume atual\");\r\n          Serial.println(myDFPlayer.readVolume());\r\n          }<\/pre>\n<p>A segunda condi\u00e7\u00e3o verifica se o gesto realizado foi um movimento para a esquerda. Caso seja verdadeiro, ser\u00e1 executada a seguinte por\u00e7\u00e3o de c\u00f3digo apresentada a seguir e o programa voltar\u00e1 para a faixa musical anterior.<\/p>\n<pre class=\"start-line:67 lang:c# decode:true\">          \/\/Retorna para a musica anterior\r\n          if(gesture == APDS9960_LEFT)\r\n          {\r\n          myDFPlayer.previous();\r\n          Serial.println(\"Anterior:\");\r\n          Serial.print(\"Trilha atual:\");\r\n          Serial.println(myDFPlayer.readCurrentFileNumber()-1);\r\n          }<\/pre>\n<p>Finalmente, temos as duas \u00faltimas condi\u00e7\u00f5es. Uma verificar\u00e1 se o gesto \u00e9 um movimento para a direita (avan\u00e7ar para a pr\u00f3xima trilha sonora)\u00a0 e a outra verificar\u00e1 se o movimento \u00e9 para baixo (Reduzir volume musical). A por\u00e7\u00e3o de c\u00f3digo \u00e9 apresentada a seguir.<\/p>\n<pre class=\"start-line:76 lang:c# decode:true\">\/\/Avan\u00e7a para a proxima musica\r\n          if(gesture == APDS9960_RIGHT)\r\n          {\r\n          myDFPlayer.next();\r\n          Serial.println(\"Proxima:\");\r\n          Serial.print(\"Trilha atual:\");\r\n          Serial.println(myDFPlayer.readCurrentFileNumber()+1);\r\n          }\r\n          \r\n          \/\/Diminui volume\r\n          if(gesture == APDS9960_DOWN) \r\n          {\r\n          myDFPlayer.volumeDown();\r\n          Serial.print(\"Volume atual:\");\r\n          Serial.println(myDFPlayer.readVolume());\r\n          }<\/pre>\n<p>Agora, voc\u00ea aprender\u00e1 o processo para armazenar os arquivos MP3 no seu SD Card.<\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Processo de armazenamento das m\u00fasicas no SD Card<\/h2>\n<p>O processo de armazenamento precisa seguir uma organiza\u00e7\u00e3o dos arquivos, para que as m\u00fasicas\/sons sejam executados normalmente. A primeira coisa que voc\u00ea deve fazer \u00e9 criar uma pasta e colocar cada m\u00fasica dentro dela.<\/p>\n<p>Em seguida, enumere as faixas da forma como est\u00e1 sendo apresentado na figura abaixo. Cada m\u00fasica deve ter um n\u00famero e deve iniciar a contagem a partir do valor 01.<\/p>\n<p>Dessa forma, sempre que o bot\u00e3o para avan\u00e7ar ou retroceder for pressionado, ser\u00e1 feito o avan\u00e7o ou retorno com base nos n\u00fameros das m\u00fasicas da pasta.<\/p>\n<div id=\"attachment_5628\" style=\"width: 1290px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/telamusicas.jpg\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5628\" class=\"wp-image-5628 size-full\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/telamusicas.jpg\" alt=\"m\u00fasicas organizadas no df player mini com arduino \" width=\"1280\" height=\"654\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/telamusicas.jpg 1280w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/telamusicas-300x153.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/telamusicas-1024x523.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/telamusicas-768x392.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/a><p id=\"caption-attachment-5628\" class=\"wp-caption-text\">Figura 4 &#8211; Organiza\u00e7\u00e3o das faixas musicais no SD Card.<\/p><\/div>\n<p>Ap\u00f3s isso, insira o cart\u00e3o no m\u00f3dulo DFPlayer Mini e alimente o seu projeto com a fonte de alimenta\u00e7\u00e3o. Pronto! Divirta-se com uma boa m\u00fasica.<\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Por meio do Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato \u00e9 poss\u00edvel compreender o funcionamento de controle de volume e faixas musicais. Por meio dessa aplica\u00e7\u00e3o, voc\u00ea pode desenvolver, por exemplo, uma caixa musical com <a href=\"https:\/\/www.usinainfo.com.br\/arduino-74\" target=\"_blank\" rel=\"noopener noreferrer\">Arduino<\/a> para que o usu\u00e1rio n\u00e3o tenha contato com bot\u00f5es f\u00edsicos e utilize uma interface de controle mais simples.<\/p>\n<p>Al\u00e9m disso, como sugest\u00e3o, voc\u00ea pode desenvolver v\u00e1rios tipos de projetos interessantes. Entre eles, voc\u00ea pode desenvolver um sistema de voz para auxiliar um usu\u00e1rio a manipular as fun\u00e7\u00f5es de um sistema de uma determinada m\u00e1quina. Isso \u00e9 comum em m\u00e1quinas de bancos e m\u00e1quinas de acesso a estacionamentos de shoppings.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea j\u00e1 pensou em criar uma caixa de som utilizando o df player mini com Arduino e controlada atrav\u00e9s de gestos? Se j\u00e1 pensou, acredite, pois \u00e9 poss\u00edvel! Nesse artigo voc\u00ea vai aprender a criar sua caixa musical controlada pelo Sensor de Gestos APDS9960 e montar o seu projeto com o DFPlayer Mini. Em \u00e9poca de pandemia, como a que estamos passando, projetos que permitam acionar mecanismos sem toque est\u00e3o em alta, evitando toques f\u00edsicos desnecess\u00e1rios. J\u00e1 pensou em controlar seu M\u00f3dulo MP3 Arduino somente por meio de gestos, passando m\u00fasicas, retornando ou mesmo fazendo ajustes de volume? Esse projeto permite a voc\u00ea controlar suas m\u00fasicas atrav\u00e9s de 4 tipos de gestos: movimento para esquerda, direita, cima e baixo. Cada [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":5648,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,1],"tags":[290,288,100,289],"class_list":["post-5314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-projetos","tag-df-player-arduino","tag-mp3-arduino","tag-projeto-arduino","tag-sensor-de-gestos-apds9960"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato - Blog Usinainfo<\/title>\n<meta name=\"description\" content=\"Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato tem no Blog UsinaInfo. Acesse o Tutorial Completo e Crie seu.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato - Blog Usinainfo\" \/>\n<meta property=\"og:description\" content=\"Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato tem no Blog UsinaInfo. Acesse o Tutorial Completo e Crie seu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Usinainfo\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/pt-br.facebook.com\/faceusinainfo\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-21T13:08:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-21T17:42:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/sensor-de-gestos-APDS9960-Controlando-o-MP3-Arduino-sem-Contato-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1704\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diego Moreira\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diego Moreira\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato - Blog Usinainfo","description":"Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato tem no Blog UsinaInfo. Acesse o Tutorial Completo e Crie seu.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/","og_locale":"pt_BR","og_type":"article","og_title":"Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato - Blog Usinainfo","og_description":"Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato tem no Blog UsinaInfo. Acesse o Tutorial Completo e Crie seu.","og_url":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/","og_site_name":"Blog Usinainfo","article_publisher":"https:\/\/pt-br.facebook.com\/faceusinainfo\/","article_published_time":"2020-10-21T13:08:01+00:00","article_modified_time":"2020-10-21T17:42:04+00:00","og_image":[{"width":2560,"height":1704,"url":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/sensor-de-gestos-APDS9960-Controlando-o-MP3-Arduino-sem-Contato-scaled.jpg","type":"image\/jpeg"}],"author":"Diego Moreira","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Diego Moreira","Est. tempo de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/","url":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/","name":"Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato - Blog Usinainfo","isPartOf":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/#primaryimage"},"image":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/#primaryimage"},"thumbnailUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/sensor-de-gestos-APDS9960-Controlando-o-MP3-Arduino-sem-Contato-scaled.jpg","datePublished":"2020-10-21T13:08:01+00:00","dateModified":"2020-10-21T17:42:04+00:00","author":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/6a2c71301c6713469112b908c657d563"},"description":"Projeto Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato tem no Blog UsinaInfo. Acesse o Tutorial Completo e Crie seu.","breadcrumb":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/#primaryimage","url":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/sensor-de-gestos-APDS9960-Controlando-o-MP3-Arduino-sem-Contato-scaled.jpg","contentUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2020\/10\/sensor-de-gestos-APDS9960-Controlando-o-MP3-Arduino-sem-Contato-scaled.jpg","width":2560,"height":1704},{"@type":"BreadcrumbList","@id":"https:\/\/www.usinainfo.com.br\/blog\/sensor-de-gestos-apds9960-controlando-o-mp3-arduino-sem-contato\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.usinainfo.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Sensor de Gestos APDS9960 Controlando o MP3 Arduino sem Contato"}]},{"@type":"WebSite","@id":"https:\/\/www.usinainfo.com.br\/blog\/#website","url":"https:\/\/www.usinainfo.com.br\/blog\/","name":"Blog Usinainfo","description":"Usinainfo","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.usinainfo.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/6a2c71301c6713469112b908c657d563","name":"Diego Moreira","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4f3d375404c760b6cb56ca06b22c0bd19efe18c0741c9da6259a4e62b33bd21?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4f3d375404c760b6cb56ca06b22c0bd19efe18c0741c9da6259a4e62b33bd21?s=96&d=mm&r=g","caption":"Diego Moreira"},"description":"T\u00e9cnico em Automa\u00e7\u00e3o Industrial e graduando do curso de Tecnologia em Mecatr\u00f4nica Industrial pelo Instituto Federal do Cear\u00e1. E, atualmente, trabalha como desenvolvedor de projetos, sistemas inteligentes e criador de conte\u00fado por meio da empresa Sil\u00edcios Lab para o seu canal e para o blog da UsinaInfo. Nas horas livres, desenvolve alguns projetos com Microcontroladores e Arduino.","sameAs":["https:\/\/www.silicioslab.com.br\/"],"url":"https:\/\/www.usinainfo.com.br\/blog\/author\/diego-moreira\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/5314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5314"}],"version-history":[{"count":28,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/5314\/revisions"}],"predecessor-version":[{"id":5647,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/5314\/revisions\/5647"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/media\/5648"}],"wp:attachment":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}