Código
Código para copiar y pegar
//sacosta.org
//cada targeta fa sonar un so o fa una funció: canviar de tema, next, previous, pause, start.....
//Els sons estan organitzats en carpetes de nom 10, 20, 30 etc. S'accedeix a elles amb les targes 101, 102, 103
//els sons dins cada carpeta tenen per nom 001.mp3, 002.mp3, etc. S'accedeix a aquests sons amb les targes 1,2,3....
//Targes sons
//des de la tarja 1 a la 22 estan relacionades amb els sons 001, 002, 003....022 de cada carpeta
//Targes especials
//targeta 101 selecciona carpeta 01
//targeta 102 selecciona carpeta 02
//targeta 103 selecciona carpeta 03
//targeta 211 atura(pausa) la reproducció d'un so.
//targeta 212 reinicia la reproducció després de la pausa (start)
//targeta 213 reprodueix el so següent al darrer reproduït o en reproducció(NEXT)
//targeta 214 reprodueix el so anterior al darrer reproduït o en reproducció(PREVIOUS)
//targeta 215 Fixa el volum a un valor determinat 10 (el volum pot anar de 0 a 30)
//targeta 216 Fixa el volum a un valor determinat 20 (el volum pot anar de 0 a 30)
//targeta 217 Fixa el volum a un valor determinat 30 (el volum pot anar de 0 a 30)
//definim 5 leds per il·luminar pictograma triat
#define LED1 2//indica tema 1 carpeta 01 s'activa tarja 101
//LED1 connectat a PIN D2
#define LED2 3//indica tema 2 carpeta 02 s'activa tarja 102
//LED2 connectat a PIN D3
#define LED3 6//indica tema 3 carpeta 03 s'activa tarja 103
//LED3 connectat a PIN D6
#define LED4 7//indica tema 4 carpeta 04
//LED4 connectat a PIN D7
#define LED5 8//indica tema 5 carpeta 05
//LED5 connectat a PIN D8
//LLibreries
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include "SPI.h"
#include <MFRC522.h>
#include <MFRC522Extended.h>
//#include <require_cpp11.h>
//#include <deprecated.h>
//Defineix pins mòdul RC522(Lector RFID)pins compatibles placa sacosta.org
#define SS_PIN 9
#define RST_PIN 10
MFRC522 mfrc522(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
byte targeta;//variable amb la que asociarem un códi de targeta a un número.
byte carpeta=01;//variable amb la que associarem targes de tema amb el seu tema
char st[20];//variable sistema
String funcio;//variable posar nom de la funció. Descriptiu, útil a l'hora de programar
//Defineix el pins mòdul DFPlayer Mini (RX del mòdul a pin 4 Arduino, TX del mòdul a pin 5 Arduino)
SoftwareSerial mySoftwareSerial(4,5); // RX, TX. (Compatible placa sacosta.org)
DFRobotDFPlayerMini myDFPlayer;
unsigned long Temps_ara = 0;//variable utilitzada per captar el valor en millis() quant ens interessi
const int t_aturat=1000; //variable utilizada per a fixar un "delay" emprant millis().
void setup()
{
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
pinMode(LED5,OUTPUT);
digitalWrite(LED1,HIGH);//per defecte està actiu tema 1
//Comunicació serial amb el mòdul MP3
mySoftwareSerial.begin(9600);
// Comunicació amb monitor serie
Serial.begin(115200);
// Inicia SPI bus
SPI.begin();
// Inicia mfrc522(lector de targes)
mfrc522.PCD_Init();
// Missatges inicials en monitor sèrie
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini"));
Serial.println(F("Inicializant mòdul DFPlayer... (3~5 segons)"));
if (!myDFPlayer.begin(mySoftwareSerial))//si no s'inicialitza
{
Serial.println(F("No inicializat:"));
Serial.println(F("1.Comprova les connexions del DFPlayer Mini"));
Serial.println(F("2.Insereix la targeta SD"));
while (true);
}
Serial.println();
Serial.println(F("Mòdul DFPlayer Mini inicializat!"));
myDFPlayer.setTimeOut(500); //Timeout serial 500ms
myDFPlayer.volume(20); //Fixa un valor de la variable volume (volum altaveus (0~30)).
myDFPlayer.EQ(0); //Equalizació normal
//----Opció d'escollir SD Card o USB pendrive----
myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);//Si vols emprar USB pen memory
//myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD); //Si vols emprar SD Card
Serial.println("Acosta la targeta al lector...");
Serial.println();
}
void loop() {
// En espera de tarja
if ( ! mfrc522.PICC_IsNewCardPresent()|| !mfrc522.PICC_ReadCardSerial()){
return;
}
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);//analitza el tipus de targeta
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F("La teva targeta no és del tipus MIFARE Classic."));
return;
//si no és una Mifare classic torna a començar el loop
}
String strID = "";
for (byte i = 0; i < 4; i++) {
strID +=
(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "") +
String(mfrc522.uid.uidByte[i], HEX) +
(i != 3 ? ":" : "");
}
strID.toUpperCase();
if (validateCard(strID)) {
Serial.print("ID: ");
Serial.println(strID);
//targetes so 1-50
//per codi es pot ampliar el nombre
if((targeta>0)&&(targeta<51)){
Serial.print("Carpeta= ");
Serial.print(carpeta);
Serial.print(" so= ");
Serial.println(targeta);
myDFPlayer.playFolder(carpeta, targeta);
}
//targes especials canvi de tema
if((targeta==101)||(targeta==102)||(targeta==103)||(targeta==104)||(targeta==105)){
Serial.print(targeta);
Serial.print(" ");
Serial.print(carpeta);
Serial.print(" ");
Serial.println(funcio);
if(targeta==101){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
myDFPlayer.playFolder(carpeta, 100);//so numero 100, títol del contingut
}
if(targeta==102){
digitalWrite(LED1,LOW);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
myDFPlayer.playFolder(carpeta, 100);//so numero 100, títol del contingut
}
if(targeta==103){
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
myDFPlayer.playFolder(carpeta, 100);//so numero 100, títol del contingut
}
if(targeta==104){
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,LOW);
myDFPlayer.playFolder(carpeta, 100);//so numero 100, títol del contingut
}
if(targeta==105){
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,HIGH);
myDFPlayer.playFolder(carpeta, 100);//so numero 100, títol del contingut
}
}
//targes especials per funcions
if(targeta==211){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.pause(); //Pause the mp3
}
if(targeta==212){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.start(); //Start
}
if(targeta==213){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.next(); //Play next mp3
}
if(targeta==214){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.previous(); //Play previous mp3
}
if(targeta==215){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.volume(10);//Volum baix
}
if(targeta==216){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.volume(20);//Volum normal
}
if(targeta==217){
Serial.println("Targeta ");
Serial.println(targeta);
Serial.print(" ");
Serial.println(funcio);
myDFPlayer.volume(30);//Volum alt
}
//delay(1000);
Temps_ara = millis();
while(millis() < Temps_ara+t_aturat){
}
}}
bool validateCard(String usercard) {
// Insert your own card ID's here, insert more with else if under
if(usercard.indexOf("42:3D:7F:2D") >= 0) { //targeta 1 Jesus
targeta=1;
return true;
}
else if(usercard.indexOf("32:B5:65:2D")>= 0) {//Targeta 2 Jesus
targeta=2;
return true;
}
else if(usercard.indexOf("85:2A:D4:2D") >= 0) {//Targeta 3 Jesus
targeta=3;
return true;
}
else if(usercard.indexOf("A4:DD:9F:2D") >= 0) {//Targeta 4 Jesus
targeta=4;
return true;
}
else if(usercard.indexOf("94:61:76:2D") >= 0) {//Targeta 5 Jesus
targeta=5;
return true;
}
else if(usercard.indexOf("60:3E:C5:3D") >= 0) {//Targeta 6 Jesus
targeta=6;
return true;
}
else if(usercard.indexOf("A4:7B:E4:2D") >= 0) {//Targeta 7 Jesus
targeta=7;
return true;
}
else if(usercard.indexOf("94:6C:69:2D") >= 0) {//Targeta 8 Jesus
targeta=8;
return true;
}
else if(usercard.indexOf("95:00:B4:28") >= 0) {//Targeta 9 Jesus
targeta=9;
return true;
}
else if(usercard.indexOf("03:01:C5:3F") >= 0) {//Targeta 10 Jesus
targeta=10;
return true;
}
if(usercard.indexOf("95:9E:E3:28") >= 0) { //targeta 11 Jesus
targeta=11;
return true;
}
else if(usercard.indexOf("95:7F:17:28")>= 0) {//Targeta 12 Jesus
targeta=12;
return true;
}
else if(usercard.indexOf("95:3B:AC:28") >= 0) {//Targeta 13 Jesus
targeta=13;
return true;
}
else if(usercard.indexOf("95:67:FC:28") >= 0) {//Targeta 14 Jesus
targeta=14;
return true;
}
else if(usercard.indexOf("A5:54:27:28") >= 0) {//Targeta 15 Jesus
targeta=15;
return true;
}
else if(usercard.indexOf("D3:97:0C:3E") >= 0) {//Targeta 16 Jesus
targeta=16;
return true;
}
else if(usercard.indexOf("E3:11:6F:3E") >= 0) {//Targeta 17 Jesus
targeta=17;
return true;
}
else if(usercard.indexOf("E3:E1:53:3E") >= 0) {//Targeta 18 Jesus
targeta=18;
return true;
}
else if(usercard.indexOf("A5:3C:D9:28") >= 0) {//Targeta 19 Jesus
targeta=19;
return true;
}
else if(usercard.indexOf("95:B2:2F:28") >= 0) {//Targeta 20 Jesus
targeta=20;
return true;
}
else if(usercard.indexOf("B6:B8:99:29") >= 0) {//Targeta 21 Jesus
targeta=21;
return true;
}
else if(usercard.indexOf("C3:3A:BC:3E") >= 0) {//Targeta 22 Jesus
targeta=22;
return true;
}
else if(usercard.indexOf("B6:4B:7B:29") >= 0) {//Targeta 23 Jesus
targeta=23;
return true;
}
else if(usercard.indexOf("D3:6B:56:3E") >= 0) {//Targeta 24 Jesus
targeta=24;
return true;
}
else if(usercard.indexOf("90:E9:2E:30") >= 0) {//Targeta 25 Jesus
targeta=25;
return true;
}
else if(usercard.indexOf("B6:E9:D5:29") >= 0) {//Targeta 26 Jesus
targeta=26;
return true;
}
else if(usercard.indexOf("C3:41:19:3E") >= 0) {//Targeta 27 Jesus
targeta=27;
return true;
}
else if(usercard.indexOf("A0:5E:C4:30") >= 0) {//Targeta 28 Jesus
targeta=28;
return true;
}
else if(usercard.indexOf("B5:D4:DF:28") >= 0) {//Targeta 29 Jesus
targeta=29;
return true;
}
else if(usercard.indexOf("02:93:E6:33") >= 0) {//Targeta 30 Jesus
targeta=30;
return true;
}
if(usercard.indexOf("93:57:01:3E") >= 0) { //targeta 31 Jesus
targeta=31;
return true;
}
else if(usercard.indexOf("E3:F0:38:3E")>= 0) {//Targeta 32 Jesus
targeta=32;
return true;
}
else if(usercard.indexOf("D3:42:28:3E") >= 0) {//Targeta 33 Jesus
targeta=33;
return true;
}
else if(usercard.indexOf("A5:F1:AA:28") >= 0) {//Targeta 34 Jesus
targeta=34;
return true;
}
else if(usercard.indexOf("B6:9D:11:29") >= 0) {//Targeta 35 Jesus
targeta=35;
return true;
}
else if(usercard.indexOf("B6:E9:D5:29") >= 0) {//Targeta 36 Jesus
targeta=36;
return true;
}
else if(usercard.indexOf("C3:41:19:3E") >= 0) {//Targeta 37 Jesus
targeta=37;
return true;
}
else if(usercard.indexOf("A0:5E:C4:30") >= 0) {//Targeta 38 Jesus
targeta=38;
return true;
}
else if(usercard.indexOf("B5:D4:DF:28") >= 0) {//Targeta 39 Jesus
targeta=39;
return true;
}
else if(usercard.indexOf("02:93:E6:33") >= 0) {//Targeta 40 Jesus
targeta=40;
return true;
}
if(usercard.indexOf("93:57:01:3E") >= 0) { //targeta 41 Jesus
targeta=41;
return true;
}
else if(usercard.indexOf("E3:F0:38:3E")>= 0) {//Targeta 42 Jesus
targeta=42;
return true;
}
else if(usercard.indexOf("D3:42:28:3E") >= 0) {//Targeta 43 Jesus
targeta=43;
return true;
}
else if(usercard.indexOf("A5:F1:AA:28") >= 0) {//Targeta 44 Jesus
targeta=44;
return true;
}
else if(usercard.indexOf("B6:9D:11:29") >= 0) {//Targeta 45 Jesus
targeta=45;
return true;
}
else if(usercard.indexOf("B6:E9:D5:29") >= 0) {//Targeta 46 Jesus
targeta=46;
return true;
}
else if(usercard.indexOf("C3:41:19:3E") >= 0) {//Targeta 47 Jesus
targeta=47;
return true;
}
else if(usercard.indexOf("A0:5E:C4:30") >= 0) {//Targeta 48 Jesus
targeta=48;
return true;
}
else if(usercard.indexOf("B5:D4:DF:28") >= 0) {//Targeta 49 Jesus
targeta=49;
return true;
}
else if(usercard.indexOf("02:93:E6:33") >= 0) {//Targeta 50 Jesus
targeta=50;
return true;
}
else if(usercard.indexOf("D3:0A:71:3E") >= 0) {//Targeta 101 Jesus
funcio="";
targeta=101;
carpeta=01;
funcio="Tema animals";
return true;
}
else if(usercard.indexOf("C3:A5:EF:3E") >= 0) {//Targeta 102 Jesus
funcio="";
targeta=102;
carpeta=02;
funcio="Tema cançons";
return true;
}
else if(usercard.indexOf("D3:8F:91:3E") >= 0) {//Targeta 103 Jesus
funcio="";
targeta=103;
carpeta=03;
funcio="Tema instruments musicals";
return true;
}
else if(usercard.indexOf("B5:AD:7F:28") >= 0) {//Targeta 104 Jesus
funcio="";
targeta=104;
carpeta=04;
funcio="Tema Sons Humans";
return true;
}
else if(usercard.indexOf("95:B3:9B:28") >= 0) {//Targeta 105 Jesus
funcio="";
targeta=105;
carpeta=05;
funcio="Tema Noms nens/profes";
return true;
}
//tecles funció pause, play, volum, etc
else if(usercard.indexOf("D3:EF:DD:3E") >= 0) {//Targeta 211 Jesus
funcio="";
targeta=211;
funcio="Pause";
return true;
}
else if(usercard.indexOf("E3:F0:A0:3E") >= 0) {//Targeta 212 Jesus
funcio="";
targeta=212;
funcio="Play";
return true;
}
else if(usercard.indexOf("A5:74:7D:28") >= 0) {//Targeta 213 Jesus
funcio="";
targeta=213;
funcio="Next";
return true;
}
else if(usercard.indexOf("E3:E6:77:3E") >= 0) {//Targeta 214 Jesus
funcio="";
targeta=214;
funcio="Previous";
return true;
}
else if(usercard.indexOf("F3:4B:97:3E") >= 0) {//Targeta 215 Jesus
funcio="";
targeta=215;
funcio="Volum baix";
return true;
}
else if(usercard.indexOf("E3:42:1B:3E") >= 0) {//Targeta 216 Jesus
funcio="";
targeta=216;
funcio="Volum mitjà";
return true;
}
else if(usercard.indexOf("A5:A9:FF:28") >= 0) {//Targeta 217 Jesus
funcio="";
targeta=217;
funcio="Volum Alt";
return true;
}
}
Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0