Faire un jeu Buzz Wire avec un Arduino

Dans ce projet amusant, nous allons apprendre à faire un jeu de fil à bulles avec l'Arduino. Beaucoup de pièces nécessaires peuvent être trouvés dans un kit de démarrage et autour de la maison.

Dans ce projet amusant, nous allons apprendre à faire un jeu de fil à bulles avec l'Arduino.  Beaucoup de pièces nécessaires peuvent être trouvés dans un kit de démarrage et autour de la maison.
Publicité

Dans ce projet amusant, nous allons apprendre à faire un jeu de fil à bulles avec l'Arduino. Ce qui est inclus dans un kit de démarrage Qu'est-ce qui est inclus dans un kit de démarrage Arduino? [MakeUseOf explique] Ce qui est inclus dans un kit de démarrage Arduino? [MakeUseOf Explains] J'ai déjà introduit l'Arduino. Le matériel source ici sur MakeUseOf, mais vous allez avoir besoin de plus que l'Arduino réel pour construire quelque chose à partir de là et effectivement commencer. "Trousses de démarrage" Arduino sont ... Lire la suite?) et autour de la maison. Ce projet utilise un Arduino, bien que vous puissiez utiliser presque tous les microcontrôleurs que vous avez autour (regardez cette comparaison entre $ 5 microcontrôleurs $ 5 Microcontrôleurs: Arduino, Raspberry Pi Zero, ou NodeMCU $ 5 Microcontrôleurs: Arduino, Raspberry Pi Zero, ou NodeMCU? Auparavant, si vous vouliez avoir un ordinateur, vous deviez réhypothéquer votre maison pour en payer le prix Maintenant, vous pouvez en obtenir un pour un Abraham Lincoln.

Découvrez le résultat final - il joue même de la musique:

De quoi as-tu besoin

Voici les principales pièces dont vous aurez besoin pour réaliser ce projet:

  • 1 x Arduino UNO ou similaire.
  • 1 x Cintre en métal.
  • 2 résistances de 220 ohms.
  • 1 x planche de bord.
  • 1 x buzzer piézo.
  • 2 x pinces crocodiles.
  • Gaine thermorétractable assortie.
  • Fils de raccordement mâle-mâle.

Elenco TL-6 Alligator Set de plomb, 10 pièces, 14 pouces Elenco TL-6 Alligator Set de plomb, 10 pièces, 14 pouces Acheter maintenant Chez Amazon $ 5.59

Voici quelques pièces optionnelles pour améliorer la construction:

  • 1 x buzzer piézo supplémentaire.
  • 1 x tige de goupille.
  • 1 écran quadruple à quatre segments.
  • 1 résistance de 220 ohms.
  • 1 x bouton momentané.
  • Fils de raccordement mâles-femelles.
  • Planche de bois (pour le cas).
  • Vis à bois assorties.

Presque n'importe quel Arduino fonctionnera, pourvu qu'il ait assez de broches. Jetez un oeil à ce guide d'achat Arduino Guide d'achat: Quel conseil d'administration devriez-vous obtenir? Guide d'achat Arduino: Quel conseil devriez-vous obtenir? Il y a tellement de différents types de cartes Arduino là-bas, vous seriez pardonné d'être confus. Lequel devriez-vous acheter pour votre projet? Laissez-nous vous aider, avec ce guide d'achat Arduino! Lire la suite si vous n'êtes pas sûr de ce dont vous avez besoin.

Le plan de construction

Arduino Buzzwire Terminé

Bien que cela puisse sembler complexe, c'est en fait un projet assez simple. Je vais commencer par le jeu de base, puis ajouter des composants supplémentaires pour augmenter la complexité. Vous pouvez "choisir et choisir" comme vous le souhaitez en fonction des composants dont vous disposez.

Le noyau de la mécanique se compose d'une forme de fil et une boucle sur une poignée. Le joueur doit guider la boucle autour du parcours sans que les deux touchent. Si les deux touchent, le circuit est terminé et l'avertisseur retentit. Il est bien sûr possible de construire ce circuit en n'utilisant pas de microcontrôleur, mais où se passe-t-il (et comment auriez-vous l'occasion d'écouter la chanson thème "Flying Circus" de Monty Python)?

Le cours

Cours Arduino Buzzwire

C'est la forme que le joueur devra guider dans sa boucle. C'est la base de tout le jeu, alors faites-le bien! J'ai choisi d'avoir une petite baisse, suivie d'une grande montée. Pliez un cintre en métal dans la forme dont vous avez besoin. Le fil de laiton ou le tube de cuivre fonctionnera également, bien qu'un cintre soit le moins cher.

