Table des matières:

Dôme LED géodésique interactif : 15 étapes (avec images)
Dôme LED géodésique interactif : 15 étapes (avec images)

Vidéo: Dôme LED géodésique interactif : 15 étapes (avec images)

Vidéo: Dôme LED géodésique interactif : 15 étapes (avec images)
Vidéo: Dômes & création immersive 2024, Juin
Anonim
Image
Image
Dôme LED géodésique intera-t.webp
Dôme LED géodésique intera-t.webp
Dôme LED géodésique intera-t.webp
Dôme LED géodésique intera-t.webp
Dôme LED géodésique intera-t.webp
Dôme LED géodésique intera-t.webp

J'ai construit un dôme géodésique composé de 120 triangles avec une LED et un capteur à chaque triangle. Chaque LED peut être adressée individuellement et chaque capteur est réglé spécifiquement pour un seul triangle. Le dôme est programmé avec un Arduino pour s'allumer et produire un signal MIDI en fonction du triangle dans lequel vous placez votre main.

J'ai conçu le dôme pour qu'il soit un écran amusant qui intéresse les gens à la lumière, à l'électronique et au son. Parce que le dôme se divise bien en cinq parties, j'ai conçu le dôme pour avoir cinq sorties MIDI séparées qui peuvent chacune avoir un son différent. Cela fait du dôme un instrument de musique géant, idéal pour jouer de la musique avec plusieurs personnes simultanément. En plus de jouer de la musique, j'ai également programmé le dôme pour des spectacles de lumière et jouer une interprétation de Simon et Pong. La structure finale mesure un peu plus d'un mètre de diamètre et 70 cm de haut, et est principalement construite avec du bois, de l'acrylique et des pièces imprimées en 3D.

Il existe plusieurs excellents Instructables sur des tables et des cubes LED qui m'ont inspiré pour démarrer ce projet. Cependant, je voulais essayer d'arranger les LED dans une géométrie différente. Je ne pouvais pas penser à une meilleure structure pour le projet qu'un dôme géodésique, qui est également bien documenté sur Instructables. Ce projet est donc un remix/mashup de tables LED et de dômes géodésiques. Vous trouverez ci-dessous des liens vers la table LED et le dôme géodésique Instructables que j'ai consultés au début du projet.

Tables et cubes LED:

www.instructables.com/id/RGB-LED-Pixel-Touc…

www.instructables.com/id/Touch-LED-Table-Re…

www.instructables.com/id/Led-Cube-8x8x8/

www.instructables.com/id/500-LED-Pixel-RGB-…

Dôme géodésique:

www.instructables.com/id/Folding-Geodesic-D…

www.instructables.com/id/Geodesic-dome-kit/

Étape 1: liste de fournitures

Liste d'approvisionnement
Liste d'approvisionnement
Liste d'approvisionnement
Liste d'approvisionnement
Liste d'approvisionnement
Liste d'approvisionnement

Matériaux:

1. Bois pour les entretoises du dôme et la base du dôme (la quantité dépend du type et de la taille du dôme)

2. Bande LED adressable (16,4 pieds/5 m Bande de pixels LED couleur adressable 160leds Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - assemblé)

4. Carte prototype (Penta Angel Double-Side Prototype PCB Universal (7x9cm))

5. Acrylique pour la diffusion de LED (feuille d'acrylique moulée, transparente, taille 12" x 12" x 0,118")

6. Alimentation (Aiposen 110/220V à DC12V 30A 360W Commutateur Alimentation Pilote)

7. Convertisseur Buck pour Arduino (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)

8. Convertisseur Buck pour LED et capteurs (DROK Mini Electric Buck Voltage Converter 15A)

9. 120 capteurs IR (module de capteur d'évitement d'obstacles infrarouge)

10. Cinq multiplexeurs 16 canaux (Analog/Digital MUX Breakout - CD74HC4067)

11. Six multiplexeurs 8 canaux (Multiplexer Breakout - 8 canaux (74HC4051))

12. Cinq multiplexeurs 2 canaux (MAX4544CPA+)

13. Fil d'enroulement de fil (fil d'enroulement de fil de diamètre de cordon de cuivre plaqué étain de soudure de PCB 0.25mm 305M 30AWG rouge)

14. Fil de branchement (Solide Core, 22 AWG)

