Arduino, Internet das Coisas e Computação vestível |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Você está em » Home : Projetos diversos
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3.5. Cartaz interativo
|
// Cartaz interativo com sensor capacitivo - Versão 1 // Autor: André Silveira // Data: 10/11/2019 #include <Arduino.h> #include <SoftwareSerial.h> #include <CapacitiveSensor.h> #include <DFRobotDFPlayerMini.h> int volume = 20; int musica = 0; int segundos = 50; // -- Declara valor da capacitância (maior que) quando os sensores são pressionados -- // int capacitancia_sensor1 = 200; int capacitancia_sensor2 = 200; int capacitancia_sensor3 = 200; int capacitancia_sensor4 = 200; int capacitancia_sensor5 = 200; String tecla_status = "play"; // --- Declara pinos Emissor e Receptor (Sender e Receiver) dos sensores --- // CapacitiveSensor sensor1 = CapacitiveSensor(34,35); CapacitiveSensor sensor2 = CapacitiveSensor(36,37); CapacitiveSensor sensor3 = CapacitiveSensor(38,39); CapacitiveSensor sensor4 = CapacitiveSensor(5,4); CapacitiveSensor sensor5 = CapacitiveSensor(7,6); // --- Declara objetos para DFPlayerMini --- // SoftwareSerial mySoftwareSerial(10, 11); // Pinos RX, TX de comunicação serial DFRobotDFPlayerMini myDFPlayer; void setup() { mySoftwareSerial.begin(9600); Serial.begin(9600); Serial.println(); Serial.println(F("DFRobot DFPlayer Mini")); if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println(">> Nao inicializado!"); while(true){ delay(0); } } Serial.println(">> Inicializado!"); // ---- Configure myDFPlayer - tempo leitura e volume (0 até 30) ---- // myDFPlayer.setTimeOut(500); myDFPlayer.volume(volume); // -------- Autocalibragem dos sensores capacitivos ---------- // sensor1.set_CS_AutocaL_Millis(0xFFFFFFFF); sensor2.set_CS_AutocaL_Millis(0xFFFFFFFF); sensor3.set_CS_AutocaL_Millis(0xFFFFFFFF); sensor4.set_CS_AutocaL_Millis(0xFFFFFFFF); sensor5.set_CS_AutocaL_Millis(0xFFFFFFFF); // --- Intervalos de tempo para leitura dos sensores capacitivos --- // sensor1.set_CS_Timeout_Millis(segundos); sensor2.set_CS_Timeout_Millis(segundos); sensor3.set_CS_Timeout_Millis(segundos); sensor4.set_CS_Timeout_Millis(segundos); sensor5.set_CS_Timeout_Millis(segundos); } void loop() { // ----- Lê valor da capacitância de cada sensor ----- / long start = millis(); long leitura1 = sensor1.capacitiveSensor(30); long leitura2 = sensor2.capacitiveSensor(30); long leitura3 = sensor3.capacitiveSensor(30); long leitura4 = sensor4.capacitiveSensor(30); long leitura5 = sensor5.capacitiveSensor(30); Serial.print(" S1:"); Serial.print(leitura1); Serial.print(" S2:"); Serial.print(leitura2); Serial.print(" S3:"); Serial.print(leitura3); Serial.print(" S4:"); Serial.print(leitura4); Serial.println(" S5:"); Serial.print(leitura5); // ----- Se dois sensores forem acionados ao mesmo tempo ----- / if ((leitura1 > capacitancia_sensor1 and leitura2 > capacitancia_sensor2) or (leitura1 > capacitancia_sensor1 and leitura3 > capacitancia_sensor3) or (leitura2 > capacitancia_sensor2 and leitura3 > capacitancia_sensor3)) { if (musica != 4) { musica = Mostra_tela ("Alerta som ", 4, volume); } return; } // ----- Se três sensores forem acionados ao mesmo tempo ----- / if ((leitura1 > capacitancia_sensor1 and leitura4 > capacitancia_sensor4) or (leitura1 > capacitancia_sensor1 and leitura5 > capacitancia_sensor5) or (leitura2 > capacitancia_sensor2 and leitura4 > capacitancia_sensor4) or (leitura2 > capacitancia_sensor2 and leitura5 > capacitancia_sensor5) or (leitura3 > capacitancia_sensor3 and leitura4 > capacitancia_sensor4) or (leitura3 > capacitancia_sensor1 and leitura5 > capacitancia_sensor1) or (leitura4 > capacitancia_sensor1 and leitura5 > capacitancia_sensor1)) { if (musica != 5) { musica = Mostra_tela ("Alerta som ", 5, volume); } return; } // ----- Se sensor 1 for acionado ----- / if (leitura1 > capacitancia_sensor1 and musica != 1) { musica = Mostra_tela ("Play som ", 1, volume); return; } // ----- Se sensor 2 for acionado ----- / if (leitura2 > capacitancia_sensor2 and musica != 2) { musica = Mostra_tela ("Play som ", 2, volume); return; } // ----- Se sensor 3 for acionado ----- / if (leitura3 > capacitancia_sensor3) { volume = volume_musica ("Volume ","true", volume); return; } // ----- Se sensor 4 for acionado ----- / if (leitura4 > capacitancia_sensor4) { volume = volume_musica ("Volume ","false", volume); return; } // ----- Se sensor 5 for acionado ----- / if (leitura5 > capacitancia_sensor5 and tecla_status != "stop") { Serial.println("Stop"); musica =0; tecla_status = "stop"; myDFPlayer.stop(); return; } } int Mostra_tela (String mensagem, int musica, int volume) { tecla_status = "play"; Serial.print(mensagem); Serial.println(musica); myDFPlayer.play(musica); return musica; } int volume_musica (String mensagem, int soma, int volume) { if (soma == "true") { volume = volume + 2; if (volume > 30) { volume = 30; } } else { volume = volume - 2; if (volume < 0) { volume = 0; } } Serial.print(mensagem); Serial.println(volume); myDFPlayer.volume(volume); return volume; } |
Cartaz interativo: testes diversos (Montagem do circuito, player de música, alto falante, tinta condutiva, etc)
Cartaz Star Wars - instalação interativa com Arduino
2) Segunda versão
O projeto utiliza placa Arduino Nano, 1 resistor de 330 KΩ,Módulo MP3 Mini DFPlayer, alto-falante 0,5w 8 ohms ou mais potente e tinta condutiva. O resistor de 1 resistor de 330 KΩ é utilizado junto ao Módulo MP3 Mini DFPlayer.
Considerações
// Cartaz interativo com sensor capacitivo - Versão 2 // Autor: André Silveira // Data: 5/10/2021 #include "Arduino.h" #include "Wire.h" #include "SoftwareSerial.h" #include "Adafruit_MPR121.h" #include "DFRobotDFPlayerMini.h" int tecla = 0; int volume = 20; int musica = 99; int segundos = 100; // --- Declara bibliotecas Adafruit_MPR121 e DFPlayerMini --- // Adafruit_MPR121 cap = Adafruit_MPR121(); SoftwareSerial mySoftwareSerial(10, 11); // Pinos RX, TX de comunicação serial DFRobotDFPlayerMini myDFPlayer; void setup() { mySoftwareSerial.begin(9600); Serial.begin(9600); Serial.println(">> Programa iniciado"); // ---- I2C 7-bit address 0x5A é padrão (pode ser setado para 0x5B, 0x5C or 0x5D) ---- // if (!cap.begin(0x5A)) { Serial.println("Sensor capacitivo >> Nao Encontrado!"); while (1); } Serial.println("Sensor capacitivo encontrado"); // ---- DFRobot DFPlayer Mini ---------- // if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println("DFRobot DFPlayer Mini >> Nao inicializado!"); while(true){ delay(0); } } Serial.println("DFRobot DFPlayer Mini >> Inicializado!"); myDFPlayer.setTimeOut(500); // tempo para leitura myDFPlayer.volume(volume); // volume (0 até 50) } void loop() { tecla = cap.touched(); for (uint8_t i=0; i<12; i++) { if (tecla & _BV(i)) { Serial.print("Tecla apertada: "); Serial.println(i); switch (i) { case 2: case 3: // Toca música if (musica != i) { Serial.print("Musica:"); Serial.println(i); myDFPlayer.play(i); musica = i; } break; case 4: // Aumenta volume Serial.print("Musica - Aumenta volume: "); Serial.println(volume); volume = volume + 4; if (volume > 30) { volume = 30; } myDFPlayer.volume(volume); break; case 1: // Baixa volume Serial.print("Musica - Baixa volume: "); Serial.println(volume); volume = volume - 2; if (volume < 0) { volume = 0; } myDFPlayer.volume(volume); break; case 0: // Stop e Reset Serial.println("Musica - Stop e Reset"); volume = 30; myDFPlayer.stop(); myDFPlayer.volume(volume); musica = 99; break; default: Serial.print(i); Serial.println("Nada"); break; } // End switch } // End if } // End for delay(segundos); } |
[Voltar] |
[Avançar] |