Vous devrez peut-être porter des gants et utiliser des pinces ou un marteau pour obtenir des choses parfaites. Couper tout excès avec des coupe-boulons. Laissez deux montants verticaux pour pousser à travers la base. Vous voulez bien classer les extrémités coupées pour la sécurité. Enfin, couper deux morceaux de gaine thermorétractable et placer sur les extrémités comme suit:

Arduino Buzzwire Isolation

Ceci isolera la boucle du parcours en fournissant une zone de départ / fin ou de sécurité. Alternativement, ruban adhésif ou même une paille fera si vous n'avez pas de tube thermorétractable.

Maintenant, attachez un câble à une extrémité du parcours. Vous avez deux options ici: vous pouvez soit souder, soit utiliser un clip crocodile. Un clip de crocodile est l'option la plus facile, mais la soudure est une option plus fiable et à long terme. Assurez-vous de «rudoyer» la surface du cintre avec du papier de verre et utilisez beaucoup de flux. (Ne jamais soudé auparavant?) Apprenez à apprendre ici à souder, avec ces simples conseils et projets Apprenez à souder, avec ces simples conseils et projets Êtes-vous un peu intimidé par la pensée d'un fer chaud et de métal en fusion? pour commencer à travailler avec l'électronique, vous aurez besoin d'apprendre à souder.Laissez-nous vous aider.

Selon la taille du trou que vous percez dans la base à l'étape suivante, vous devrez peut-être faire passer le câble dans l'orifice de montage en premier. L'utilisation de deux fils torsadés ensemble augmentera la durabilité:

Fil torsadé Arduino
Utiliser une perceuse pour faire ceci aide beaucoup:

Fil de mandrin de perçage

La base

Boîtier Arduino Buzzwire

Il est temps de créer la base. Cela sert à maintenir le cours dans une position verticale, ainsi que de fournir un endroit pour ancrer l'électronique. J'ai utilisé des chutes de pin, bien que vous puissiez utiliser tout ce que vous avez autour de la maison - même une boîte en carton.

Couper trois morceaux pour former une forme de "n". Il suffit de visser (ou de coller) ces trois pièces ensemble. N'oubliez pas de percer un trou pilote dans les pièces latérales d'abord pour les empêcher de se fendre. Vous pouvez vouloir fraiser les vis (surtout si vous allez remplir et peindre), et je recommande fortement une mèche à fraiser. Si vous n'avez pas d'outil de fraisage ou d'alésage, un foret de plus grand diamètre fera l'affaire.

Percez deux trous suffisamment espacés pour que les extrémités du cours puissent s'asseoir. Fraisez le dessous prêt à être collé.

La poignée

Poignée Arduino Buzzwire
Maintenant, il est temps de faire la boucle / contrôleur. Twist un petit morceau du cintre à une extrémité pour créer une boucle avec une petite poignée en métal. Assurez-vous de limer le bord coupé, puis recouvrez-le de ruban adhésif / mousse si nécessaire.

Arduino Buzzwire Loop
Cela formera l'autre moitié du circuit - quand cette boucle touchera le parcours, elle complètera le circuit (exactement comme un interrupteur). Souder (ou utiliser un clip de crocodile) un autre fil au fond de celui-ci, exactement le même que vous avez fait précédemment pour le cours.

Couper une petite longueur de cheville pour la poignée réelle. Cette boucle en métal s'insère dans cette poignée. Si vous n'avez pas de cheville, vous pouvez arrondir un morceau de bois résineux carré à l'aide d'une ponceuse à bande ou à disque (vous pouvez également utiliser du papier de verre, mais cela prendrait beaucoup de temps).

Percez un trou à travers cette poignée. Cela doit être assez grand pour s'adapter à la boucle de métal et le fil à travers:

Trou de poignée Arduino Buzzwire
C'est possible de faire sur un exercice de pilier, même si c'est difficile. Un tour fera parfaitement le travail:

Goujon tour à poignée de Buzzwire

Oui, je suis tout à fait conscient qu'il s'agit d'un tour en métal (pour tout intéressé, c'est un tour d'horlogerie Boley des années 1930. Je pense que c'est un 3C, mais j'aimerais beaucoup avoir de vos nouvelles).

Vous pouvez également utiliser un stylo à bille avec le centre enlevé.

