Dans ce projet, nous allons créer un élément de divertissement en utilisant Arduino. Nous avons tous l'habitude d'appuyer sur Table ou Pen pour créer une musique aléatoire. Bien sûr, cela peut ne pas être considéré comme un bon maniérisme, mais nous aimons tous le faire au moins une fois. C'est pourquoi j'ai pensé à passer au niveau supérieur en utilisant la capacité d'Arduino à jouer des sons. Une fois que vous avez construit ce projet, vous pourrez générer des sons en tapotant vos doigts sur tout ce qui est conducteur et créer vos propres rythmes, c'est comme jouer du piano sur votre paume. Cela semble cool, alors construisons-le.
Composants requis:
Les matériaux requis pour ce projet sont énumérés ci-dessous, il n'est pas obligatoire de s'en tenir au même. Une fois que vous avez saisi le concept, vous pouvez utiliser votre propre façon de le construire.
- Arduini Pro Mini
- Haut-parleur Peizo
- Capteur Flex
- Gants de doigt
- Résistances 10K
- Transistors BC547
- Batterie 9V
Schéma de circuit et explication:
Le schéma de circuit de cet Arduino Palm Piano est illustré ci-dessous.
Le projet utilise un total de quatre capteurs, soit deux capteurs flexibles et deux paires Darlington agissant comme capteur tactile. Nous avons également utilisé deux résistances pull down R1 et R2 de valeur 10k chacune, qui agiront comme une résistance pull down pour le capteur Flex. Ici, le capteur Flex est utilisé pour générer trois tonalités différentes en utilisant un doigt, en fonction de son pliage. On peut donc produire 6 sons à l'aide de deux doigts. En savoir plus sur le capteur Flex.
Paire de Darlington:
Avant de continuer, il est important de savoir ce qu'est un Darlington et comment cela fonctionne exactement dans notre projet. La paire de Darlington peut être définie comme deux transistors bipolaires connectés de telle sorte que le courant amplifié par le premier soit encore amplifié par le second transistor. Une paire Darlington est montrée dans l'image ci-dessous:
Comme montré ci-dessus, nous avons utilisé deux transistors BC547 dont les collecteurs sont liés pour se rassembler et l'émetteur du premier transistor est connecté à la base du deuxième transistor. Ce circuit agit comme un amplificateur avec un gain, ce qui signifie que tout petit signal donné à la base du premier transistor suffit à polariser la base du deuxième transistor. Notre corps agit ici comme une masse, donc chaque fois que nous touchons la base du transistor, le deuxième transistor est polarisé. En utilisant cela en notre faveur, nous avons construit le capteur tactile pour ce projet.
Les broches numéro 2 et 3 sont les broches d'interruption de l'Arduino qui seront tirées haut à l'aide de résistances de rappel internes, puis ces broches seront maintenues à la terre chaque fois que le commutateur Darlington se ferme. De cette façon, chaque fois que nous touchons le fil (à partir de la base du 1 er transistor), une interruption sera déclenchée depuis l'Arduino.
L'utilisation de deux doigts ne peut produire que deux types de tonalités, c'est pourquoi j'ai également ajouté un capteur flexible qui modifiera le ton en fonction de sa flexion. J'ai programmé pour produire trois tons différents par doigt en fonction de combien le doigt (capteur flexible) est plié. Vous pouvez augmenter le nombre si vous souhaitez avoir plus de tons au bout de vos doigts.
J'ai fait la planche complète sur une planche de perf pour qu'elle s'adapte facilement à mes paumes, mais vous pouvez également utiliser une planche à pain. Assurez-vous simplement que votre corps touche le sol du circuit à un moment donné. Une fois que vous avez tout soudé, cela devrait ressembler à ceci
J'ai utilisé deux gants pour sécuriser les fils de la paire Darlington et le capteur flexible en position comme indiqué ci-dessus. Vous pouvez trouver votre propre idée (meilleure si possible) pour les mettre en place pendant que vous jouez vos sons.
Programmation Arduino:
Le programme de ce générateur de tonalité Arduino Tap est assez simple. Nous devons juste rechercher les interruptions des fils Darlington et si vous en trouvez une, nous devons jouer un son qui dépend de la quantité de flexion du capteur. Le code complet est donné à la fin de cet article mais j'ai expliqué quelques éléments importants ci-dessous.
Remarque: Ce programme fonctionne avec l'aide de la bibliothèque «pitches.h». Assurez-vous donc d'avoir ajouté le fichier d'en-tête à votre programme avant de le compiler. Vous pouvez télécharger le fichier d'en-tête pitches.h à partir d'ici.
Dans la fonction de configuration , nous initialisons les broches 2 et 3 comme entrée avec des résistances de rappel. Nous les déclarons également comme des broches d'interruption et exécutons le tone1 () lorsqu'il y a une interruption sur la broche 2 et la fonction tone2 () lorsqu'il y a une interruption sur la 3 ème broche. Ces interruptions seront déclenchées chaque fois que ces broches deviennent BAS à partir de leur état tiré vers le haut.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
À l'intérieur de la fonction de boucle , nous vérifions constamment à quel point le capteur flexible est plié. Mon FlexSensor 1, par exemple, a donné des valeurs autour de 200 lorsqu'il est laissé à plat et est descendu jusqu'à 130 lorsque je l'ai plié à son maximum, j'ai donc mappé la valeur de 200 à 130 comme 1 à 3 car je dois jouer 3 types différents des tons. Vous devez modifier ces deux lignes en fonction des valeurs de votre capteur Flex et du nombre de tonalités.
boucle vide () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Mappez avec vos propres valeurs basées sur votre capteur flexible flexSensor2 = map (analogRead (A1), 170,185,1,3); // Cartographie avec vos propres valeurs en fonction de votre capteur flex}
Comme nous l'avons vu précédemment, la fonction tone1 () sera exécutée lorsqu'une interruption est détectée sur la broche 2. Ce qui se passe dans la fonction tone1 () est montré ci-dessus. Nous examinons les valeurs de FlexSensor1 et jouons une tonalité basée sur la valeur flexSesnor. Les sons seront joués à l'aide de la fonction Tone d'Arduino. Nous avons expliqué la fonction tone () dans notre projet précédent.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); else if (flexSensor1 == 2) tone (8, NOTE_A3,50); else if (flexSensor1 == 3) ton (8, NOTE_G4,50); autre ton (8, NOTE_D4,50); }
La ligne ci-dessous est utilisée pour jouer le son. Vous pouvez jouer n'importe quel son disponible dans le fichier d'en-tête «pitches.h». La ligne ci-dessus, par exemple, lit le NOTE_A3 sur la broche pendant une durée de 50 milli secondes.
ton (8, NOTE_A3,50); // tone (PinNum, nom de la note, durée);
Travail:
Une fois que votre matériel est prêt, téléchargez le code et montez-le sur vos doigts. Assurez-vous que votre corps touche le sol du circuit à un moment donné. Maintenant, touchez simplement n'importe quel matériau conducteur ou votre corps et vous devriez pouvoir entendre le ton respectif. Vous pouvez jouer votre propre mélodie ou musique en appuyant à différents intervalles et à différentes positions.
La vidéo ci - dessous montre le fonctionnement complet du projet. J'espère que vous avez apprécié la construction du projet, toutes vos suggestions ou questions peuvent être publiées dans la section commentaires ci-dessous. Consultez également notre projet Arduino Audio Player et Arduino Tone Generator.