CaptainCaptain PowerLights partie 4

Le découpage en épisodes pourrait laisser croire que je me suis occupé de tout le hardware avant de passer au soft. En réalité tout s'est goupillé en parallèle, entraînant l'apparition d'idées et de fonctionnalités que je n'aurais pas osées autrement.

Épisode 4 : demandez le programme

Disclaimer : je ne code pas. Un peu de html/CSS à l'occasion mais ce n'est pas à proprement parler de la programmation. J'ai juste eu la chance de tomber sur une base suffisamment claire et très bien documentée pour comprendre son fonctionnement et l'adapter à mes besoins.

Trouver une bonne base

Quand on ne sait pas faire, on regarde comment font les autres. Il y a Intructables mais il y aussi Adafruit, le fournisseur des Neopixels, qui fournit un tas de tutos pour reproduire des projets.

Et voilà donc en faisant mon shopping, que je tombe sur ceci :

Mais alors je vous mentirais depuis le début, tout ce que j'aurais fait c'est de suivre bêtement un tuto ? Je vous trouve bien rapides à juger les gens.

Ce projet Adafruit est une merveille de simplicité mais :

  • tout le système est embarqué dans la batterie, impossible de l'installer ponctuellement sur le matos d'une salle de concert
  • du coup, c'est calibré pour une seule batterie. Changez d'un iota les conditions et tout est à refaire
  • on ne peut utiliser que le micro embarqué classique, impossible de changer de source
  • Rien n'est prévu pour activer / désactiver les lumières en plein jeu

Tout ces problèmes ont déjà été résolus par la conception du hardware dans l'épisode 3. Reste à bouffer du code pour faire fonctionner ce bazar.

Comprendre comment ça marche

Une vidéo publiée par Captain Captain (@wearecapcap) le

Premier constat qui fait plaisir : ça fonctionne. Sans aucune modification, le programme Arduino réagit parfaitement au hardware que j'ai conçu. Quelle que soit la source sonore, on obtient un retour visuel cohérent.

Et tout casser pour le refaire à sa sauce

Parce qu'il est bien joli ce code, mais il ne fait pas exactement ce que je voudrais qu'il fasse :

  • Je voudrais obtenir des flashs de lumière où toutes les LED s'allumeraient et s'éteindraient en même temps, au lieu du VU-metre du code original
  • C'est lié au VU-metre, le nombre de LED est déclaré en dur dans le code. Je dois pouvoir brancher, 1, 2 ou 3 modules de 80 LEDS sans que cela altère l'effet visuel.
  • Nous avons un bel et chamarré effet arc-en-ciel. C'est un peu kitsh. Je ne voudrais que le bleu acier officiel de CaptainCaptain.
  • Je veux pouvoir choisir quand les PowerLights sont déclenchées ou inactives à l'aide d'un footswitch.
  • Je veux avoir plusieurs effets à disposition, et pouvoir en changer en plein concert

Au final, la plupart de mes besoins vont vers une simplification du code. Après tout les effets visuels que je veux sont moins élaborés. Que je croyais...

Quelques soirs et week-ends plus tard

Je n'ai pas réussi à faire entièrement ce que je voulais et je n'ai pas compris la moitié des erreurs de syntaxe renvoyées par le compilateur. Je reste à ce jour totalement désarmé face au fonctionnement des boucles en C#. Mais mission accomplie.

  • L'effet visuel est celui que je voulais, mais je n'en ai qu'un. Pour intégrer plusieurs boucles d'effets dans le même code sans le faire planter, il faudrait refondre toute la logique de fonctionnement du bidule. J'ai pas les skills.
  • Mais je peux l'interrompre comme je veux avec l'interrupteur sur la pédale, comme prévu
  • Le bouton de sélection d'effet ne fonctionne évidemment pas, alors j'en ai fait un contrôle de luminosité globale. En réalité je ne m'en servirai que pour préserver mes yeux pendant les tests. Sur scène c'est toujours à fond.

Le nouveau code complet sera prochainement posté sur Instructables. Et probablement GitHub aussi (stay tuned).

On a le code, on a les composants. Dans la partie 5 on joue avec le fer à souder et la découpe laser, c'est l'heure du design et de la fabrication !