Enfin, utilisez de la colle chaude pour fixer le câble et la boucle dans la poignée. La colle chaude fournira un appareil puissant (mais pas permanent), donc c'est parfait pour cela.

Finir

Insérez le fil dans les trous de la base. N'oubliez pas d'ajouter la boucle / le contrôleur en premier. Utilisez à nouveau de la colle chaude pour fixer le cap à la base en remplissant les trous fraisés sur la face inférieure de la base comme suit:

Arduino Buzzwire à souder

Le circuit

Voici le circuit complet. Vous n'avez pas à rendre le vôtre aussi complexe que celui-ci - lisez la suite car nous décomposons chaque partie.

Circuit complet Arduino Buzzwire
Tout d'abord, connectez les deux éléments piezo aux broches numériques 10 et 11. La polarité n'a pas d'importance:

Circuit piézo-électrique Arduino
Vous n'avez pas besoin d'utiliser deux piezos - la seule raison pour laquelle je l'ai fait est d'avoir un son plus fort lorsque les fils se touchent. Connectez un côté à la broche numérique, et l'autre à la terre.

Maintenant branchez le cours de métal et manipulez:

Circuit Arduino Buzzwire
Encore une fois, peu importe de quel côté ces deux sont câblés. Cette partie du circuit est exactement comme un bouton ou un interrupteur - le joueur termine le circuit lorsque la boucle touche le parcours. Assurez-vous d'inclure les deux résistances.

Une résistance relie le circuit à la masse (appelée une résistance de pull-down), s'assurant qu'il n'est pas "flottant" (cela permet à l'Arduino de détecter le changement de circuit). L'autre résistance protège l'Arduino. Lorsque les deux parties se touchent, + 5V entre dans la broche numérique. Si cette résistance n'était pas présente il y aurait un court-circuit - votre ordinateur déconnecterait la prise USB pour tirer trop de courant si vous êtes chanceux .

Connectez le câble de signal (violet, sur le schéma) à la broche numérique 9.

Ensuite, connectez un bouton-poussoir à la broche numérique 2:

Circuit de bouton piézo Arduino

Enfin, connectez l'écran LED à sept segments:

Circuit à sept segments Arduino
Ce modèle particulier est de Seeed. Cela utilise un TM1637 pour piloter quatre écrans - cela signifie que seulement deux broches numériques sont nécessaires. Connectez GND à la terre Arduino et VCC à Arduino + 5V. Connectez le D10 à la broche numérique Arduino 13 et CLK à la broche numérique 12.

Le code

Pour que ce projet fonctionne, vous aurez besoin de deux fichiers supplémentaires. Le premier s'appelle pitches.h . Ce fichier met simplement en correspondance les noms des notes avec leur valeur piezo. Cela rend beaucoup plus facile d'écrire un morceau, car vous pouvez simplement dire "NOTE_C3" plutôt que "31", par exemple. C'est dans le domaine public, et est disponible sur le site Web d'Arduino ici. Suivez les instructions pour créer un nouveau fichier appelé pitches.h (en variante, collez le code dans votre script existant).

Ensuite, vous avez besoin d'une méthode pour réellement jouer des notes / mélodies sur le piezo. Cet article d'Anthony DiGirolamo sur Github contient le code dont vous avez besoin. Copiez tout entre "void buzz" et "}}" et collez-le dans votre fichier principal. Pour référence, voici:

 void buzz(int targetPin, long frequency, long length) { /* Buzzer example function by Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 */ long delayValue = 1000000/frequency/2; // calculate the delay value between transitions //// 1 second's worth of microseconds, divided by the frequency, then split in half since //// there are two phases to each cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i< numCycles; i++){ // for the calculated length of time... digitalWrite(targetPin, HIGH); // write the buzzer pin high to push out the diaphragm delayMicroseconds(delayValue); // wait for the calculated delay value digitalWrite(targetPin, LOW); // write the buzzer pin low to pull back the diaphragm delayMicroseconds(delayValue); // wait again for the calculated delay value } } 

La dernière bibliothèque dont vous avez besoin est de contrôler l'affichage à sept segments - vous pouvez ignorer cette étape si vous n'en utilisez pas. Cette bibliothèque s'appelle TM1637 et a été créée par Seeed, la même société qui a créé le tableau de bord.

Dans l'IDE Arduino, allez dans "Gérer les bibliothèques" ( Esquisse > Inclure la bibliothèque > Gérer les bibliothèques ). Cela fera apparaître le gestionnaire de la bibliothèque. Laissez-le quelques secondes pour mettre à jour puis recherchez dans le champ de recherche en haut à droite "TM1637". Deux bibliothèques seront trouvées - vous voulez "TM1637" et non "TM1637Display". Sélectionnez, puis cliquez sur "installer".

Une dernière tâche avec cette bibliothèque - ce n'est pas complet! En l'état, la bibliothèque peut uniquement afficher les chiffres 0-9 et les lettres A-F. Si cela couvre tout ce que vous souhaitez afficher, vous pouvez ignorer cette étape. Sinon, vous devrez modifier le code. Se détendre! Ce n'est pas aussi difficile que cela puisse paraître, et si vous pouvez écrire du code en utilisant l'IDE Arduino, vous pouvez le faire.

D'abord, ouvrez votre dossier de bibliothèque. Ce sera dans votre dossier Arduino. Sur Mac OS X, ceci se trouve dans /Users/Joe/Documents/Arduino/Libraries . Ouvrez le dossier appelé TM1637 . Vous devrez modifier le fichier appelé TM1637.cpp - vous pouvez ignorer l'autre fichier avec l'extension .h . Ouvrez ce fichier dans votre éditeur de texte favori (pour moi, c'est Sublime Text 3), le Bloc-notes ou l'IDE Arduino.