15. Embases à broches (Gikfun 1 x 40 broches de 2,54 mm à une rangée d'embases à broches mâles détachables)

16. Cinq prises MIDI (prise MIDI compatible avec la planche à pain (5 broches DIN))

17. Dix résistances de 220 ohms pour les prises MIDI

18. Entretoises pour le montage de l'électronique sur le dôme (entretoise hexagonale M3 mâle x M3 femelle)

19. Adaptateurs de filetage pour connecter les entretoises au bois (insert fileté E-Z Lok, laiton, filetage de couteau)

20. Époxy ou Gorilla Superglue

21. Ruban électrique

22. Soudure

Outils:

1. Station de soudure

2. Perceuse électrique

3. Scie circulaire

4. Ponceuse orbitale

5. Scie sauteuse

6. Scie à onglet

7. Rapporteur

8. Imprimante 3D

9. Coupe-fil

10. Outil d'enroulement de fil

11. Cutter laser pour couper les plaques LED (facultatif)

12. Shopbot CNC pour la base du dôme (facultatif)

Étape 2: Conception du dôme géodésique

Conception du dôme géodésique
Conception du dôme géodésique
Conception du dôme géodésique
Conception du dôme géodésique

Comme je l'ai mentionné dans l'introduction, il existe plusieurs sources en ligne pour construire votre propre dôme géodésique. Ces sites fournissent des calculateurs de dôme qui déterminent la longueur de chaque côté (c'est-à-dire la jambe de force) et le nombre de connecteurs requis pour le type de dôme que vous souhaitez construire. La complexité d'un dôme géodésique (c'est-à-dire la densité des triangles) est spécifiée par sa classe (1V, 2V, 3V, etc.), une complexité plus élevée devenant une meilleure approximation d'une surface sphérique parfaite. Pour construire votre propre dôme, vous devez d'abord sélectionner un diamètre et une classe de dôme.

J'ai utilisé un site appelé Domerama pour m'aider à concevoir un dôme 4V tronqué à 5/12 d'une sphère avec un rayon de 40cm. Pour ce type de dôme, il existe six entretoises de longueurs différentes:

30 X "A" - 8,9 cm

30 X "B" - 10,4 cm

50 X "C" - 12,4 cm

40 X "D" - 12,5 cm

20 X "E" - 13,0 cm

20 X "F" - 13,2 cm

Cela représente un total de 190 entretoises qui totalisent 2 223 cm (73 pi) de matériau. J'ai utilisé du bois de pin 1x3 (3/4" × 2-1/2") pour les entretoises de ce dôme. Pour connecter les entretoises, j'ai conçu et imprimé des connecteurs en 3D à l'aide d'Autocad. Les fichiers STL sont disponibles en téléchargement à la fin de cette étape. Le nombre de connecteurs pour un dôme 4V 5/12 est de:

20 X 4 connecteurs

6 X 5 connecteurs

45 X 6-connecteur

Dans l'étape suivante, je décris comment ce dôme est construit avec les entretoises en bois et les connecteurs imprimés en 3D que j'ai conçus.

Étape 3: Construire le dôme avec des entretoises et des connecteurs

Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs
Construire un dôme avec des entretoises et des connecteurs

En utilisant les calculs de Domerama pour un dôme 4V 5/12, j'ai coupé les entretoises à l'aide d'une scie circulaire. Les 190 entretoises ont été étiquetées et placées dans une boîte après découpe. Les 71 connecteurs (20 à quatre connecteurs, 6 à cinq connecteurs et 45 à six connecteurs) ont été imprimés en 3D à l'aide d'un Makerbot. Les entretoises en bois ont été insérées dans les connecteurs selon le schéma créé par Domerama. J'ai commencé la construction par le haut et je me suis déplacé radialement vers l'extérieur.

Une fois toutes les entretoises connectées, j'ai retiré une entretoise à la fois et ajouté de l'époxy au bois et au connecteur. Les connecteurs ont été conçus pour avoir une flexibilité dans la façon dont ils connectaient les structures, il était donc important de vérifier la symétrie du dôme avant d'ajouter de l'époxy.

Étape 4: Découpe au laser et montage des plaques de base

Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser
Plaques de base de découpe et de montage au laser

Maintenant que le squelette du dôme est construit, il est temps de couper les plaques de base triangulaires. Ces plaques de base sont fixées au bas des entretoises et sont utilisées pour monter les LED sur le dôme. J'ai d'abord découpé les plaques de base dans du contreplaqué de 5 mm (3/16 ) d'épaisseur en mesurant les cinq triangles différents qui se trouvent sur le dôme: AAB (30 triangles), BCC (25 triangles), DDE (20 triangles), CDF (40 triangles) et EEE (5 triangles). Les dimensions de chaque côté et la forme des triangles ont été déterminées à l'aide d'un calculateur de dôme (Domerama) et d'un peu de géométrie. Après avoir découpé les plaques de base de test avec une scie sauteuse, j'ai dessiné le motif du triangle à l'aide de Coral Draw et découpé les plaques de base restantes avec un cutter laser (beaucoup plus rapide !). Si vous n'avez pas accès à un cutter laser, vous pouvez dessiner les plaques de base sur du contreplaqué à l'aide d'une règle et d'un rapporteur et les couper toutes avec une scie sauteuse. Une fois les plaques de base coupées, le dôme est retourné et les plaques sont collées au dôme à l'aide de colle à bois.

Étape 5: Présentation de l'électronique

Aperçu de l'électronique
Aperçu de l'électronique

La figure ci-dessus montre un schéma de l'électronique du dôme. Un Arduino Uno est utilisé pour écrire et lire les signaux du dôme. Pour éclairer le dôme, une bande de LED RVB est passée sur le dôme de sorte qu'une LED soit positionnée sur chacun des 120 triangles. Pour plus d'informations sur le fonctionnement d'une bande LED, consultez cette instructable. Chaque LED peut être adressée séparément à l'aide de l'Arduino, qui produit des données série et un signal d'horloge pour la bande (voir les broches A0 et A1 dans le schéma). Avec la bande et ces deux signaux seuls, vous pouvez avoir un dôme lumineux impressionnant. Il existe d'autres façons d'écrire des signaux pour de nombreuses LED à partir d'un Arduino, telles que le Charlieplexing et les registres à décalage.

Afin d'interagir avec le dôme, j'ai installé un capteur IR au-dessus de chaque LED. Ces capteurs sont utilisés pour détecter lorsque la main de quelqu'un est proche d'un triangle sur le dôme. Parce que chaque triangle sur le dôme a son propre capteur IR et qu'il y a 120 triangles, vous devrez faire une sorte de multiplexage avant l'Arduino. J'ai décidé d'utiliser cinq multiplexeurs 24 canaux (MUX) pour les 120 capteurs du dôme. Voici une instructable sur le multiplexage, si vous n'êtes pas familier. Un MUX à 24 canaux nécessite cinq signaux de commande. J'ai choisi les broches 8 à 12 sur l'Arduino pour pouvoir manipuler les ports (voir l'étape 10 pour plus d'informations). La sortie des cartes MUX est lue à l'aide des broches 3-7.

J'ai également inclus cinq sorties MIDI sur le dôme afin qu'il puisse produire du son (étape 11). En d'autres termes, cinq personnes peuvent jouer simultanément sur le dôme, chaque sortie jouant un son différent. Il n'y a qu'une seule broche TX sur l'Arduino, donc cinq signaux MIDI nécessitent un démultiplexage. Parce que la sortie MIDI est produite à un moment différent de la lecture du capteur IR, j'ai utilisé les mêmes signaux de contrôle.

Une fois que toutes les entrées du capteur IR sont lues dans l'Arduino, le dôme peut s'allumer et jouer des sons quelle que soit la programmation de l'Arduino. J'ai quelques exemples à l'étape 14 de cette instructable.

Étape 6: Montage des LED sur le dôme

Montage des LED sur le dôme
Montage des LED sur le dôme
Montage des LED sur le dôme
Montage des LED sur le dôme
Montage des LED sur le dôme
Montage des LED sur le dôme

Parce que le dôme est si grand, la bande LED doit être coupée pour placer une LED sur chaque triangle. Chaque LED est collée sur le triangle à l'aide de super glue. De chaque côté de la LED, un trou est percé dans la plaque de base pour que les câbles passent à travers le dôme. J'ai ensuite soudé le fil de raccordement à chaque contact de la LED (5V, masse, horloge, signal) et ai fait passer les fils à travers la plaque de base. Ces fils sont coupés de manière à être suffisamment longs pour atteindre la prochaine LED sur le dôme. Les fils sont tirés jusqu'à la LED suivante et le processus se poursuit. J'ai connecté les LED dans une configuration qui réduirait au minimum la quantité de fil requise tout en restant logique pour adresser les LED à l'aide de l'Arduino plus tard. Un dôme plus petit éliminerait le besoin de couper la bande et gagnerait beaucoup de temps à souder. Une autre option consiste à utiliser des LED RVB séparées avec des registres à décalage.

La communication série avec la bande est réalisée à l'aide de deux broches (une broche de données et d'horloge) de l'Arduino. En d'autres termes, les données d'éclairage du dôme sont transmises d'une LED à l'autre au fur et à mesure qu'elle quitte la broche de données. Voici un exemple de code modifié à partir de ce forum Arduino:

// Faire en sorte que le dôme entier augmente et diminue l'intensité d'une seule couleur

#define numLeds 120 //Nombre de LED // OUTPUT PINS // int clockPin = A1; // définit la broche d'horloge int dataPin = A0; // définit la broche de données // VARIABLES // int red[numLeds]; // Initialiser le tableau pour la bande LED int green[numLeds]; // Initialiser le tableau pour la bande LED int blue[numLeds]; // Initialiser le tableau pour la bande LED // Double échelle CONSTANTEA = {0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 1, 0,9, 0,8, 0,7, 0,6, 0,5, 0,4, 0,3, 0,2, 0,1}; // fraction d'intensité des LED void setup() { pinMode(clockPin, OUTPUT); pinMode(dataPin, SORTIE); memset(rouge, 0, numLeds); memset(vert, 0, numLeds); memset(bleu, 0, numLeds); } void updatestring(int redA[numLeds], int greenA[numLeds], int blueA[numLeds]) { for (int i = 0; i < numLeds; i++) { shiftOut(dataPin, clockPin, MSBFIRST, redA); shiftOut(dataPin, clockPin, MSBFIRST, greenA); shiftOut(dataPin, clockPin, MSBFIRST, blueA); } } void loop() { for (int p = 0; p < 20; p++) // boucle pour augmenter l'intensité lumineuse du dôme { double scale = scaleA[p]; retard(20); for (int i = 0; i < numLeds; i++) // fait défiler toutes les LED { red = 255 * scale; vert = 80 * échelle; bleu = 0; } updatestring(rouge, vert, bleu); // mise à jour de la bande led } }

Étape 7: Conception et mise en œuvre du support de capteur

Conception et mise en œuvre du support de capteur
Conception et mise en œuvre du support de capteur
Conception et mise en œuvre du support de capteur
Conception et mise en œuvre du support de capteur
Conception et mise en œuvre du support de capteur
Conception et mise en œuvre du support de capteur

J'ai décidé d'utiliser des capteurs IR pour le dôme. Ces capteurs ont une LED IR et un récepteur. Lorsqu'un objet se trouve devant le capteur, une partie du rayonnement IR de la LED IR est réfléchie vers le récepteur. J'ai commencé ce projet en fabriquant mes propres capteurs IR, basés sur l'instructable de Richardouvina. Toute la soudure a pris beaucoup trop de temps, j'ai donc acheté 120 capteurs IR sur eBay qui produisent chacun une sortie numérique. Le seuil du capteur est réglé avec un potentiomètre sur la carte afin que la sortie ne soit élevée que lorsqu'une main est proche de ce triangle.

Chaque triangle se compose d'une plaque de base LED en contreplaqué, d'une feuille d'acrylique diffusante montée à environ 2,5 cm au-dessus de la plaque LED et d'un capteur infrarouge. Le capteur pour chaque triangle a été monté sur une feuille de contreplaqué mince en forme de pentagone ou d'hexagone selon la position sur le dôme (voir la figure ci-dessus). J'ai percé des trous dans la base du capteur IR pour monter les capteurs IR, puis j'ai connecté la terre et les broches 5V avec un fil enroulé et un outil d'enroulement de fil (fils rouge et noir). Après avoir connecté la terre et 5 V, j'ai enroulé un long fil enroulé sur chaque sortie (jaune), la terre et 5 V pour traverser le dôme.

Les supports de capteur IR hexagonaux ou pentagonaux ont ensuite été collés au dôme, juste au-dessus des connecteurs imprimés en 3D, afin que le fil puisse passer à travers le dôme. En ayant les capteurs au-dessus des connecteurs, j'ai également pu accéder et ajuster les potentiomètres sur les capteurs IR qui contrôlent la sensibilité des capteurs. Dans l'étape suivante, je décrirai comment les sorties des capteurs IR sont connectées aux multiplexeurs et lues dans l'Arduino.

Étape 8: Multiplexage de la sortie du capteur

Sortie du capteur de multiplexage
Sortie du capteur de multiplexage
Sortie du capteur de multiplexage
Sortie du capteur de multiplexage
Sortie du capteur de multiplexage
Sortie du capteur de multiplexage

Étant donné que l'Arduino Uno n'a que 14 broches d'E/S numériques et 6 broches d'entrée analogique et qu'il y a 120 signaux de capteur qui doivent être lus, le dôme nécessite des multiplexeurs pour lire tous les signaux. J'ai choisi de construire cinq multiplexeurs à 24 canaux, chacun lisant 24 des capteurs IR (voir la figure de présentation de l'électronique). Le MUX à 24 canaux se compose d'une carte de dérivation MUX à 8 canaux, d'une carte de dérivation MUX à 16 canaux et d'un MUX à 2 canaux. Les en-têtes de broche ont été soudés à chaque carte de dérivation afin qu'ils puissent être connectés à la carte prototype. À l'aide d'un outil d'enroulement de fil, j'ai ensuite connecté la terre, 5 V et les broches du signal de commande des cartes de dérivation MUX.

Un MUX à 24 canaux nécessite cinq signaux de contrôle, que j'ai choisi de connecter aux broches 8-12 de l'Arduino. Les cinq MUX à 24 canaux reçoivent les mêmes signaux de contrôle de l'Arduino, j'ai donc connecté le fil des broches Arduino au MUX à 24 canaux. Les sorties numériques des capteurs IR sont connectées aux broches d'entrée du MUX à 24 canaux afin qu'elles puissent être lues en série sur l'Arduino. Comme il y a cinq broches distinctes pour la lecture dans les 120 sorties de capteur, il est utile d'imaginer que le dôme est divisé en cinq sections distinctes composées de 24 triangles (vérifiez les couleurs du dôme sur la figure).

En utilisant la manipulation du port Arduino, vous pouvez incrémenter rapidement les signaux de contrôle envoyés par les broches 8-12 aux multiplexeurs. J'ai joint un exemple de code pour faire fonctionner les multiplexeurs ici:

int numChannel = 24;

// SORTIES // int s0 = 8; // Contrôle MUX 0 - PORTbD int s1 = 9; // Contrôle MUX 1 - PORTb int s2 = 10; // Contrôle MUX 2 - PORTb int s3 = 11; // Contrôle MUX 3 - PORTb int s4 = 12; // Contrôle MUX 4 - PORTb // ENTRÉES // int m0 = 3; // entrée MUX 0 int m1 = 4; // entrée MUX 1 int m2 = 5; // entrée MUX 2 int m3 = 6; // entrée MUX 3 int m4 = 7; // MUX input 4 // VARIABLES // int arr0r; // lecture numérique depuis MUX0 int arr1r; // lecture numérique depuis MUX1 int arr2r; // lecture numérique depuis MUX2 int arr3r; // lecture numérique depuis MUX3 int arr4r; // lecture numérique depuis MUX4 void setup() { // mettez votre code de configuration ici, à exécuter une fois: DDRB = B11111111; // définit les broches Arduino 8 à 13 comme entrées pinMode(s0, OUTPUT); pinMode(s1, SORTIE); pinMode(s2, SORTIE); pinMode(s3, SORTIE); pinMode(s4, SORTIE); pinMode(m0, ENTREE); pinMode(m1, INPUT); pinMode(m2, ENTREE); pinMode(m3, ENTREE); pinMode(m4, ENTREE); } void loop() { // mettez votre code principal ici, à exécuter à plusieurs reprises: PORTB = B00000000; // SET control pins for mux low for (int i = 0; i < numChannel; i++) { // Sortie de lecture numérique de MUX0 - MUX4 pour le capteur IR i // Si le capteur IR est LO, le triangle est touché par le joueur. arr0r = digitalRead(m0); // lecture à partir du Mux 0, capteur IR i arr1r = digitalRead(m1); // lecture à partir du Mux 1, capteur IR i arr2r = digitalRead(m2); // lecture à partir du Mux 2, capteur IR i arr3r = digitalRead(m3); // lecture depuis Mux 3, capteur IR i arr4r = digitalRead(m4); // lecture à partir du Mux 4, capteur IR i // FAIRE QUELQUE CHOSE AVEC LES ENTRÉES MUX OU STOCKER DANS UN TABLEAU ICI // PORTB ++; // incrémente les signaux de contrôle pour le MUX } }

Étape 9: Diffuser la lumière avec de l'acrylique

Diffuser la lumière avec de l'acrylique
Diffuser la lumière avec de l'acrylique
Diffuser la lumière avec de l'acrylique
Diffuser la lumière avec de l'acrylique
Diffuser la lumière avec de l'acrylique
Diffuser la lumière avec de l'acrylique

Pour diffuser la lumière des LED, j'ai poncé de l'acrylique transparent avec une ponceuse orbitale circulaire. La ponceuse a été déplacée des deux côtés de l'acrylique dans un mouvement en forme de 8. J'ai trouvé cette méthode bien meilleure que la peinture en aérosol "verre dépoli".

Après avoir poncé et nettoyé l'acrylique, j'ai utilisé un cutter laser pour découper des triangles à adapter sur les LED. Il est possible de découper l'acrylique à l'aide d'un outil de découpe acrylique ou même d'une scie sauteuse si l'acrylique ne se fissure pas. L'acrylique était maintenu sur les LED par des rectangles de contreplaqué de 5 mm d'épaisseur également découpés au laser. Ces petites planches ont été collées aux entretoises du dôme et les triangles en acrylique ont été collés sur les planches.

Étape 10: Faire de la musique avec le dôme en utilisant le MIDI

Faire de la musique avec le dôme en utilisant le MIDI
Faire de la musique avec le dôme en utilisant le MIDI
Faire de la musique avec le dôme en utilisant le MIDI
Faire de la musique avec le dôme en utilisant le MIDI
Faire de la musique avec le dôme en utilisant le MIDI
Faire de la musique avec le dôme en utilisant le MIDI

Je voulais que le dôme soit capable de produire du son, j'ai donc configuré cinq canaux MIDI, un pour chaque sous-ensemble du dôme. Vous devez d'abord acheter cinq prises MIDI et les connecter comme indiqué sur le schéma (voir ce didacticiel du support Arduino pour plus d'informations).

Comme il n'y a qu'une seule broche série de transmission sur l'Arduino Uno (broche 2 étiquetée comme broche TX), vous devez démultiplexer les signaux envoyés aux cinq prises MIDI. J'ai utilisé les mêmes signaux de contrôle (broches 8-12), car les signaux MIDI sont envoyés à un moment différent de celui lorsque les capteurs IR sont lus dans l'Arduino. Ces signaux de contrôle sont envoyés à un démultiplexeur à 8 canaux afin que vous contrôliez quelle prise MIDI reçoit le signal MIDI créé par l'Arduino. Les signaux MIDI ont été générés par l'Arduino avec la formidable bibliothèque de signaux MIDI créée par François Best. Voici un exemple de code pour produire plusieurs sorties MIDI vers différentes prises MIDI avec un Arduino Uno:

#include // inclut la bibliothèque MIDI

#define numChannel 24 //Nombre d'IR par Triangle #define numSections 5 // nombre de sections dans le dôme, nombre de MUX 24 canaux, nombre de prises MIDI // OUTPUTS // int s0 = 8; // Contrôle MUX 0 - PORTbD int s1 = 9; // Contrôle MUX 1 - PORTb int s2 = 10; // Contrôle MUX 2 - PORTb int s3 = 11; // Contrôle MUX 3 - PORTb int s4 = 12; // Contrôle MUX 4 - PORTb // ENTRÉES // int m0 = 3; // entrée MUX 0 int m1 = 4; // entrée MUX 1 int m2 = 5; // entrée MUX 2 int m3 = 6; // entrée MUX 3 int m4 = 7; // MUX input 4 // VARIABLES // int arr0r; // lecture numérique depuis MUX0 int arr1r; // lecture numérique depuis MUX1 int arr2r; // lecture numérique depuis MUX2 int arr3r; // lecture numérique depuis MUX3 int arr4r; // lecture numérique depuis MUX4 int midArr[numSections]; // Stocke si une note a été pressée ou non par l'un des joueurs int note2play[numSections]; // Stocke la note à jouer si le capteur est touché int notes[numChannel] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83}; int pauseMidi = 4000; // temps de pause entre les signaux midi MIDI_CREATE_DEFAULT_INSTANCE(); void setup() { // mettez votre code de configuration ici, à exécuter une fois: DDRB = B11111111; // définit les broches Arduino 8 à 13 comme entrées MIDI.begin(MIDI_CHANNEL_OFF); pinMode(s0, SORTIE); pinMode(s1, SORTIE); pinMode(s2, SORTIE); pinMode(s3, SORTIE); pinMode(s4, SORTIE); pinMode(m0, ENTREE); pinMode(m1, INPUT); pinMode(m2, ENTREE); pinMode(m3, ENTREE); pinMode(m4, ENTREE); } void loop() { // mettez votre code principal ici, à exécuter à plusieurs reprises: PORTB = B00000000; // SET control pins for mux low for (int i = 0; i < numChannel; i++) { // Sortie de lecture numérique de MUX0 - MUX4 pour le capteur IR i // Si le capteur IR est LO, le triangle est touché par le joueur. arr0r = digitalRead(m0); // lecture à partir du Mux 0, capteur IR i arr1r = digitalRead(m1); // lecture à partir du Mux 1, capteur IR i arr2r = digitalRead(m2); // lecture à partir du Mux 2, capteur IR i arr3r = digitalRead(m3); // lecture depuis Mux 3, capteur IR i arr4r = digitalRead(m4); // lecture depuis Mux 4, capteur IR i if (arr0r == 0)// Le capteur sur la section 0 était bloqué { midArr[0] = 1; // Le joueur 0 a frappé une note, réglez HI pour qu'il y ait une sortie MIDI pour le joueur 0 note2play[0] = notes; // Note à jouer pour le joueur 0 } if (arr1r == 0)// Le capteur sur la section 1 a été bloqué { midArr[1] = 1; // Le joueur 0 a frappé une note, réglez HI pour qu'il y ait une sortie MIDI pour le joueur 0 note2play[1] = notes; // Note à jouer pour le joueur 0 } if (arr2r == 0)// Le capteur sur la section 2 était bloqué { midArr[2] = 1; // Le joueur 0 a frappé une note, réglez HI pour qu'il y ait une sortie MIDI pour le joueur 0 note2play[2] = notes; // Note à jouer pour le joueur 0 } if (arr3r == 0)// Le capteur sur la section 3 était bloqué { midArr[3] = 1; // Le joueur 0 a frappé une note, réglez HI pour qu'il y ait une sortie MIDI pour le joueur 0 note2play[3] = notes; // Note à jouer pour le Joueur 0 } if (arr4r == 0)// Le capteur sur la section 4 était bloqué { midArr[4] = 1; // Le joueur 0 a frappé une note, réglez HI pour qu'il y ait une sortie MIDI pour le joueur 0 note2play[4] = notes; // Note à jouer pour le joueur 0 } PORTB ++; // incrémente les signaux de contrôle pour MUX } updateMIDI(); } annuler la mise à jourMIDI() { PORTB = B00000000; // SET control pins for mux low if (midArr[0] == 1) // Player 0 MIDI output { MIDI.sendNoteOn(note2play[0], 127, 1); délaiMicrosecondes(pauseMidi); MIDI.sendNoteOff(note2play[0], 127, 1); délaiMicrosecondes(pauseMidi); } PORTB ++; // incrémente le MUX if (midArr[1] == 1) // Sortie MIDI du lecteur 1 { MIDI.sendNoteOn(note2play[1], 127, 1); délaiMicrosecondes(pauseMidi); MIDI.sendNoteOff(note2play[1], 127, 1); délaiMicrosecondes(pauseMidi); } PORTB ++; // incrémente le MUX if (midArr[2] == 1) // Sortie MIDI Player 2 { MIDI.sendNoteOn(note2play[2], 127, 1); délaiMicrosecondes(pauseMidi); MIDI.sendNoteOff(note2play[2], 127, 1); délaiMicrosecondes(pauseMidi); } PORTB ++; // incrémente le MUX if (midArr[3] == 1) // Player 3 MIDI output { MIDI.sendNoteOn(note2play[3], 127, 1); délaiMicrosecondes(pauseMidi); MIDI.sendNoteOff(note2play[3], 127, 1); délaiMicrosecondes(pauseMidi); } PORTB ++; // incrémente le MUX if (midArr[4] == 1) // Player 4 MIDI output { MIDI.sendNoteOn(note2play[4], 127, 1); délaiMicrosecondes(pauseMidi); MIDI.sendNoteOff(note2play[4], 127, 1); délaiMicrosecondes(pauseMidi); } midArr[0] = 0; midArr[1] = 0; midArr[2] = 0; midArr[3] = 0; midArr[4] = 0; }

Étape 11: Mise sous tension du dôme

Alimentation du dôme
Alimentation du dôme
Alimentation du dôme
Alimentation du dôme
Alimenter le dôme
Alimenter le dôme
Alimenter le dôme
Alimenter le dôme

Plusieurs composants doivent être alimentés dans le dôme. Vous devrez donc calculer les ampères tirés de chaque composant pour déterminer l'alimentation que vous devez acheter.

La bande LED: J'ai utilisé environ 3,75 mètres de la bande LED Ws2801, qui consomme 6,4 W/mètre. Cela correspond à 24W (3,75*6,4). Pour convertir cela en ampères, utilisez Power = current*volts (P=iV), où V est la tension de la bande LED, dans ce cas 5V. Par conséquent, le courant tiré des LED est de 4,8A (24W/5V = 4,8A).

Les capteurs IR: Chaque capteur IR consomme environ 25mA, soit un total de 3A pour 120 capteurs.

L'Arduino: 100mA, 9V

Les multiplexeurs: Il existe cinq multiplexeurs à 24 canaux qui se composent chacun d'un multiplexeur à 16 canaux et d'un multiplexeur à 8 canaux. Les MUX 8 canaux et 16 canaux consomment chacun environ 100 mA. Par conséquent, la consommation électrique totale de tous les MUX est de 1A.

En additionnant ces composants, la consommation électrique totale devrait être d'environ 9A. La bande LED, les capteurs IR et les multiplexeurs ont une tension d'entrée de 5V et l'Arduino a une tension d'entrée de 9V. Par conséquent, j'ai sélectionné une alimentation 12V 15A, un convertisseur buck 15A pour convertir le 12V en 5V et un convertisseur buck 3A pour convertir 12V en 9V pour l'Arduino.

Étape 12: Base de dôme circulaire

Base de dôme circulaire
Base de dôme circulaire
Base de dôme circulaire
Base de dôme circulaire
Base de dôme circulaire
Base de dôme circulaire

Le dôme repose sur une pièce de bois circulaire avec un pentagone découpé au milieu pour un accès facile à l'électronique. Pour créer cette base circulaire, une feuille de contreplaqué de 4 x 6 pi a été découpée à l'aide d'une toupie à bois CNC. Une scie sauteuse peut également être utilisée pour cette étape. Une fois la base coupée, le dôme y a été attaché à l'aide de petits blocs de bois de 2x3 pouces.

Sur le dessus de la base, j'ai attaché l'alimentation avec de l'époxy et les convertisseurs MUX et Buck avec des entretoises de PCB. Les entretoises ont été fixées au contreplaqué à l'aide d'adaptateurs filetés E-Z Lok.

Étape 13: Base du dôme du Pentagone

Base du dôme du Pentagone
Base du dôme du Pentagone
Base du dôme du Pentagone
Base du dôme du Pentagone
Base du dôme du Pentagone
Base du dôme du Pentagone

En plus de la base circulaire, j'ai également construit une base pentagonale pour le dôme avec une fenêtre en verre au fond. Cette base et cette fenêtre ont également été fabriquées à partir de contreplaqué coupé avec un routeur CNC en bois. Les côtés du pentagone sont faits de planches de bois avec un côté ayant un trou pour le passage des connecteurs. À l'aide de supports métalliques et de joints de blocs 2x3, les planches de bois sont fixées à la base du pentagone. Un interrupteur d'alimentation, des connecteurs MIDI et un connecteur USB sont connectés à un panneau avant que j'ai créé à l'aide d'un cutter laser. Toute la base du pentagone est vissée à la base circulaire décrite à l'étape 12.

J'ai installé une fenêtre dans le bas du dôme afin que n'importe qui puisse regarder dans le dôme pour voir l'électronique. Le miroir est fabriqué à partir d'acrylique découpé au laser et est collé à un morceau de contreplaqué circulaire.

Étape 14: Programmation du dôme

Les possibilités de programmation du dôme sont infinies. Chaque cycle du code reçoit les signaux des capteurs IR, qui indiquent les triangles qui ont été touchés par quelqu'un. Avec ces informations, vous pouvez colorer le dôme avec n'importe quelle couleur RVB et/ou produire un signal MIDI. Voici quelques exemples de programmes que j'ai écrits pour le dôme:

Colorez le dôme: chaque triangle parcourt quatre couleurs au fur et à mesure qu'il est touché. Au fur et à mesure que les couleurs changent, un arpège est joué. Avec ce programme, vous pouvez colorer le dôme de milliers de façons différentes.

Musique du dôme: Le dôme est coloré avec cinq couleurs, chaque section correspondant à une sortie MIDI différente. Dans le programme, vous pouvez choisir les notes jouées par chaque triangle. J'ai choisi de commencer au C du milieu au sommet du dôme et d'augmenter la hauteur à mesure que les triangles se rapprochaient de la base. Parce qu'il y a cinq sorties, ce programme est idéal pour faire jouer le dôme simultanément par plusieurs personnes. À l'aide d'un instrument MIDI ou d'un logiciel MIDI, ces signaux MIDI peuvent sonner comme n'importe quel instrument.

Simon: J'ai écrit une interprétation de Simon, le jeu d'éclairage de mémoire classique. Une séquence aléatoire de lumières est allumée une à la fois sur tout le dôme. A chaque tour, le joueur doit copier la séquence. Si le joueur correspond correctement à la séquence, une lumière supplémentaire est ajoutée à la séquence. Le score le plus élevé est enregistré sur l'une des sections du dôme. Ce jeu est également très amusant à jouer avec plusieurs personnes.

Pong: Pourquoi ne pas jouer au pong sur un dôme ? Une balle se propage à travers le dôme jusqu'à ce qu'elle touche la pagaie. Quand c'est le cas, un signal MIDI est produit, indiquant que la raquette a frappé la balle. L'autre joueur doit alors diriger la pagaie le long du bas du dôme pour qu'elle renvoie la balle.

Étape 15: Photos du dôme terminé

Photos du dôme terminé
Photos du dôme terminé
Photos du dôme terminé
Photos du dôme terminé
Photos du dôme terminé
Photos du dôme terminé
Photos du dôme terminé
Photos du dôme terminé
Concours Arduino 2016
Concours Arduino 2016
Concours Arduino 2016
Concours Arduino 2016

Grand prix du concours Arduino 2016

Concours Remix 2016
Concours Remix 2016
Concours Remix 2016
Concours Remix 2016

Deuxième prix du Remix Contest 2016

Concours Fais briller 2016
Concours Fais briller 2016
Concours Fais briller 2016
Concours Fais briller 2016

Deuxième prix du concours Make it Glow 2016

Conseillé: