Tutoriel électronique Arduino

Avatar de l’utilisateur
protongamer
Membre GBF
Membre GBF
Messages : 1734
Inscription : 21 février 2014, 20:56
Localisation : Toulouse 31

Re: Tutoriel électronique Arduino

Message par protongamer »

Merci bien l'ami, alors c'est un vieux code donc je ne garantit rien au fonctionnement de ce que je vais te proposer à faire comme modification.

Donc pour commencer dans le code audio il va falloir que tu rajoute quelques modifications.
A la place de ces lignes,

Code : Tout sélectionner

//Ne pas modifier, sauf si vous êtes connaisseur :) 
 int SW1; 
 int SW2;
 int SW3;
 int SW4;
Il y aura ça à la place

Code : Tout sélectionner

//Ne pas modifier, sauf si vous êtes connaisseur :) 
 int SW1; 
 int SW2;
 int SW3;
 int SW4;
int SW5;
Il faut ensuite que tu rajoute dans le void setup() cette ligne :

Code : Tout sélectionner

pinMode(6,INPUT);
Ensuite ça :

Code : Tout sélectionner

SW1=digitalRead(A0); 
SW2=digitalRead(A1);
SW3=digitalRead(A2);
SW4=digitalRead(7);
Devient ça :

Code : Tout sélectionner

SW1=digitalRead(A0); 
SW2=digitalRead(A1);
SW3=digitalRead(A2);
SW4=digitalRead(7);
SW5=digitalRead(5);
Et ensuite peut rajouter ce morceau de code juste avant delay(1);

Code : Tout sélectionner

if(SW5 == 1){
  tmrpcm.play("overheat.wav");
      audio.loop(0);
  while(tmrpcm.isPlaying());
}

Ensuite dans le code lumière

A ajouter avant le void setup()

Code : Tout sélectionner

const char overPin = 2;
A ajouter dans le void setup()

Code : Tout sélectionner

pinMode(overPin,OUTPUT);
Et puis remplacer ça :

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  }
Par ça :

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  digitalWrite(overPin,1);
  delay(100);
  digitalWrite(overPin,0);
  delay(3000); //Délai à mettre en fonction de la durée de ton son overheat, j'ai 3000 ms par exemple, mais tu peut mettre une autre valeur mieux adaptée
  readov = 0;
  }
Ensuite pour la partie physique, il faudra que tu relie les GND des deux arduino ensemble, et que tu relie la broche 2 de l'arduino Mega à la broche 6 de l'arduino Uno.

Voila je pense que tu pourra commencer avec ça, par contre sache que le son n'est pas de très bonne qualité, j'avais utilisé ça car c'était le seul moyen que j'avais d'assez low cost en terme d'hardware sous la main, et surtout que le coding n'était pas compliqué. Mais maintenant ça a bien évolué, je te suggère plutôt d'utiliser un module MP3 type dfrobot, le son sort directement d'un DAC et non d'une PWM, donc meilleur qualité audio, de plus tu peut jouer du 44kHz alors que mon vieux code joue du 16kHz, qui peut être joué aussi avec du 22kHz et du 32kHz, mais toujours en PWM. :ico-slimer:
Image
Quel est cet artefact ? Un jeu hanté !
On a un message Gozerien, il faut le décrypter !

lzqdm.owwotm.kwu/file/d/1BI9TpXXM0K-pEHzBplydZfXZGfN7A2Y4/view?usp=sharing

Une année clé nous aiderai à décaler ces lettres. Mais laquelle ?
Avatar de l’utilisateur
Ghostbuster-BZH
Membre GBF
Membre GBF
Messages : 1055
Inscription : 23 mars 2019, 22:00
Pseudo XBOX Live : GB BZH
Localisation : Bretagne (22)

Re: Tutoriel électronique Arduino

Message par Ghostbuster-BZH »

protongamer a écrit :Merci bien l'ami, alors c'est un vieux code donc je ne garantit rien au fonctionnement de ce que je vais te proposer à faire comme modification.

