Contrôler des LEDS ?

Bonjour à tous,

Je me présente, je suis musicien et je gère de l'électronique sur scène et j'ai pour objectif de toujours rendre l'électronique musicale plus visuelle et plus humaine. Pas question de rester bloquer derrière un ordinateur.
Et je travaille sur un projet de controleur d'effet utilisant le Leap Motion ...
Mais j'aimerais le rendre encore plus visuel, avec un objet couvert de LEDs qui montrerait le déplacement de la main au dessus du Leap Motion. J'ai pensé chercher du coté de l'Arduino. Mais c'est tout nouveau pour moi et je lis beaucoup de tutos mais ça reste encore obscur.

L'idée c'est de récupérer le signal du Leap motion pour allumer des petites barres de LEDS.

  1. Plus la main est proche du Leap Motion plus les LEDs brillent fort.
  2. Les barres de LEDs s'allument en fonction du déplacement de la main. Cette dernière étape a, je vois, été réalisée (en gros) par quelqu'un ici (vidéo) : http://thesis.diegozaks.com/2013/09/30/finger-tracking-led-light-up-using-processing-arduino-leap/

Maintenant je ne sais pas trop vers quel matériel me tourner. Quels types de barres de LEDs, comment réaliser le montage, alimenter les LEDs, etc.
Si quelqu'un ici a des pistes, je suis preneur.
Au lieu d'une LED par point de mapping, je pensais allumer une petite barre de 4 ou 6 LEDs (pour plus de visibilité sur scène). Et avec bien plus de points mappés. Les barres de LEDs, une par une, ou deux par deux, s'allument en suivant le déplacement de la main au dessus du contrôleur ...

Je prends toute idée de matériel, de cablage de tout ça ... Et après je me lance au bidouillage pour que ça réponde à ce que je cherche.
Mais ma première étape c'est le matériel, l'alimentation des LEDs et leur connection à l'arduino.

Merci pour toute idée !

Bonsoir

Un truc qui marche bien, ce sont les LEDS RGB adressables.
C'est à dire qu'elles sont associées soit sur un circuit imprimé, soit dans le chip LED avec un circuit de contrôle qui permet de piloter les 3 composantes RGB en 256 niveaux chacun, soit théoriquement 16 millions de couleurs.

2 types de controle existent :

  • mono fil (type contrôleur WS2812)
  • de type SPI à 2 fils (type contrôleur WS2801, WS2811 ou LDP8806) : plus fiable sur longue distance

Tu peux trouver :

Quelques recherches eBay par exemple :

Un Arduino peut facilement gérer jusqu'à 250 LEDs
Après c'est la mémoire et le temps de rafraichissement qui posent problème.

Y'a de quoi s'amuser.

Merciiiiiii !!!

ça c'est PARFAIT !

