Mise à jour (2 janvier 2017): Le site miduino dont on parle dans cet article n'existe plus. Conséquence fâcheuse: cet article n'a plus le moindre intérêt.
Avez-vous déjà essayé de faire jouer une musique par votre Arduino, en utilisant uniquement l'instruction "tone()"? Même pour une très courte mélodie, votre patience risque d'être mise à rude épreuve! De plus, le résultat sera inévitablement monophonique: il est impossible de jouer plus d'une note à la fois.
Mais tout ça n'est peut-être qu'un mauvais souvenir grâce à miduino.net, un outil en ligne gratuit mis au point par Connor Nishijima.
Voilà comment ça fonctionne: vous préparez votre mélodie sous la forme d'un fichier MIDI (ou vous trouvez un fichier MIDI tout fait: ils pullulent sur le web...). Seules restrictions, pour l'instant: votre fichier ne doit pas comporter de percussions, ni excéder 1 MB (ce qui n'a rien de troublant, le fichier MIDI ne fait généralement que quelques dizaines de kB...).
Vous vous rendez ensuite sur miduino.net pour uploader votre fichier MIDI, en indiquant votre adresse email et votre modèle d'Arduino (car le sketch produit utilisera au maximum le nombre de timers disponibles sur votre modèle). À l'autre bout, un Raspberry Pi se charge de transformer votre fichier midi en un sketch Arduino, qui vous sera livré par email dans les secondes suivantes!
Ensuite, vous installez la librairie "Playtune" de Len Shustek, vous uploadez le sketch dans votre Arduino, et vous faites jouer la mélodie à travers un haut-parleur branché aux sorties spécifiées dans le sketch (pour l'Arduino méga, que j'utilisais, il s'agissait des pins 43, 45, 47, 49, 51 et 53).
Évidemment, le résultat sonnera comme un jeu vidéo des années 1980...
Rapide, efficace, et entièrement gratuit!
Yves Pelletier (@ElectroAmateur)
dimanche 27 octobre 2013
mercredi 23 octobre 2013
Mouvement de va-et-vient
Il s'agit d'une décoration d'Halloween, encore une fois, mais le principe peut certainement être appliqué à autre chose. Cette fois, mon fils m'a mis au défi de faire voler une sorcière suspendue à une ficelle horizontale, sur une distance d'un mètre ou deux. Le mouvement doit se répéter automatiquement.
Solution retenue: la ficelle est utilisée comme une courroie qui passe par un moteur DC à une de ses extrémités, et une poulie à l'autre extrémité (un peu comme une corde à linge). Près de chaque extrémité, on place également une LED infrarouge et un phototransistor: lorsque la sorcière passe entre la LED et le phototransistor, un Arduino se chargera d'inverser le sens de rotation du moteur pour que la sorcière retourne à son point de départ.
Connexions des capteurs
Chaque LED infrarouge est alimentée au moyen de l'alimentation 5 V de l'Arduino. Comme toujours, il faut la placer en série avec une résistance de protection (j'ai utilisé 220 Ω). Le courant doit entrer dans la LED par sa broche la plus longue, qui doit donc se trouver du côté 5 V.
Les deux phototransistors sont branchés en émetteur commun: l'émetteur (la plus longue des deux broches) est donc relié à la masse:
La sortie du premier phototransistor est reliée à l'entrée 7 de l'Arduino, et celle du deuxième phototransistor est reliée à l'entrée 8 de l'Arduino.
Connexions du moteur
Pour contrôler le moteur, j'ai utilisé un L293D (il n'est utilisé qu'à moitié, puisqu'il est conçu pour contrôler deux moteurs):
Ne pas oublier de brancher ensemble toutes les masses (GND): les 4 pins du L293D, celle de l'Arduino, celle de l'alimentation du moteur, celle des LEDs et des photodiodes.
Le sketch
Le sketch n'est pas spécialement compliqué: lorsque la sorcière passe entre une LED et son phototransistor (ce qui indique qu'elle a atteint une des extrémités de son parcours), l'Arduino ordonne au moteur de changer son sens de rotation.
Yves Pelletier (@ElectroAmateur)
Solution retenue: la ficelle est utilisée comme une courroie qui passe par un moteur DC à une de ses extrémités, et une poulie à l'autre extrémité (un peu comme une corde à linge). Près de chaque extrémité, on place également une LED infrarouge et un phototransistor: lorsque la sorcière passe entre la LED et le phototransistor, un Arduino se chargera d'inverser le sens de rotation du moteur pour que la sorcière retourne à son point de départ.
Connexions des capteurs
Chaque LED infrarouge est alimentée au moyen de l'alimentation 5 V de l'Arduino. Comme toujours, il faut la placer en série avec une résistance de protection (j'ai utilisé 220 Ω). Le courant doit entrer dans la LED par sa broche la plus longue, qui doit donc se trouver du côté 5 V.
Les deux phototransistors sont branchés en émetteur commun: l'émetteur (la plus longue des deux broches) est donc relié à la masse:
La sortie du premier phototransistor est reliée à l'entrée 7 de l'Arduino, et celle du deuxième phototransistor est reliée à l'entrée 8 de l'Arduino.
Connexions du moteur
Pour contrôler le moteur, j'ai utilisé un L293D (il n'est utilisé qu'à moitié, puisqu'il est conçu pour contrôler deux moteurs):
Ne pas oublier de brancher ensemble toutes les masses (GND): les 4 pins du L293D, celle de l'Arduino, celle de l'alimentation du moteur, celle des LEDs et des photodiodes.
Le sketch
Le sketch n'est pas spécialement compliqué: lorsque la sorcière passe entre une LED et son phototransistor (ce qui indique qu'elle a atteint une des extrémités de son parcours), l'Arduino ordonne au moteur de changer son sens de rotation.
Yves Pelletier (@ElectroAmateur)
samedi 19 octobre 2013
Contrôler un Arduino en tapant des mains
En 1986, un gadget appelé "Clapper" fut mis sur le marché et obtint un certain succès grâce à des publicités télévisées: plus la peine de vous déplacer jusqu'à un interrupteur lorsque vous désiriez allumer ou éteindre les lumières, il suffisait de taper deux fois dans les mains... Le message publicitaire ci-dessous vous montre à quel point le Clapper rendait son propriétaire heureux... (le secret du bonheur enfin révélé!)
En plus d'un microcontrôleur (ST 6210) qui détectait les "claps" en fonction de leur intensité sonore et leur durée, le Clapper était muni de trois étages de filtres afin de ne considérer que les fréquences sonores pertinentes (voir ici pour plus d'informations sur le Clapper).
Il est très facile de faire en sorte que votre Arduino exécute une action lorsque vous tapez des mains. Pour ce faire, vous devez évidemment le munir d'un microphone. J'ai utilisé un micro à électret rattaché à un petit circuit d'amplification dont le schéma se trouve ici (je l'avais utilisé dans une précédente rubrique pour visualiser des sons à l'écran d'un oscilloscope). Mais vous pouvez opter pour une solution toute faite comme ce breakout commercialisé par Sparkfun ou chercher "Arduino Sound Sensor" sur eBay: n'importe quel capteur sonore de ce genre devrait faire l'affaire.
Côté logiciel, je vous suggère l'excellent sketch mis au point par Manoj Kunthu. Après l'avoir installé dans votre Arduino, il ne reste plus qu'à acheminer le signal sonore du microphone à l'entrée analogique A0, et à brancher une LED à chacune des sorties numériques suivantes: 10, 11 et 12.
Lorsque vous tapez des mains une première fois, la LED 11 s'allume pendant environ une seconde. Si vous tapez des mains une seconde fois à l'intérieur du délai requis, la LED 12 s'allume également pendant un bref instant, et la LED 10 s'allume (et demeure allumée: pour l'éteindre, vous devez à nouveau taper des mains deux fois de suite).
Bien sûr, vous devrez probablement ajuster les réglages de votre amplificateur (ou les paramètres du sketch) pour ajuster la sensibilité (vous ne voulez pas que l'Arduino réagisse au moindre son ambiant, ni qu'il soit trop dur d'oreille...).
L'utilisation conventionnelle du dispositif consiste à placer un relais à la sortie numérique numéro 10, de façon à contrôler l'alimentation d'un appareil électrique (éclairage ou autre), mais ça peut être bien d'autres choses. Par exemple: votre robot qui exécute une action particulière lorsque vous tapez des mains, etc.
Yves Pelletier (Twitter: @ElectroAmateur)
En plus d'un microcontrôleur (ST 6210) qui détectait les "claps" en fonction de leur intensité sonore et leur durée, le Clapper était muni de trois étages de filtres afin de ne considérer que les fréquences sonores pertinentes (voir ici pour plus d'informations sur le Clapper).
Côté logiciel, je vous suggère l'excellent sketch mis au point par Manoj Kunthu. Après l'avoir installé dans votre Arduino, il ne reste plus qu'à acheminer le signal sonore du microphone à l'entrée analogique A0, et à brancher une LED à chacune des sorties numériques suivantes: 10, 11 et 12.
Lorsque vous tapez des mains une première fois, la LED 11 s'allume pendant environ une seconde. Si vous tapez des mains une seconde fois à l'intérieur du délai requis, la LED 12 s'allume également pendant un bref instant, et la LED 10 s'allume (et demeure allumée: pour l'éteindre, vous devez à nouveau taper des mains deux fois de suite).
Bien sûr, vous devrez probablement ajuster les réglages de votre amplificateur (ou les paramètres du sketch) pour ajuster la sensibilité (vous ne voulez pas que l'Arduino réagisse au moindre son ambiant, ni qu'il soit trop dur d'oreille...).
L'utilisation conventionnelle du dispositif consiste à placer un relais à la sortie numérique numéro 10, de façon à contrôler l'alimentation d'un appareil électrique (éclairage ou autre), mais ça peut être bien d'autres choses. Par exemple: votre robot qui exécute une action particulière lorsque vous tapez des mains, etc.
Yves Pelletier (Twitter: @ElectroAmateur)
Inscription à :
Articles (Atom)