Donc pour commencer dans le code audio il va falloir que tu rajoute quelques modifications.
A la place de ces lignes,

Code : Tout sélectionner

//Ne pas modifier, sauf si vous êtes connaisseur :) 
 int SW1; 
 int SW2;
 int SW3;
 int SW4;
Il y aura ça à la place

Code : Tout sélectionner

//Ne pas modifier, sauf si vous êtes connaisseur :) 
 int SW1; 
 int SW2;
 int SW3;
 int SW4;
int SW5;
Il faut ensuite que tu rajoute dans le void setup() cette ligne :

Code : Tout sélectionner

pinMode(6,INPUT);
Ensuite ça :

Code : Tout sélectionner

SW1=digitalRead(A0); 
SW2=digitalRead(A1);
SW3=digitalRead(A2);
SW4=digitalRead(7);
Devient ça :

Code : Tout sélectionner

SW1=digitalRead(A0); 
SW2=digitalRead(A1);
SW3=digitalRead(A2);
SW4=digitalRead(7);
SW5=digitalRead(5);
Et ensuite peut rajouter ce morceau de code juste avant delay(1);

Code : Tout sélectionner

if(SW5 == 1){
  tmrpcm.play("overheat.wav");
      audio.loop(0);
  while(tmrpcm.isPlaying());
}

Ensuite dans le code lumière

A ajouter avant le void setup()

Code : Tout sélectionner

const char overPin = 2;
A ajouter dans le void setup()

Code : Tout sélectionner

pinMode(overPin,OUTPUT);
Et puis remplacer ça :

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  }
Par ça :

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  digitalWrite(overPin,1);
  delay(100);
  digitalWrite(overPin,0);
  delay(3000); //Délai à mettre en fonction de la durée de ton son overheat, j'ai 3000 ms par exemple, mais tu peut mettre une autre valeur mieux adaptée
  readov = 0;
  }
Ensuite pour la partie physique, il faudra que tu relie les GND des deux arduino ensemble, et que tu relie la broche 2 de l'arduino Mega à la broche 6 de l'arduino Uno.

Voila je pense que tu pourra commencer avec ça, par contre sache que le son n'est pas de très bonne qualité, j'avais utilisé ça car c'était le seul moyen que j'avais d'assez low cost en terme d'hardware sous la main, et surtout que le coding n'était pas compliqué. Mais maintenant ça a bien évolué, je te suggère plutôt d'utiliser un module MP3 type dfrobot, le son sort directement d'un DAC et non d'une PWM, donc meilleur qualité audio, de plus tu peut jouer du 44kHz alors que mon vieux code joue du 16kHz, qui peut être joué aussi avec du 22kHz et du 32kHz, mais toujours en PWM. :ico-slimer:
Merci beaucoup pour ton aide. Par contre sur quelle broche je branche le déclencheur du relais qui activera la lumière et la fumée du coup? Il s’agit d’un relais compatible Arduino biensur.
Pour l’audio J’ai déjà acheté les éléments en fonction de ta liste mais je n’ai encore rien monté. Si je prenais un module MP3 DFRobot comme tu le suggères, comment devrais-je le brancher sur le UNO? Et au niveau du code, faudrait-il le modifier? Comme je te le disais, je suis débutant Arduino, je ne connaissais même pas avant de lire ton tuto! Si les modifications de codage sont trop grosses je vais pas encore te demander de le faire, tu as autre chose à faire, ton code initial avec le lecteur basique fera l’affaire.
Encore merci Protongamer! Le vieux geek que je suis ne connaît que le Pascal comme langage de programmation. MDR!
CA A FAIT CHBOUM LA D'DANS

Image
Avatar de l’utilisateur
protongamer
Membre GBF
Membre GBF
Messages : 1734
Inscription : 21 février 2014, 20:56
Localisation : Toulouse 31

Re: Tutoriel électronique Arduino

Message par protongamer »

Ah le Pascal, c'est un peu similaire au C et au basic. Pour le relais je te suggère de rajouter une autre pin :

Code : Tout sélectionner