Quel est le souci avec la mémoire et le taux de rafraichissement ?
Et saurais tu m'expliquer comment cabler ça avec l'arduino (quel board d'ailleurs ?) et comment l'alimenter ?

Merci mille fois pour ton aide !

Voici un autre exemple en vidéo de ce que je veux faire :

J'ai encore du mal à finir ma liste de matériel pour controler 3 bandes de LEDs ... :~

Ben si tu l'as déjà fait, c'est bon ? :grin:

Sinon, la photo que tu a mise n'est pas un produit prêt à l'emploi. Ce qui t'apparait en bande est en fait une bande de stockage. Ce qui est vendue sur ce produit ce sont des chips LEDs. Donc un composant CMS a souder sur quelque chose.
Si tu veux du bandeaux de LEDs comme sur cette video il faut utiliser le 2eme lien "addressable rgb led strip"

Aujourd'hui, le 1er lien renvoi vers une annonce ou tu peux choisir plusieurs choses. Notamment "5m WS2811 Digital LED strip (white)"
Il s'agit donc d'un bandeau de 5m a fond blanc avec des RGB avec le contrôleur WS2811 intégrée.
Il existe en version waterproof et non-waterproof. En version waterproff, le bandeau de led est dans un étuit transparent souple qui peut se couper comme le bandeau lui même à n'importe quelle taille. Attention parce qu'aux extrémité, ce n'est plus waterproof. Si tu as besoin de waterproof il faut isoler proprement les extrémités.
C'est le modèle 30 LED par mètre soit un total de 150 LED sur 5m.
A toi de voir si la densité te convient puisqu'il existe aussi 60 ou 144 LED par mètre. Le prix suit ...

Ce type de bandeau peut se controler avec une simple Arduino UNO.

Attention toutefois à l'alimentation.
150 LEDs RGB ca consomme si tu allume tout en blanc. 20mA par LED mais x3 parqu'il y a 3 LEDs (R, G, B) dans le chip.
Total 150 * 3 * 0,02 = 9A !!!!!
Il te faut donc au minimum un alim 10A/50W sous 5V

Si tu peux, prend un peux plus : 15A pour avoir de la marge.

Cette alim permettra aussi d'alimenter l'Arduino MAIS il ne faut pas cabler :

ALIM -> Arduino -> LED

L'Arduino ne supporterait pas le passage des 9A.
IL faut donc faire une derivation :

ALIM -+---> Arduino
      \---> LED

Une broche sortie numérique (Digital Output) sur l'Arduino et la lib Adafruit NeoPixel : https://github.com/adafruit/Adafruit_NeoPixel

Voilà pour ce qui de commander les LED

Maintenant le Leap Motion....
Malheureusement lui il est USB, il lui faut un driver qui n'existe que pour PC ou MAC.
Donc je pense : No Way

Il te faudra donc aussi un PC/Mac avec un soft pour traiter le LeapMotion (je suppose que d'ailleurs le traitement des données du Leap Motion demande pas mal de capacité, au dela de ce que peux faire un Arduino.
Il te faudra donc une appli PC/Mac (environnement de dev a définir - que sais tu faire dans ce domaine) qui communique avec l'Arduino.
Au minimum Arduino branché en USB vu comme un port série -> échange de messages et ordres donnés par l'appli PC pour controler les LEDs. SI besoin, passage en Ethernet, Wifi ou Bluetooth

Je ne sais pas si j'en ai dis trop et que tu étais déjà ok, ou si j'ai pu aider...

Merci 1000 fois ! Ton aide m'est très précieuse et me permet d'y voir plus clair dans le matériel.
Coté Leap Motion, j'en fais mon affaire. Il me sert à controler le son sur scène, donc il est bien branché en USB au mac.
Et dans le MAC, j'utilise Processing qui me permettra de renvoyer les données à l'Arduino pour controler les LEDs.

Des strips de 4m c'est trop pour moi.
J'aimerais 3 strips d'un mètre de ce type donc :

1M 60LEDs/M WS2811 Led Digital strip light Dream RGB Individually Addressable 5V

Donc pour ces 3 strips en parallèle, peux tu me donner plus de précision sur le montage avec l'Arduino et l'alim ? J'avoue que ces histoires d'alim me dépassent encore ...
Ça fait donc 3x60 = 180 LEDs à alimenter !

L'arduino sera branché en USB donc j'imagine que ça suffit à l'alimenter. Et ensuite je dois comprendre le montage pour alimenter les strips.

Merci encore ...

Tu peux couper comme tu veux
Si tu achete un strip de 5m tu auras un meilleur prix. Tu coupe 3 morceaux de 1m et il t'en reste 2 pour autre chose.

Tu veux la meme chose sur les 3 strips ou differents ?

L'idée c'est que tous les strips réagiront de la même façon mais, dans l'idéal, certains avec un léger délai à l'allumage et à l'extinction mais bon, dans un premier temps, faire marcher tout le monde en même temps, ce sera déjà bien.

Salut,
Désolé, le vendredi soir c'est télé :slight_smile:

Ci dessous un gros plan sur un bandeau de LED. Il s'agit d'un modèle 30 LEDs par mètre mais le 60 LEDs par mètre est similaire, juste les lEDS sont plus serrées. Comme tu peux le voir :

  • Il y a un sens (indiqué par la flèche)
  • un petit symbole de ciseaux qui indique que tu peux coupe à cet endroit là. Tu as un point de coupure comme celui-ci après chaque LED : donc tu peux vraiment couper un grand bandeau comme tu veux.

Tu va donc avoir N bandeaux qui vont diposer de 3 pins de chaque coté :

  • Coté "entrée" : VCC (=+5V), DI (=Data Input), GND (=GND ;))
  • Coté "sortie" : VCC, DO (=Data Out), GND

Les VCC et GND peuvent être reliés en série (je ne représente qu'un fil mais cela concerne VCC et GND) :

ALIM ----> Bandeau 1 -----> Bandeau 2 ----> Bandeau 3

Ou bien en étoile (appelé aussi parallèle ou dérivation)

       /--> Bandeau 1
ALIM --+--> Bandeau 2
       \--> Bandeau 3

Ceci est vrai pour les Alims indépendemment de la suite ci-dessous car contrairement au Data, les alims n'ont pas de sens (il n'y a pas de VCC Out ou de VCC In).
A toi de choisir le mode le plus facile à cabler.
Pour le cablage des alims, il faudra prendre du cable suffisant. Palons donc un peu d'ampères

Chaque composant LED RGB contient 3 LEDS : Rouge, Vert, Bleu. Chacun de ces LEDs consomme au maximum 20mA. Ti tu allume la LED en blanc (Rouge vert et bleau à fond) la LED RGB consomme 60mA. Si tu allume tes 180 LEDs en blanc, même un fraction de seconde, tu va consommer : 10,8A

  1. Il te faut une alim suffisante. On applique un facteur de sécurité (derating) qui consiste à prendre une alim surdimensionné pour éviter les surchauffe. Donc vise une alim délivrant 15A sous 5V c'est à dire 75W.
    Je ne trouve pas sur ebay de 75W. Après 50W, on saute direct à 100W : power switching supply 5V AC/DC 100W en vente - | eBay

  2. Il faut câbler avec du fil adapté.
    Si tu câble en étoile, chaque bandeau nécessite seulement 3.6A (60 LEDs). Je ne vais pas te parler en mm2 de section, plus simplement, tu prend du câble électrique à 2 fils comme on utilise couramment pour l'électricité standard (lampe de chevet, appareils électroniques, ...). Il s'agit de câble normalement ok jusqu'à 10A.
    Si tu câble en série, le premier câble entre l'Alim et le 1erbandeau va prendre tout le courant. Il faut donc un cable plus costaud. Tu peux prendre le type utilisé avec les appareils électrique plus consommateur type appareils avec prise de terre (ordinateurs, prise électriques avec terre, ...) qui est normalement certifié pour 16A. Pour les suivants, tu peux redescendre au cable 10A puisque le courant diminue.

  3. Tu dois alimenter les LEDs directement à partir de l'Alim, pas à travers l'Arduino.

Si tu compte alimenter ton Arduino via le port USB du Mac, rien de plus a faire pour l'Arduino.
Si tu compte utiliser une liaison sans fil (bluetooth, wifi ou ethernet parce que l'alim ne passe pas par Ethernet) ou si ton Arduino est loin du Mac, il faudra considérer alimenter l'Arduino depuis l'Alim 5V des LEDs, en étoile par rapport aux bandeaux (même si les bandeaux sont eux même alimentés en série, l'Arduino doit être en étoile) :

ALIM -+--> Bandeau 1 -----> Bandeau 2 ----> Bandeau 3
      \--> Arduino

       /--> Bandeau 1
ALIM --+--> Bandeau 2
       +--> Bandeau 3
       \--> Arduino

La suite ci-dessous ...

screenshot.54.png

Maintenant parlons des Data.

Pour que l'Arduino pilote un bandeau de LED il suffit de 2 choses :

  • 1 signal numérique (digital output) qui rentre dans le DI (Digital Input) du bandeau
  • que le GND de l'Arduino soit relié au GND du/des bandeaux. Donc surtout si ton Arduino est alimentée par l'USB, il faudra quand même une liaison entre le GND de l'Arduino et le GND de l'Alim des LED. Il ne passe pas beaucoup de courant, donc un petit fil suffira. Le même que celui que tu utiliseras pour le signal numérique ("fil de câblage électronique")

Tu auras 3 bandeaux.

Si tu veux exactement la même chose sur les 3 bandeaux, le montage en parallèle fonctionne si les 3 bandeaux sont proches l'un de l'autre :

                               /-> (DI) Bandeau 1
Arduino Dx --------------------+-> (DI) Bandeau 2
                               \-> (DI) Bandeau 3

Si tu veux des choses différentes, tu as 2 solutions :
i) Le chainage en série

