Auteur Sujet: lecteur MP3 pour sonoriser reseau commandé par telecommande  (Lu 249 fois)

Pilou3837

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
lecteur MP3 pour sonoriser reseau commandé par telecommande
« le: novembre 02, 2021, 07:12:30 pm »
Bonjour,

J'ai realisé ce montage pour sonoriser la partie village de mon reseau .
J'utlise un lecteur de carte SD MP3 TF16P et un ecran LCD 16x2 pour voir l'etat des lectures N° piste, pause, start ...
les commandes sont pilotées par une  petite telecommande Eleegoo
Le fichier fonctionne parfaitement et les piste sont jouées correctement

J'ai juste un petit soucis sur l affiche du LCD :
 sur la premiere ligne j affiche "lecteur MP3" et "OK" si connection correcte ou "erreur" si echec connection serie  pas de soucis ici
Sur la deuxieme ligne j affiche l etat du lecteur par exemple "pause". par contre si j affiche  1 apres pause j'ai à l affichage   "1ause"
Y a t il un moyen de faire disparaitre le precedent affichage pour eviter que la commande suivante apparraise incluse dans la commande précedente.

J'ai testé avec clear ou display mais sans succes ( clear efface tout y compris la premiere ligne ) .

Quelqu'un aurait une astuce ?

Merci

Pierre

Tony04

  • Sr. Member
  • ****
  • Messages: 412
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #1 le: novembre 02, 2021, 08:34:43 pm »
Bonsoir Pierre,

et si tu rajoutes des espaces après le 1 jusqu'à la fin de la ligne... Ce n'est peut-être pas la plus technique des méthodes.

msport

  • Hero Member
  • *****
  • Messages: 1492
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #2 le: novembre 02, 2021, 09:43:14 pm »
Bonsoir,

lcd.setCursor(0, 1); est exécuté à chaque loop.

il faudrait positionner le curseur à (2, 1) avant lcd.print("pause"); (que je n'ai pas trouvé)
Cordialement

Pilou3837

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #3 le: novembre 03, 2021, 12:36:37 am »
Ok merci je vais tester cela, ça me semble logique
Pierre

CATPLUS

  • Sr. Member
  • ****
  • Messages: 317
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #4 le: novembre 03, 2021, 08:56:32 am »
Bonjour


Je me suis fait 2 petits programmes pour tester les adresses I2c (LCD => 0x3f ou 0x27)
1 => 2 lignes
2 => 4 lignes

Si cela peut aider
Best Regards

Tony04

  • Sr. Member
  • ****
  • Messages: 412
    • Voir le profil
Re : Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #5 le: novembre 03, 2021, 09:43:21 am »
lcd.setCursor(0, 1); est exécuté à chaque loop.
il faudrait positionner le curseur à (2, 1) avant lcd.print("pause"); (que je n'ai pas trouvé)

Mais qui n'effacerait quand même pas le mot PAUSE, d'où les espaces proposés

Cordialement
Antoine

msport

  • Hero Member
  • *****
  • Messages: 1492
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #6 le: novembre 03, 2021, 11:34:51 am »
... on ne sait pas ce qui recherché !
Cordialement

Tony04

  • Sr. Member
  • ****
  • Messages: 412
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #7 le: novembre 03, 2021, 11:45:59 am »
Sur la deuxieme ligne j affiche l etat du lecteur par exemple "pause". par contre si j affiche  1 apres pause j'ai à l affichage   "1ause"
Y a t il un moyen de faire disparaitre le precedent affichage pour eviter que la commande suivante apparraise incluse dans la commande précedente.

D'après ce que j'ai compris, en voulant afficher lors d'une seconde boucle un "1", il reste une partie du premier affichage cad "ause", d'où l'idée d'afficher plutôt qu'un "1", un "1    " avec le nombre d'espace pour remplir la ligne.

Est-ce cela Pierre ?

Pilou3837

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #8 le: novembre 03, 2021, 07:28:18 pm »
Oui c est cela

Si je positionne setCursor dans chaque Case au lieu de le mettre en debut de boucle ca ne change rien
ex

case 0xFF30CF:// bouton 1 lecture fichier 0001
        Serial.println("1");
        MP3.play(1);
        lcd.setCursor(0, 1);// Affiche information du lecteur sur la deuxième ligne
        lcd.print ("1");
        break;


L idée serait de n effacer que la deuxieme ligne a chaque boucle , la fonction clear dispo dans la biblio liquidcrystal  efface systematiquement  les deux lignes .
En jouant avec les espaces on s en sort  et l affichage est propre

Merci à tous

Pierre


Fantasio

  • Newbie
  • *
  • Messages: 31
    • Voir le profil
Re : lecteur MP3 pour sonoriser reseau commandé par telecommande
« Réponse #9 le: novembre 04, 2021, 01:00:53 am »
La solution de Tony04 est bonne.

Dans ta loop ,effectivement tu positionnes ton texte sur la 2ème ligne en colonne 0.
Donc pour effacer à coup sûr le texte précédent envoie systématiquement 16 caractères (texte suivi d'espace).
exemple:
case 0xFFA25D: // bouton Power pas d action
        Serial.println("POWER");
        lcd.print ("POWER      "); // 5 caractères suivi de 11 espaces
        break;