//Avant le void setup()
const char relaisPin = 3;
//Dans le void setup()
pinMode(relaisPin,OUTPUT);
Pour ce qui d'activer le relais tu pourrai mettre dans cette boucle :

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  digitalWrite(overPin,1);
  delay(100);
  digitalWrite(overPin,0);
  delay(3000); //Délai à mettre en fonction de la durée de ton son overheat, j'ai 3000 ms par exemple, mais tu peut mettre une autre valeur mieux adaptée
  readov = 0;
  }
Du coup ça pourrait donner ça

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  digitalWrite(overPin,1);
  delay(100);
  digitalWrite(overPin,0);
  digitalWrite(relaisPin,1); //active le relais pendant 3 secondes(ne pas le laisser activer top longtemps pour la E-cig, 3 secondes GRAND MAX !)
  delay(3000);
  digitalWrite(relaisPin,0); //on désactive le relais
  delay(3000); //Délai à mettre en fonction de la durée de ton son overheat, j'ai 3000 ms par exemple, mais tu peut mettre une autre valeur mieux adaptée
  readov = 0;
  }
Pour ce qui est du module MP3, effectivement, il faudrait changer le code, mais surtout ça t'éviterai d'utiliser un arduino UNO à coté, car le module MP3 est un système embarqué, donc les commandes à envoyer au MP3 serait dans l'arduino Mega. Je te suggère de voir quelques codes d'exemples pour utiliser ce module, c'est relativement simple, voir plus simple que mon vieux code audio.
Du coup ça te laisserai un arduino Uno pour faire autre chose. ;)
Image
Quel est cet artefact ? Un jeu hanté !
On a un message Gozerien, il faut le décrypter !

lzqdm.owwotm.kwu/file/d/1BI9TpXXM0K-pEHzBplydZfXZGfN7A2Y4/view?usp=sharing

Une année clé nous aiderai à décaler ces lettres. Mais laquelle ?
Avatar de l’utilisateur
Ghostbuster-BZH
Membre GBF
Membre GBF
Messages : 1055
Inscription : 23 mars 2019, 22:00
Pseudo XBOX Live : GB BZH
Localisation : Bretagne (22)

Re: Tutoriel électronique Arduino

Message par Ghostbuster-BZH »

protongamer a écrit :Ah le Pascal, c'est un peu similaire au C et au basic. Pour le relais je te suggère de rajouter une autre pin :

Code : Tout sélectionner

//Avant le void setup()
const char relaisPin = 3;
//Dans le void setup()
pinMode(relaisPin,OUTPUT);
Pour ce qui d'activer le relais tu pourrai mettre dans cette boucle :

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  digitalWrite(overPin,1);
  delay(100);
  digitalWrite(overPin,0);
  delay(3000); //Délai à mettre en fonction de la durée de ton son overheat, j'ai 3000 ms par exemple, mais tu peut mettre une autre valeur mieux adaptée
  readov = 0;
  }
Du coup ça pourrait donner ça

Code : Tout sélectionner

if(readov>overheat*15){
  digitalWrite(ledw,0);
  digitalWrite(ledb,0);
  digitalWrite(ledr,0);
  digitalWrite(overPin,1);
  delay(100);
  digitalWrite(overPin,0);
  digitalWrite(relaisPin,1); //active le relais pendant 3 secondes(ne pas le laisser activer top longtemps pour la E-cig, 3 secondes GRAND MAX !)
  delay(3000);
  digitalWrite(relaisPin,0); //on désactive le relais
  delay(3000); //Délai à mettre en fonction de la durée de ton son overheat, j'ai 3000 ms par exemple, mais tu peut mettre une autre valeur mieux adaptée
  readov = 0;
  }
Pour ce qui est du module MP3, effectivement, il faudrait changer le code, mais surtout ça t'éviterai d'utiliser un arduino UNO à coté, car le module MP3 est un système embarqué, donc les commandes à envoyer au MP3 serait dans l'arduino Mega. Je te suggère de voir quelques codes d'exemples pour utiliser ce module, c'est relativement simple, voir plus simple que mon vieux code audio.
Du coup ça te laisserai un arduino Uno pour faire autre chose. ;)
T’es un boss! Merci beaucoup!
Je viendrai vous montrer le résultat sur le forum une fois terminé.
CA A FAIT CHBOUM LA D'DANS