Arduino Dx  ----> (DI) Bandeau 1 (DO) -----> (DI) Bandeau 2 (DO) ----> (DI) Bandeau 3

ii) 3 commandes séparées

Arduino Dx  ----> (DI) Bandeau 1
Arduino Dy  -----> (DI) Bandeau 2
Arduino Dz   ----> (DI) Bandeau 3

Pareil, suivant le câblage, l'un peut être plus ou moins facile.
Attention dans le cas i) si tu place les 3 bandeaux l'un au dessus de l'autre, pour assurer le cablage en série, celui du milieu doit être dans le sens opposé. Par exemple :

Arduino Dx ----------------------> (DI) Bandeau 1 (DO) >-\
                              /--< (DO) 2 uaednaB (DI) <-/
                              \--> (DI) Bandeau 3

Je pense que le i) est le plus simple. un chouia plus de fils mais ça sera plus facile au niveau soft de piloter les 3 bandeaux séparément que comme un seul long bandeau.

J'espère que tout cela continue à éclairer ta lanterne.

Merci mille fois pour ton aide ! Tout ça me parait plus clair à présent.
Je n'ai pas choisi les LEDs dont tu parles mais des strips à 4 pins : 5v - R-G-B. Leur contrôle me parait plus simple.
je vais avoir 3 bandes en parallèle.
Deux contrôlées exactement de la même façon et la 3ème sur un autre contrôle.