Modifiez la troisième ligne de code à partir de ceci:

 static int8_t TubeTab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};//0~9, A, b, C, d, E, F 

Pour ça:

 static int8_t TubeTab[] = { /* defaults */ 0x3f, // 0 0x06, // 1 0x5b, // 2 0x4f, // 3 0x66, // 4 0x6d, // 5 0x7d, // 6 0x07, // 7 0x7f, // 8 0x6f, // 9 0x77, // A -- 10 0x7c, // b -- 11 0x39, // C -- 12 0x5e, // d -- 13 0x79, // E -- 14 0x71, // F -- 15 /* additional */ 0x174, // h -- 16 0x176, // H -- 17 0x138, // L -- 18 0x15, // M -- 19 0x137, // n -- 20 0x73, // P -- 21 0x67, // q -- 22 0x131, // r -- 23 0x78, // t -- 24 0x240 // - 25 }; 

Vous pouvez maintenant enregistrer et fermer ce fichier. Après chaque élément, le commentaire décrit le caractère. La partie suivante du commentaire est l'index de l'élément.

Il est temps pour le code réel. Tout d'abord, incluez les deux bibliothèques mentionnées précédemment:

 #include #include 

Maintenant, créez l'objet d'affichage:

 TM1637 *_display = new TM1637(12, 13); 

Ne vous inquiétez pas si vous ne comprenez pas la syntaxe - cette ligne indique à l'Arduino que les broches 12 et 13 sont attachées à un affichage à sept segments, et de le configurer de manière appropriée.

La chanson est stockée dans la melody et le tempo . Ceux-ci contiennent toutes les notes et la durée de la note pour la musique. Si vous souhaitez modifier la musique, modifiez ces tableaux (bien que ce ne soit pas aussi simple que de coller dans les valeurs de note, le timing est une partie très importante de la musique). La variable songState stocke simplement la position de la dernière note jouée. Cela garantit que la mélodie est jouée du début à la fin, plutôt que de sauter de manière incohérente:

 int songState = 0; int melody[] = { NOTE_F4, ...} int tempo[] = { 8, ...} 

Notez que j'ai supprimé le contenu des tableaux, voir ci-dessous pour le code complet.

Ce code n'est pas bloquant - cela signifie que l'Arduino peut effectuer plusieurs tâches simultanément. Jetez un oeil à cette explication Arduino Delay Fonction, et pourquoi vous ne devriez pas utiliser la fonction de retard Arduino, et pourquoi vous ne devriez pas l'utiliser Alors que delay () est pratique pour les démonstrations de base de comment fonctionne Arduino, vous ne devriez vraiment pas être l'utiliser dans le monde réel. Voici pourquoi, et ce que vous devriez utiliser à la place. Lire la suite pour plus d'informations. Voici comment les minuteurs sont configurés:

 unsigned long previousMillis1 = 0; const long interval1 = 1500; 

La variable previousMillis1 sera mise à jour ultérieurement pour stocker l'heure actuelle. La variable interval1 stocke combien de temps attendre entre l'exécution du code - dans ce cas, 1, 5 secondes. Il est défini comme const, ce qui signifie qu'il est constant et ne changera jamais - cela permet à l'Arduino d'optimiser davantage le code.

Dans la fonction setup(), il y a quelques choses qui se passent. Premièrement, les entrées et sorties sont configurées. Cela doit être fait, donc l'Arduino sait ce qui est connecté à chacune de ses broches:

 pinMode(9, INPUT); // setup circuit pinMode(10, OUTPUT); // setup buzzer 1 pinMode(11, OUTPUT); // setup buzzer 2 pinMode(2, INPUT); // setup button 

Maintenant, l'affichage doit être configuré:

 _display->set(5); // set brightness _display->point(false); // remove colon _display->init(); // start display 

Les méthodes set, point et init sont toutes contenues dans l'objet _display . Au lieu d'un point, un pointeur ("->") est utilisé pour y accéder. Encore une fois, ne vous inquiétez pas de la syntaxe (bien que, si vous souhaitez en savoir plus, recherchez les pointeurs C ++).

La boucle principale a deux modes de jeu: défi et jeu libre. Le jeu libre permet au joueur de jouer un nombre illimité de fois. Le mode Défi règle une minuterie de 20 secondes en utilisant la méthode showCountdown . Il utilise le bouton pour démarrer et arrêter la minuterie. actuellement, la seule façon de changer les modes de jeu est d'éditer manuellement la variable appelée mode . Voyez si vous pouvez ajouter un autre bouton pour le faire et modifier le code de manière appropriée.

La méthode buzz joue les notes qui lui sont données. Ceci est utilisé en conjonction avec sing . La méthode de chant passe par chaque note et la joue. Cette méthode est appelée régulièrement, bien qu'elle ne joue la note suivante que lorsque le temps s'est écoulé depuis la dernière lecture. Une fois que la chanson a atteint la fin, elle réinitialise la chanson au verset 1 ( songState = 14 ). Vous pouvez régler ceci à zéro pour commencer la chanson au début, mais la raison de faire cela est de sauter l'introduction. L'introduction est jouée une fois que l'Arduino est sous tension, puis elle n'est plus jouée.

Les méthodes showFree et showPlay écrivent simplement les mots "FrEE" et "PLAY" sur l'affichage. Notez que le "r" dans free est en minuscules, lorsque tous les autres caractères sont en majuscules. C'est l'une des limitations de sept affichages de segment. Ils ne peuvent pas afficher toutes les lettres de l'alphabet, et certains des caractères qu'ils peuvent afficher doivent être mélangés.

La méthode toggleFreePlay clignoter l'affichage entre "FREE" et "PLAY". Encore une fois, il le fait de manière non bloquante.

Une autre méthode utile est showNumber . Cela écrit un nombre aux deux caractères du milieu de l'affichage comme ceci:

Affichage Arduino Buzzwire

L'affichage n'est pas assez intelligent pour savoir comment montrer de grands nombres, il doit être explicitement dit quoi faire. Cette méthode utilise une logique simple pour montrer le nombre approprié sur chaque caractère.

La dernière méthode utilisée s'appelle showCountdown . Cela commence un compteur à 20, et le diminue d'une seconde. Si cela atteint zéro, il bourdonne trois fois, pour indiquer que le temps est écoulé.

Voici tout ce code mis en place:

 #include // include display library #include // include pitches TM1637 *_display = new TM1637(12, 13); // create display object, 12 = CLK (clock), 13 = D10 (data) // music int songState = 0; int melody[] = { NOTE_F4, NOTE_E4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_A3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_C4, 0, NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_F4, NOTE_C4, NOTE_C4, NOTE_A3, NOTE_AS3, NOTE_AS3, NOTE_AS3, NOTE_C4, NOTE_D4, 0, NOTE_AS3, NOTE_G3, NOTE_G3, NOTE_G3, NOTE_FS3, NOTE_G3, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_AS3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_AS3, NOTE_C4, 0, NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_A4, NOTE_F4, NOTE_F4, NOTE_C4, NOTE_B3, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, 0, NOTE_G4, NOTE_E4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_D4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_C4, NOTE_B3, NOTE_C4, NOTE_B3, NOTE_C4, 0 }; int tempo[] = { 8, 16, 8, 16, 8, 16, 8, 16, 16, 16, 16, 8, 16, 8, 3, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 16, 12, 17, 17, 17, 8, 12, 17, 17, 17, 8, 16, 8, 16, 8, 16, 8, 1 }; // non blocking setup // free play unsigned long previousMillis1 = 0; // time words last changed const long interval1 = 1500; // interval between changing // music unsigned long previousMillis2 = 0; // time last changed const long interval2 = 100; // interval between notes int displayStatus = 0; // keep track of what's displayed int mode = 0; // keep track of game mode -- change to 0 or 1 for different modes bool countdown = false; unsigned long previousMillis3 = 0; // time last changed const long interval3 = 1000; // interval between countdown int count = 20; // challenge mode timer void setup() { // put your setup code here, to run once: pinMode(9, INPUT); // setup circuit pinMode(10, OUTPUT); // setup buzzer 1 pinMode(11, OUTPUT); // setup buzzer 2 pinMode(2, INPUT); // setup button _display->set(5); // set brightness _display->point(false); // remove colon _display->init(); // start display } void loop() { // put your main code here, to run repeatedly: if(mode == 0) { // challenge mode if(digitalRead(2) == HIGH) { delay(25); if(digitalRead(2) == HIGH) { countdown = true; // stop the countdown } else { countdown = false; // stop the countdown } } if(countdown) { showCountdown(); // advance countdown } } else { // free play toggleFreePlay(); } if(digitalRead(10) == HIGH) { delay(25); if(digitalRead(10) == HIGH) { while(digitalRead(10) == HIGH) { buzz(11, NOTE_B0, 1000/24); } } } else sing(); } void showCountdown() { // countdown the time remaining unsigned long currentMillis = millis(); // current time if (currentMillis - previousMillis3>= interval3) { previousMillis3 = currentMillis; --count; showNumber(count); if(count == 0) { // game over countdown = false; count = 20; // reset countdown // buzz 3 times buzz(11, NOTE_B0, 1000/24); delay(100); buzz(11, NOTE_B0, 1000/24); delay(100); buzz(11, NOTE_B0, 1000/24); } } } void showNumber(int number) { // show numbers (maximum 99) on display _display->display(0, 25); // write - to segment 1 _display->display(3, 25); // write - to segment 4 // write number to middle of display if(number == 10) { _display->display(1, 1); _display->display(2, 0); } else if(number>9) { _display->display(1, 1); int newVal = number - 10; _display->display(2, newVal); } else { _display->display(1, 0); _display->display(2, number); } } void toggleFreePlay() { // scroll between words without blocking unsigned long currentMillis = millis(); // current time if (currentMillis - previousMillis1>= interval1) { previousMillis1 = currentMillis; if(displayStatus == 1) showPlay(); else showFree(); } } void showPlay() { // write "PLAY" to the display _display->display(0, 21); // write P to segment 1 _display->display(1, 18); // write L to segment 2 _display->display(2, 10); // write A to segment 3 _display->display(3, 4); // write Y to segment 4 displayStatus = 2; } void showFree() { // write "Free" to the display _display->display(0, 15); // write F to segment 1 _display->display(1, 23); // write r to segment 2 _display->display(2, 14); // write E to segment 3 _display->display(3, 14); // write E to segment 4 displayStatus = 1; } void buzz(int targetPin, long frequency, long length) { /* Buzzer example function by Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 */ long delayValue = 1000000/frequency/2; // calculate the delay value between transitions //// 1 second's worth of microseconds, divided by the frequency, then split in half since //// there are two phases to each cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i = interval2) { previousMillis2 = currentMillis; int noteDuration = 1000 / tempo[songState]; buzz(10, melody[songState], noteDuration); int pauseBetweenNotes = noteDuration; delay(pauseBetweenNotes); // stop the tone playing: buzz(10, 0, noteDuration); ++songState; // start song again if finished if(songState>79) { songState = 14; // skip intro } } } 

Enregistrez ce fichier en tant que "buzzwire" ( Fichier> Enregistrer sous ), puis téléchargez-le sur votre forum ( Fichier> Télécharger ). Si vous n'êtes pas sûr de savoir comment télécharger l'Arduino, ou si ce code a l'air un peu effrayant, jetez un coup d'œil à notre Guide des débutants Arduino Initiation à Arduino: Guide du débutant Initiation à Arduino: Guide du débutant Arduino est un logiciel libre plate-forme de prototypage électronique basée sur du matériel et des logiciels flexibles et faciles à utiliser. Il est destiné aux artistes, designers, amateurs et toute personne intéressée par la création d'objets ou d'environnements interactifs. Lire la suite . Tout va bien, vous devriez maintenant avoir votre propre jeu de fil de buzz - cool!

Si vous avez fait quelque chose de cool après avoir lu ceci, j'aimerais voir - laissez-moi savoir dans les commentaires ci-dessous!

In this article