salut à toutes et tous
je suis débutant (vraiment débutant), j'ai découvert Arduino il y a une semaine.
mon projet : une pédale avec 6 poussoirs :
Next / Play / Stop / Previous / Vol+ / Vol -
un fichier = un wave
le besoin : appuyer sur next pour incrémenter et passer au suivant et récupérer sur l'afficheur le nom du fichier.
- 1 arduino uno
- 6 boutons poussoirs
- un dfplayer mp3 mini
- une resistance 1k
- un Lcd + 1 i2C
- une carte sd
- en option : un potentiomètre pour le volume.
mon petit soucis : l'affichage des fichiers lus par mon DFPlayer mini
Je souhaite afficher sur mon LCD le fichier lu avec la variable :
Serial.println(myDFPlayer.readCurrentFileNumber());
ou
myLcd.print(myDFPlayer.readCurrentFileNumber());
impossible d'afficher cela.
J'arrive à afficher sur le Lcd : Play, pause lorsque j'appuie sur le poussoir et que le lecteur est en mode play ou pause (appui sur poussoirs dédiés). Mais impossible de l'afficher (récupérer cela sur le Lcd).
Merci pour votre aide....
mon code :
#include <DFRobotDFPlayerMini.h>
#include <LiquidCrystal_I2C.h>
#include "SoftwareSerial.h"
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW
int buttonPlay = 4;
int buttonPause = 5;
int buttonNext = 6;
int buttonPrevious = 7;
boolean isPlaying = false;
// Create the LCD object
LiquidCrystal_I2C myLcd(0x27, 16, 2);
DFRobotDFPlayerMini myDFPlayer;
void setup () {
myLcd.begin(16, 2);
myLcd.init();
myLcd.backlight();
pinMode(buttonPlay, INPUT);
digitalWrite(buttonPlay,HIGH);
pinMode(buttonPause, INPUT);
digitalWrite(buttonPause,HIGH);
pinMode(buttonNext, INPUT);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT);
digitalWrite(buttonPrevious,HIGH);
mySerial.begin (9600);
delay(1000);
//playFirst();
isPlaying = true;//
}
void loop () {
if (digitalRead(buttonPause) == ACTIVATED)
{
if(isPlaying)
{
pause();
isPlaying = false;
}else
{
isPlaying = true;
play();
}
}
if (digitalRead(buttonPlay) == ACTIVATED)
{
if(isPlaying)
{
play();
isPlaying = false;
}else
{
isPlaying = true;
play();
}
}
if (digitalRead(buttonNext) == ACTIVATED)
{
if(isPlaying)
{
playNext();
}
}
if (digitalRead(buttonPrevious) == ACTIVATED)
{
if(isPlaying)
{
playPrevious();
}
}
}
void pause()
{
execute_CMD(0x16,0,0);
delay(500);
myLcd.setCursor(10, 0);
myLcd.clear();
myLcd.print("Pause");
}
void play()
{
execute_CMD(0x0D,0,1);
delay(500);
myLcd.clear();
myLcd.setCursor(0, 0);
myLcd.print(myDFPlayer.readCurrentFileNumber());
}
void playNext()
{
execute_CMD(0x01,0,1);
delay(500);
myLcd.clear();
}
void playPrevious()
{
execute_CMD(0x02,0,1);
delay(500);
myLcd.clear();
}
void TrackNumberClear() {
delay(500);
myLcd.setCursor(6, 0);
myLcd.print(" ");
}
void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
mySerial.write( Command_line[k]);
}
}