Dans un premier temps il va me falloir comprendre comment cabler ce petit monde pour y arriver.
J'ai opté pour un proto shield pour souder tout ça correctement vu que le but est de le trimballer en concerts, faut que ce soit un minimum costaud.

Par anticipation, la question que je me pose est la suivante (en examinant les tutos de code, je ne trouve pas ma réponse) : si j'utilise un programme qui anime les leds, peut-on switcher ce programme pour un autre sur commande ? (midi par exemple)
En fait, elles réagiront toutes de la même façon en permanence mais j'aurai juste besoin de changer leur couleur à certains moments.

Attention
Ce dont tu parles ne sont pas des LEDs adressables individuellement
Mais tout le bandeau sera à la même couleur.
Il n'y a pas de contrôleur dans chaque LED, donc tout ce que je viens d'expliquer ne te sert à rien mais à rien du tout.
Çà ne fonctionne pas de la même façon.

Non non, j'ai bien fait attention de choisir des leds adressables.
J'ai pris ces bandeaux : Adafruit NeoPixel Digital RGB LED Strip - White 60 LED [WHITE] : ID 1138 : $99.80 : Adafruit Industries, Unique & fun DIY electronics and kits

J'ai choisi celles ci parce qu'il y a énormément de tutos pour les utiliser, ça va m'aider à commencer à jouer ! XD

Si tu as pris celles-ci, tres bien. Ce sont les mêmes que celles d'eBay. Juste plus chères + ce que les douanes risquent de te réclamer.
Et il y a bien 3 fils. Pas 4.
Pour les tutos, si tu reprends mon 1er post, c'est chez Adafruit que t'avais déjà orienté. Ils marchent tout aussi bienavec les strips d'eBay.

J'ai encore tout confondu ...

J'ai lu tellement de choses que hier soir, un peu tard, je n'avais plus idées tout à fait claires.
Bref j'ai pris ces bandes, sur ebay vu que je pouvais encore annuler ma commande, on va bien voir ... Et du coup, je peux appliquer tes conseils ci dessus XD

J'ai fait des schémas de mon montage, ça a l'air plutot simple en fait.

Maintenant, il va falloir trouver comment les contrôler, et sachant que je bosse avec du midi, ça va pas être facile ...

Pas de panique. Mais je croyais que tu avait pris des bandeaux à 4 fils : 12V, Rouge, vert, Bleu qui ne sont pas adressable LED par LED.

Bon, l'inconvénient d'eBay c'est le délai. Généralement 3 semaines pour venir de Chine. Adafruit est plus cher mais plus rapide.

Schémas ? Tu veux qu'on vérifie ?

Je croyais que tu voulais piloter cela par LeapMotion depuis Processing ?
Dans processing tu peux communiquer avec ton Arduino relié par USB ou bien par Ethernet ou Wifi ou Bluetooth.
Et pourquoi pas par MIDI ?
Il y a un shield MIDI pour Arduino mais ce n'est pas sorcier à fabriqué soi même si tu es pas trop manchot avec un fer à souder : une embase DIN 5broches, 2 résistances, un opto-coupleur car tu n'as besoin que de recevoir (MIDI IN).

Merci pour tes réponses !

Alors je reprends parce que mes idées partent dans tous les sens et ça devient un peu le foutoir dans ma tête :blush: :stuck_out_tongue:

On a donc :

Leap Motion - > Midi Bridge - > Ableton Live (pour controler le son) ça ... c'est fait et ce n'est rien à faire.

Ensuite, là où sont mes interrogations, c'est le contrôle des LEDs.
Parce que soit l'arduino peut comprendre le midi et l'utiliser pour contrôler les LEDs ... auquel cas il n'y a besoin d'aucun branchement en midi ... on peut faire :

Midi Bridge / Ableton - > Arduino - > Leds ... ça direct par l'USB (avec un soft genre MidiSerial qui adresse les signaux midi vers l'arduino à travers l'USB)

