LEDs pour jeu de société

Portrait de jeuxpcagogo10

bonjour j'aimerais savoir si quelqu'un à une solution à mon problème. je joue à un jeu de société "Alien vs predator the hunt begin", j'ai pour projet d'imprimer en 3D le jeu et d'ajouter des LED. (matériel : Esp8266 d1mini / PC / WS2812B led / power sup +5v).

Le jeu est composé de plusieurs rooms  (dans mon exemple : "room A" "room B" "room C"). chaque room est indépendante des autres. je veux mettre des LED pour chaque room. Je veux pouvoir dire à l'ESP : LEDs room A = red, LEDs room C = green, LEDs room B = bleu.

- Comment je fais pour que mon ESP reconnaisse les rooms automatiquement ? sachant que j'ai pas forcément toutes les rooms à chaque partie ET qu'elles ne sont pas toujours dans le même ordre (voir le schémas contexte "1" et contexte "2")

- Quel logiciel utilisé ? (je pensais à truc open source "ESP8266-FastLED-IoT-Webserver" mais c'est toujours le même problème comme je fais reconnaitre les rooms ?

Portrait de Louis.D

Ce n'est pas très clair comme problème !

Pourrais tu expliquer plus clairement ton problème.

Si c'est pour selectionner une led parmis plusieurs et de l'allumer de la couleur de ton choix c'est  très facile !

Par contre ton schema est faux les LEDs doivent être branchées en série c'est à dire les unes derrière les autres !

Portrait de jeuxpcagogo10

je vais l'expliquer de façon plus algorithmyque alors. (quand je parle de "position" c'est l'ordre de branchement physique des LED dans le circuit)

j'ai des LED que je branche :

"LED A position=X" et "LED B position=Y" et "LED C position=Z"

je définis la couleur des LED avec un "logiciel X" donc :

"LED A position=X couleur=rouge" et "LED B position=Y couleur=vert" et "LED C position=Z couleur=blanc"

j'éteins tout, je débranche, je mélange les LED je rebranche dans n'importe quelle position les LED par exemple :

"LED A position=Y" et "LED B position=Z" et "LED C position =X"

je veux qu'automatiquement mon ESP avec un "logiciel X" mette les bonnes couleurs à LED A, LED B et LED C comme précédemment définit SANS RIEN  AVOIR A TOUCHER niveau logiciel.

ça donne :

"LED A position=Y couleur=rouge" et "LED B position=Z couleur=vert" et "LED C position=X couleur=blanc"

-------------------

problème 1 - Je ne sais pas comment faire reconnaitre automatiquement les LED à mon ESP ? (alors qu'elles n'ont pas la même position dans le câblage je rappelle !)

(hypothèse de solution : chaque LED a une adresse MAC ? une puce ou une carte à ajouter en plus aux LED ?)

problème 2 - quel logiciel est capable de tout ça avec des LED ?

(hypothèse de solution : wled ? ESP8266-FastLED-IoT-Webserver ?)

Portrait de jeuxpcagogo10

ah oui j'avais pas fais attention au branchement des LED sur le schémas pardon ^^"

Portrait de jeuxpcagogo10

voila le schémas :

Portrait de Louis.D

Je ne comprends pas comment tu peux mélanger les LEDs !!!

Par contre pour commencer à te faire comprendre comment chosir une LED et lui attribuer une couleur voilà comment cela fonctionne.

#include <Adafruit_NeoPixel.h>
#define LED_PIN    6 // Numéro de la broche Data 6 ici par exemple
#define LED_COUNT 3 // nombre de LEDs
int N,Rouge, Vert, Bleu;
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
}

void loop() {
  strip.setPixelColor(N, Rouge, Vert, Bleu);
  /* Ici tu definis le numero de la Led que tu veux changer
     puis la valeur voulue pour Rouge, Vert et Bleu
     entre 0 et 255 pour chacune d'elle, le tout séparé par des virgules*/                                                                              
  strip.setBrightness(128); // ici tu définis la puissance lumineuse de 0 à 255
  strip.show(); // Pour finir tu établis le changement.     
 }
 /* Par exemple tu veux allumer la première en Bleu,
   la seconde en Blanc et la derniere en Rouge ( Cocorico !)
   strip.setPixelColor(0,0,0,255);
   strip.setPixelColor(1,255,255,255);
   strip.setPixelColor(2,255,0,0);
   strip.setBrightness(255);
   strip.show();
 tu noteras que la première LED à le numéro 0 puis 1 etc...
   */

Portrait de Louis.D

Si tu veux la library " Adafruit_NeoPixel.h " clique sur le lien !

Portrait de Louis.D

Bon j'ai écrit un bout de code pour voir si j'ai bien compris.

  •     Tu disposes de plusieurs Rooms auxquelles sont attribué une couleur différente pour chacune.
  •     Tu veux choisir au hasard 3 Rooms parmi celles-ci mais dans un ordre aléatoire
  •     A chaque fois tu veux que les trois Rooms conservent la même couleur attribuée initialement.

Pour illustrer ce que je crois avoir compris je te propose un programme Arduino sachant que:

  1.     On dispose de 6 Rooms
  2.     On attribue une couleur fixe et unique à chaque Room
  3.     A chaque contexte on choisit de manière Aléatoire 3 de ces Rooms parmi les 6 dont on dispose
  4.     Dans ces condition on affiche ces Rooms avec la couleur qui leur a été attribuée initialement.

Je te propose donc de réaliser ceci pour par exemple 4 contextes différents mais cette limite n'est pas définitive.