Image
Avatar de l’utilisateur
Ghostbuster-BZH
Membre GBF
Membre GBF
Messages : 1055
Inscription : 23 mars 2019, 22:00
Pseudo XBOX Live : GB BZH
Localisation : Bretagne (22)

Re: Tutoriel électronique Arduino

Message par Ghostbuster-BZH »

Salut la compagnie. Bon bah après 2 jours à essayer de comprendre le codage Arduino pour remplacer le module son basic du tuto de ProtonGamer par un module MP3 (son de meilleur qualité), j'y comprends que dalle! lol
HELP!!!! Quelqu'un saurait-il écrire un code pour activer les différents sons sur le module MP3 plutôt que sur le module de base SVP? L'idée serait soit de reprendre le code Kit Lumière de ProtonGamer en y incrustant le nouveau code pour jouer les MP3 (tout serait alors commandé par le 2560 Mega) ou de modifier le code Son de ProtonGamer pour qu'il fonctionne avec un module MP3 (module contrôlé dans ce cas par une Uno distincte de la 2560 qui ne contrôlerait que les lumières).
Merci pour votre aide.
CA A FAIT CHBOUM LA D'DANS

Image
Avatar de l’utilisateur
protongamer
Membre GBF
Membre GBF
Messages : 1734
Inscription : 21 février 2014, 20:56
Localisation : Toulouse 31

Re: Tutoriel électronique Arduino

Message par protongamer »

Alors sache que les modules dfrobots fonctionnent de cette manière, la sd doit contenir un dossier mp3, et dans ce dossier se trouve les fichiers mp3 nommé par des numéros, exemple : 0001.mp3, ensuite dans le code d'exemple, après utilisé les fonctions d'initialisations, tu doit faire appel un fois au fichier mp3, de souvenir ça doit être ça :

Code : Tout sélectionner

mp3_play(1); //renseigne toi bien sur la librairie  dfrobot mini
Image
Quel est cet artefact ? Un jeu hanté !
On a un message Gozerien, il faut le décrypter !

lzqdm.owwotm.kwu/file/d/1BI9TpXXM0K-pEHzBplydZfXZGfN7A2Y4/view?usp=sharing

Une année clé nous aiderai à décaler ces lettres. Mais laquelle ?
Avatar de l’utilisateur
Ghostbuster-BZH
Membre GBF
Membre GBF
Messages : 1055
Inscription : 23 mars 2019, 22:00
Pseudo XBOX Live : GB BZH
Localisation : Bretagne (22)

Re: Tutoriel électronique Arduino

Message par Ghostbuster-BZH »

protongamer a écrit :Alors sache que les modules dfrobots fonctionnent de cette manière, la sd doit contenir un dossier mp3, et dans ce dossier se trouve les fichiers mp3 nommé par des numéros, exemple : 0001.mp3, ensuite dans le code d'exemple, après utilisé les fonctions d'initialisations, tu doit faire appel un fois au fichier mp3, de souvenir ça doit être ça :

Code : Tout sélectionner

mp3_play(1); //renseigne toi bien sur la librairie  dfrobot mini
Bonjour ProtonGamer.
J'ai regardé tout ça, je vois bien quelles sont les commandes de base pour initialiser le module MP3 lancer la lecture des fichiers sons mais le problème c'est la complexité du code initial à modifier. On en revient à ce que je disais, on est bien au-delà du codage débutant là avec toutes ces conditions, ces boucles, ces délais,... Ca me dépasse complétement.
Tant pis, je ferai avec la carte SD basique et ton code initial, je laisse tomber l'idée du module MP3, je n'ai pas les compétences pour programmer ça.
Merci pour les infos et pour tout le reste.
CA A FAIT CHBOUM LA D'DANS

Image
Répondre