Sinon, il faut convertir le midi en d'autres DATA ... avec processing donc :
Midi Bridge / Ableton - > Processing - > Arduino - > Leds

En fait, dans l'idéal, il faudrait que l'arduino puisse écouter certains channels midi et utiliser les valeurs (0-127) pour allumer les LEDS ou controler la puissance d'éclairage ...

Tu peux effectivement facilement associer une led à une note et utiliser la vélocité pour piloter la luminosité.
Pour la couleur ? 3 notes (une pour rouge, une pour bleue, une pour vert ?)
Ou alors note pour la led, vélocité pour la couleur et aftertouch pour la luminosité....

Si MidiSerial te permet d'envoyer sur l'USB vers ton Arduino sans passer par du hard supplémentaire, super.
Sinon, comme je te l'ai dis, mettre une réception MIDI sur une arduino c'est top facile, ce qui permet de déporter l'Arduino où tu veux.

Au fait, tu ne t'y connaitrait pas en MIDI via Bluetooth sur Mac ?
Y'a notre pote William qui cherche à faire communiquer un montage Arduino MIDI (pédale d'effet) avec son MAC via Bluetooth.
C'est ici : http://forum.arduino.cc/index.php?topic=200166.0

J'avoue que j'ai l'habitude faire communiquer les appareils en wifi et me suis peu essayé au bluetooth mais je vais jeter un oeil.
A priori, sur mac, tous les appareils communiquant en bluetooth et capables d'envoyer du MIDI ou OSC sont reconnus nativement par les ports MIDI.

Les notes, ça ne me suffira pas.
En effet, le midibrige qui chope les data du leap motion n'envoie que des CC 0-127 ... pas des notes ON/OFF ... Ça pourrait, potentiellement ... Mais il serait hyper complexe (et inutile pour moi) de coder des signaux midi assignés à la position des mains. Il est bien plus simple de faire un CC qui court de 0 à 127 de gauche à droite et un autre de bas en haut. Ça me permet d'obtenir un controle en X-Y et c'est déjà beaucoup ...
Alors bon, on pourrait imaginer convertir les notes en CC mais là ça devient casse tête ...

Moi ce serait vraiment un Control Change pour choisir quelle LED (donc 127 LEDs potentiellement) et un autre CC pour la luminosité.
Dans l'idéal, la couleur changerait avec un Note On par exemple mais ça, ce n'est pas ma priorité ... Si déjà j'arrive à faire ce que je veux tout en blanc, pour ce projet là, c'est chouette.

Je n'ai aucune idée du code à faire avaler à l'Arduino pour qu'il écoute des channels midi spécifiques et analyse les valeurs des Control Change ... :~

Question subsidiaire : aurais tu quelque part un tuto pour le montage du port MIDI IN sur l'arduino (sachant que ça s'adresse à un GRAND débutant ]:D) je peux toujours en monter un, ce ne sera pas perdu ...

J'espère que tu as quand même un peu des doigts pour douder.

je te conseille de faire l'emplette d'un "shield" d'expérimentation tel que : http://www.gotronic.fr/art-kit-proto-shield-proto-uno-18748.htm
sur lequel tu pourras souder :

Cela veut dire que tu va connecter l'entrée MIDI à la broche de réception série de ton Arduino (RX) et que les données MIDI seront à recevoir avec "Serial" : Le même "Serial" que tu as peut être utilisé pour communiquer avec le terminal Arduino.
Mais pour le MIDI il faudra faire "Serial.begin(31250);" ce qui fait que le terminal Arduino ne marchera plus car l'interface Série/USB ne peut pas fonctionner à 31250 baud.

Ensuite l'utilisation en soft c'est avec Serial.available() pour savoir si un octet est arrivé, Serial.read() pour lire les octets.
Si tu ne le connais pas, il faudra apprendre le protocole MIDI et analyser octet par octet pour trouver les commandes CC ou program change ou notes, etc ... Le numéro de canal est sur 4 bits dans la commande, donc il faut analyser les octets pour savoir s'ils sont pour toi.

Mais on n'en est pas encore au soft....

Tu as déjà acheté ton Arduino ?
Si tu as une UNO? un seul port série donc tu ne pourra pas faire du debug sur le terminal (Serial.print()) quand tu utiliseras le MIDI.
Sinon la MEGA est surpuissante pour le besoin mais a des ports série supplémentaires ce qui permet de conserver la liaison série/USB avec ton Mac et d'utiliser un autre Serial (Serial1, Serial2 ou Serial3) pour le MIDI.

screenshot.55.png