Voici le résultat , tu peux voir que, bien que contexte soient différents, chaque Room conserve sa couleur quelle que soit sa place.

et ci-dessous le code :

String Room[6] = {{"A"}, {"B"}, {"C"}, {"D"}, {"E"}, {"F"}};
String Couleur[6] = {{"Bleu"}, {"Blanc"}, {"Rouge"}, {"Vert"}, {"Gris"}, {"Violet"}}; // Couleurs disponibles
String CoulRoom[6]; // Attribution future d'une couleur à chaque Room de manière Aléatoire
int Contextes = 0; // Numéro du contexte
String Attribution ;
int X, N;

void setup() {
  Serial.begin(115200);
  AttribColor();
  Serial.println();
  Serial.println();
  Contexte();
}

void loop() {

}

void AttribColor() {
  for (N = 1; N < 8; N++)
    Serial.println();
  Serial.println("   Attribution aléatoire des couleurs");
  Serial.println();
  Attribution = "*";

  for (N = 0; N < 6; N++) {
    X = random(0, 6);
    while ( Attribution.indexOf(String(X)) > 0) {
      X = random(0, 6);
    }
    Attribution = Attribution + String(X);
    CoulRoom[N] = Couleur[X];
    Serial.println("Room " + Room[N] + " = " + CoulRoom [N]);
  }
}

void Contexte() {

  for (Contextes = 1; Contextes < 4; Contextes ++) {
    Attribution = "*";
    Serial.println("Contexte :" + String(Contextes));
    Serial.println();
    for (N = 1; N < 4; N++) {
      X = random(0, 6);
      while ( Attribution.indexOf(String(X)) > 0) {
        X = random(0, 6);
      }
      Attribution = Attribution + String(X);
      Serial.println("Room " + Room[X] + " " + CoulRoom[X]);
    }
    Serial.println();
  }
}

Avant d'aller plus loin je souhaiterais que tu me dises si j'ai bien compris ou si je fais fausse route !

Portrait de Louis.D

Si tu utilises la wifi, tu pourras choisir les couleurs, fixer le nombre de Rooms fixé la couleur à chaque Room, faire varier la luminosité, fixer le nombre de Room par Contexte et certainement d'autres fonctions auxquelles je ne pense pas à cet instant ! Tu pourras aussi utiliser cette wifi sans routeur ni Box internet.

Portrait de Walter

Bonjour,
cela semble ressembler à gloomhaven :)

Il n'y a pas vraiment de moyen simple de faire reconnaitre une série de LED à l'ESP, autre que d’identifier chaque série de LED et d'y mettre une prise.
Ainsi tu branchera la série A toujours au même endroit sur ton ESP, qui aura une prise du sexe opposé identifier aussi avec la lettre A.
Ce qui fait que ton programme pourra allumer les rooms présente dans ton scénario.
Personnellement je ne vois pas vraiment d’intérêt d'avoir un système plus complexe, mais c'est aussi possible.
As tu déjà une idée de ton programme?
Peux tu nous décrire plus en détails comment vois le déroulement d'une partie avec tes LEDs?

Portrait de Louis.D

Walter il suffit de mélanger d'une manière électronique et non physiquement ! Car le fait de débrancher les LEDs fait perdre la programmation de celles-ci ! Sans compter qu'un nouvelle room peut en remplacer un autre !

Portrait de Walter

Oui, mais je ne suis pas sûr que cela réponde à son problème ou à l'idée qu'il s'en fait.
Je pense que son projet à besoin de plus de maturation avant de passer au codage à proprement dit.

Portrait de Louis.D

Non ma solution répond exactement à ce dont il nous à fait part, maintenant si cela ne convient pas c'est que son cahier des charges est faux ou incomplet !

Portrait de Walter

C'est pas la peine de s’énerver :)
Tu parle de quoi de ton code ou de mélanger par logiciel?
J'ai des doutes sur ce qu'il veut vraiment faire!

De ce que j'ai compris, il voulait que l'esp32 reconnaisse de lui même les LED associés a une room(piece) de son jeu et pouvoir définir la couleur de celle-ci par son µC et des boutons(A,B,C).
En gros il y a des LED insérés dans ses planches de carton et suivant les scénarios, il les branches à son µC.
L'ordre des planches peuvent donc changer suivant le scénario, mais effectivement ce n'est pas un soucis en soit pour le logiciel.

Bon de toute façon, pas sûr que l'on ait plus d'information :)

Portrait de Louis.D

Où as-tu lu qu'il y avait 3 boutons, une planche en carton et je ne sais quoi d'autre  ?

 Par contre je ne suis pas plus énervé que toi ! ( mort de rire )

Dans ma solution le mélange est réalisé d'une manière aléatoire par le microprocesseur !

Portrait de Walter

je l'ai vu nulle part, comme indiqué, c'est ce que j'ai compris ou interprété.
Cool, comme je suis super zen, toi aussi :)

Oui, j'ai bien vu, mais ce qu'il veut, c'est que l'ESP reconnaisse la room et lui attribut toujours la bonne couleur, quelque soit dans quel ordre elles sont branchées.
C'est ça que je pense qui n'est pas assez clairement défini et si 'est vraiment bien ce qu'il veut faire.

Portrait de Louis.D

C'est exactement ce que je propose ! Tu n'as peut être pas compris l'intégralité de mon code.

Portrait de Walter

Non effectivement, je n'ai pas du comprendre ton code.
Ou  fait tu la reconnaissance des planches du jeu, pour lui affecter la couleur qu'il lui as choisi?