Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-23 14:45
Il s'agit de mon premier instructable, alors soyez indulgent avec moi.
J'adore faire de la musique, et dans des situations live comme des concerts de salon, j'aime quand il y a des effets de lumière en phase avec ce que je joue. J'ai donc construit une boîte basée sur Arduino qui fait s'allumer une bande LED dans une couleur aléatoire lorsque je frappe une note sur mon clavier MIDI, et où je frappe la note.
Fournitures
- Arduino Uno
- Protoshield Arduino
- prise MIDI
- 1N4148 diode
- Optocoupleur 6N138
- résistances: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
- Bande LED WS2812B (60 LED)
- quelques restes de fils
- Gaine thermorétractable
- boîtier adapté pour l'Arduino (j'utilise une boîte de jonction en plastique)
Vous aurez également besoin
- fer à souder et soudure
- Clavier MIDI et câble MIDI
Étape 1: L'électronique
Le circuit est assez simple. Il se compose d'une entrée MIDI standard (à gauche de l'Arduino) et de la connexion à la bande LED (à droite de l'Arduino). Placez toutes les pièces sur le protoshield, il y a beaucoup d'espace. Il est généralement recommandé d'utiliser une alimentation externe pour alimenter la bande LED, mais j'ai trouvé que lorsque vous jouez, seules quelques LED sont allumées en même temps, donc il y avait aucun problème pour utiliser l'Arduino +5V / GND comme sortie d'alimentation. (Essayez d'éviter d'appuyer sur toutes les touches en même temps et à pleine vitesse.;-)) Si vous décidez d'utiliser une alimentation externe, connectez-la simplement aux broches Arduino +5V et GND. Certaines personnes recommandent d'insérer un condensateur de 100 uF (non représenté sur le schéma) entre ces deux lignes.
Soudez les pièces au protoshield et connectez la bande LED comme indiqué sur le schéma.
Étape 2: connexion de la bande LED
Il est important de connecter l'extrémité droite - l'extrémité d'entrée - de la bande LED au circuit. Ma bande a un connecteur femelle comme entrée, et a de petits triangles tout le long pointant loin de l'entrée. En sortie, il y avait un connecteur mâle (pour pouvoir le brancher sur une autre réglette, dont on n'a pas besoin), donc je l'ai coupé et soudé aux trois câbles venant de l'Arduino. Utilisez un tube thermorétractable pour attacher les trois câbles à la bande LED ensemble et pour les rendre moins visibles.
La bande LED que j'ai utilisée est livrée avec du ruban adhésif à l'arrière, elle peut donc facilement être collée à l'arrière du clavier MIDI.
Étape 3: Adapter le projet à votre clavier
Vous devrez peut-être adapter la bande LED et le code Arduino à votre clavier. Le mien a 76 touches et la longueur de la bande correspond presque exactement à la largeur du clavier. Si vous avez par ex. 61 touches, vous aurez peut-être besoin d'une bande plus courte. La bande LED peut être coupée entre deux LED. Assurez-vous simplement que vous coupez la bonne partie, elle a une extrémité d'entrée (avec un connecteur femelle) et une extrémité de sortie (avec un connecteur mâle), vous devez garder l'extrémité d'entrée. Dans le code, modifiez le #defines pour
- NUMBER_OF_LEDS au nombre de LED restantes dans votre bande après avoir coupé l'extrémité,
- NUMBER_OF_KEYS au nombre de touches de votre clavier, et
- MIN_KEY au numéro de pitch MIDI de votre touche la plus basse. Vous pouvez le trouver dans le manuel d'utilisation du clavier; ou utilisez un outil qui affiche le numéro de note MIDI, comme KMidiMon pour Linux, ou Pocket MIDI pour Windows ou Mac; ou essayez différentes valeurs jusqu'à ce que l'appareil réponde à toutes les touches de votre clavier
Étape 4: Le code Arduino
Le code Arduino utilise la bibliothèque MIDI (v4.3.1) de Forty Seven Effects et la bibliothèque Adafruit NeoPixel (v1.3.4) d'Adafruit. Installez ces bibliothèques à l'aide de l'IDE Arduino. Compilez ensuite le code et téléchargez-le sur l'Arduino sans le blindage connecté (l'optocoupleur est connecté à la broche RX, ce qui empêche le téléchargement). Alimentez l'Arduino via un câble USB (j'utilise une verrue murale USB).
Si vous souhaitez modifier le code à votre guise, voici un bref aperçu de son fonctionnement: Dans chaque boucle, l'entrée MIDI est lue. Si un événement Note On ou Note Off a été reçu, les fonctions MyHandleNoteOn ou MyHandleNoteOff sont appelées. Ils appellent tous les deux la fonction updateVelocityArray, qui stocke la vélocité (c'est-à-dire la force avec laquelle vous avez appuyé sur la touche) du numéro de la touche. Si la vélocité est supérieure à ce qui était stocké auparavant, la couleur de la LED correspondante est réglée sur la "couleur actuelle". Une fois les événements MIDI traités, la fonction updateLedArray est appelée. Cela met à jour la "couleur actuelle" (dont les valeurs rouge, verte et bleue changent indépendamment de manière linéaire, jusqu'à ce que l'extrémité inférieure ou supérieure soit atteinte, auquel point la vitesse du changement linéaire est définie sur un nombre aléatoire), réduit lentement la vélocité des notes enfoncées et met à jour les valeurs de couleur de chaque LED qui doit changer de couleur (en raison d'une nouvelle frappe de note ou d'une réduction de la vélocité). La fonction showLedArray transfère les couleurs à la structure Adafruit_NeoPixel appelée "pixels" et fait que les LED réelles affichent les couleurs dans la structure des pixels.
Étape 5: Améliorations possibles…
Un projet n'est jamais terminé. Il y a toujours quelque chose à faire pour l'améliorer:
- Le protoshield contient si peu de pièces que c'est vraiment du gâchis; on pourrait facilement obtenir le même effet avec un Arduino Nano et un PCB 15x7 trous plus quelques en-têtes de broches femelles.
- Certains signaux MIDI sont perdus. S'il s'agit d'un NoteOn, la LED correspondante ne s'allumera pas; si c'est un NoteOff, il ne s'éteindra pas (c'est pourquoi j'ai introduit la réduction de vélocité, qui garantit que les LED ne resteront pas allumées indéfiniment). J'essaye toujours de comprendre la raison. C'est peut-être un problème de synchronisation, et MIDI.read() devrait être appelé plus souvent.
- Certains signaux MIDI sont mal lus, c'est-à-dire que les mauvaises LED s'allument. Peut être lié au point ci-dessus. A besoin d'une enquête.
- Le circuit est conçu pour donner un effet visuel agréable sans trop d'interaction avec l'utilisateur (à part jouer au clavier). Cependant, je pourrais imaginer ajouter un potentiomètre lu (à l'aide de l'une des entrées analogiques de l'Arduino) avec lequel vous pouvez modifier la vitesse maximale à laquelle les couleurs changent (actuellement #define'd as MAX_COLOR_CHANGE_SPEED = 20). Ou mesurez le temps moyen entre deux événements NoteOn et modifiez MAX_COLOR_CHANGE_SPEED en conséquence - dans les chansons lentes, la couleur devrait changer plus lentement.
Étape 6: terminé
Alimentez l'Arduino via un câble USB (j'utilise une verrue murale USB). Connectez votre clavier MIDI à la prise MIDI et commencez à jouer. Regardez-moi jouer un peu de musique légère (jeu de mots, aussi mauvais soit-il, voulu).
Conseillé:
Lumière d'horloge à affichage matriciel à bande LED contrôlée par WiFi : 3 étapes (avec images)
Lumière d'horloge à affichage matriciel à bande LED contrôlée par WiFi : bandes LED programmables, par ex. basé sur WS2812, sont fascinants. Les applications sont multiples et vous pouvez rapidement obtenir des résultats impressionnants. Et d'une certaine manière, la construction d'horloges semble être un autre domaine auquel je pense beaucoup. En commençant par une certaine expérience dans
Bande Led RVB contrôlée par RC : 4 étapes (avec photos)
Bande LED RVB contrôlée par RC : créez votre propre bande LED contrôlée par rc pour l'éclairage individuel de la pièce ! La plupart des bandes LED RVB sont contrôlées par une télécommande infrarouge. Pour l'éteindre ou l'allumer ou changer la couleur, vous devez rester devant le récepteur. C'est ennuyeux et pas re
Décoration de fenêtre lumineuse de Noël contrôlée par WiFi : 4 étapes
Décoration de fenêtre lumineuse de Noël contrôlée par WiFi : contrôlez une bande lumineuse LED depuis votre téléphone ou votre PC - plein de motifs lumineux amusants sur le thème de Noël
Contrôle WIFI BANDE LED RVB ESP8266 - NODEMCU en tant que télécommande IR pour bande LED contrôlée via Wifi - Contrôle de Smartphone RVB LED STRIP : 4 étapes
Contrôle WIFI BANDE LED RVB ESP8266 | NODEMCU en tant que télécommande IR pour bande LED contrôlée via Wifi | Contrôle par smartphone RVB LED STRIP : Salut les gars, dans ce tutoriel, nous allons apprendre à utiliser nodemcu ou esp8266 comme télécommande IR pour contrôler une bande LED RVB et Nodemcu sera contrôlé par smartphone via wifi. Donc, en gros, vous pouvez contrôler la BANDE LED RVB avec votre smartphone
Contrôleur de bande lumineuse MIDI 5V LED pour le Spielatron ou autre synthé MIDI : 7 étapes (avec photos)
Contrôleur de bande LED MIDI 5V pour le Spielatron ou autre synthé MIDI : Ce contrôleur fait clignoter des bandes LED tricolores pendant 50 ms par note. Bleu pour G5 à D#6, rouge pour E6 à B6 et vert pour C7 à G7. Le contrôleur est un appareil MIDI ALSA, donc le logiciel MIDI peut sortir vers les LED en même temps qu'un synthétiseur MIDI