Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Jouer « Joyeux Anniversaire » en Polyphonie 3 Voies sur Arduino Nano – Démo Mélodie Infinie Synchronisée Lumière

Composants et fournitures

Composant Quantité
Arduino Nano R3 1

Applications et services en ligne

À propos de ce projet

Jouez le thème « Joyeux anniversaire » en polyphonie sur Arduino Nano avec trois buzzers sur une seule mini plaque d'essai.

Démonstration

Branchez ce montage sur n'importe quelle source d'alimentation USB (pas seulement un ordinateur) et il jouera la mélodie « Joyeux anniversaire » indéfiniment... ou presque... jusqu'à ce que vous en ayez vraiment marre !

Les LEDs clignotent en rythme avec chaque changement de note sur le canal/buzzer correspondant.

Schéma de câblage

L'idée était de réaliser un dispositif ultra-compact avec (presque) aucune soudure. J'ai réussi à tout caser sur une minuscule plaque d'essai :

L'Arduino Nano s'insère PARFAITEMENT dans ce type de plaque, permettant de connecter des composants supplémentaires des deux côtés.

Je suis trop paresseux pour dessiner des schémas, mais les gros plans ci-dessous suffisent amplement pour comprendre le montage.

Détails importants :

À propos du programme

Le code complet est fourni ci-dessous. Vous devez installer la bibliothèque « Tone » supplémentaire pour compiler le sketch :

Télécharger la bibliothèque Tone (fermez la fenêtre d'inscription si elle apparaît).

Installation : dans l'IDE Arduino, Croquis → Inclure une bibliothèque → Ajouter la bibliothèque .ZIP... et sélectionnez le fichier téléchargé.

Cette bibliothèque permet la génération simultanée de plusieurs tons sur un seul contrôleur (elle utilise des timers matériels et interruptions supplémentaires « sous le capot »). C'est une sorte de « multitâche artisanal » sur un seul cœur sans OS.

Auteur de la bibliothèque : Bhagman | GitHub : https://github.com/bhagman/Tone

Avertissement : Mon code est volumineux et difficile à lire, car il faut « jongler » avec trois « threads » de mélodie indépendants depuis un seul flux d'instructions linéaire. J'avais pensé le refactoriser pour séparer les mélodies et le réutiliser pour d'autres chansons... mais je ne l'ai probablement pas fait. Bonne chance ! Tout retour est apprécié.

Code

N'oubliez pas d'installer la bibliothèque Tone !

#include <Tone.h>
Tone solo; Tone bass; Tone rythm;
const int t = 600; // durée noire
const int tt = t*2;
const int t14 = round(t*1/4);
const int t24 = round(t*2/4);
const int t34 = round(t*3/4);
const int bassLedPin = 15; // A1
const int rythmLedPin = 17; // A3
const int soloLedPin = 19; // A5

void wait(Tone t) { while (t.isPlaying()) { } }

int bassLedState = LOW;
void switchBassLed() { bassLedState = !bassLedState; digitalWrite(bassLedPin, bassLedState); }
int rythmLedState = LOW;
void switchRythmLed() { rythmLedState = !rythmLedState; digitalWrite(rythmLedPin, rythmLedState); }
int soloLedState = LOW;
void switchSoloLed() { soloLedState = !soloLedState; digitalWrite(soloLedPin, soloLedState); }

void setup(void) {
  pinMode(14, OUTPUT); // A0 - masse LED
  pinMode(16, OUTPUT); // A2 - masse LED
  pinMode(18, OUTPUT); // A4 - masse LED
  pinMode(bassLedPin, OUTPUT);
  pinMode(rythmLedPin, OUTPUT);
  pinMode(soloLedPin, OUTPUT);
  pinMode(2, OUTPUT);  // masse buzzer solo
  pinMode(9, OUTPUT);  // masse buzzer rythm
  solo.begin(6);   // signal buzzer solo
  bass.begin(12);  // signal buzzer bass
  rythm.begin(0);  // signal buzzer rythm
  solo.play(NOTE_D4, t34); switchSoloLed(); wait(solo);
  solo.play(NOTE_D4, t14); switchSoloLed(); wait(solo);
}

void loop(void) {
  // La séquence complète de notes suit...
  // (Code tronqué pour la lisibilité - voir le projet original pour la version complète)
  // Structure : bass.play(), rythm.play(), solo.play() avec switchLed() et wait() entre chaque
}

Note : La fonction loop() complète contient toute la séquence note par note de « Joyeux anniversaire » sur trois canaux. Consultez le projet original pour le code intégral.

Processus de fabrication

  1. Capteur CO2 K30 : Surveillance en temps réel de la qualité de l'air intérieur
  2. Faciliter la communication sourd-aveugle avec 1Sheeld et Arduino
  3. Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
  4. Robe Connectée : Surveillance du Rythme Cardiaque et LEDs avec Arduino Nano, CrazyCircuits et DFRobot
  5. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  6. Intégrer un capteur d'empreintes capacitif DFRobot (ID809) avec Arduino ou ESP8266
  7. Station météo interactive Nextion HMI avec Arduino Mega et capteurs
  8. Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega
  9. Contrôler 2 moteurs pas-à-pas avec Arduino Nano et joystick – Tutoriel Visuino