Jeux de course lumineux arduino lightrush

Bonjour,

J’essaie de compiler un code pour faire fonctionner un jeu pour mon fils mais j’ai un problème d’écriture.

C’est un code trouvé sur le net et que j’ai légèrement modifié pour passer de 15 à 30 leds et j’y ai inclus la librairie Adafruit_NeoPixel.h

le voici :

 // Récupération de la bibliothèque commandant la barre de leds
#include <Adafruit_NeoPixel.h>  
// initialisation de la barre de leds : const int LUM = 100;
// luminosité générale de la barre de leds (0 à  255 max) const int CDE = 6;
// c'est la borne 6 qui commandera la barre de leds const int NB_leds = 30;
// nombre de leds sur la barre Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, CDE, NEO_GRB + NEO_KHZ800); 
// les couleurs de base du jeu (R, V, B, J) : const uint32_t COULEURS[4] = {strip.Color(255, 0, 0), strip.Color(0, 255, 0), strip.Color(0, 0, 255), strip.Color(255, 255, 0)}; 
// les boutons (R, V, B, J) et leur borne de raccordement const int BTN[4] = {2, 3, 4, 5}; 
// variables liées aux boutons : int BTN_precedent[4] = {HIGH, HIGH, HIGH, HIGH}; 
// Etat par défaut en pull-up = +5V int BTN_actuel[4]; 
// état à l'instant t des boutons = non définit  int BTN_position[4] = {-1, -1, -1, -1};
// position initiale des leds allumées = aucune int BTN_chgt[4] = {0,0,0,0}; 
// position des chgt d'état des boutons
// variable de victoire int BTN_victoire = -1; 
// prendra le n° du bouton vainqueur, entre 0 et 3 donc // Mes boutons sont dotés de leds intégrées => ajout de leur prise en compte 
// les leds des boutons (R, V, B, J) et leur borne de raccordement const int LED[4] = {10, 7, 8, 9}; 
void setup() { 
  // les boutons sont des entrées, les leds associées des sorties, éteintes : for(int i=0; i<4; i++) { pinMode(BTN[i], INPUT); pinMode(LED[i], OUTPUT); digitalWrite(LED[i], HIGH); } 
  // initialisation barre de leds : strip.begin(); 
  // démarrage strip.clear();
  // toutes les leds éteintes strip.setBrightness(LUM);
  // réglage de la luminosité qui peut s'avérer trop forte par défaut strip.show(); 
  // on envoie les données 
  // animation de début de jeu : animDebutJeu(); }
void loop() 
  // lecture de l'état actuel des boutons litBoutons(); 
  // teste les chgt d'état des boutons if (testBoutons()) {
  // affichage des leds associées afficheLeds(); } 
  // gestion du cas de victoire if(BTN_victoire > -1) { animFinJeu(); 
  // animation de victoire 
  // attente d'un appui sur un bouton pour recommencer do { litBoutons(); } while(!testBoutons()); resetVar(); 
  // remise à zéro des variables animDebutJeu(); 
  // redémarrage du jeu } } 
  // Animation de début de jeux : 
 void animDebutJeu() {

  // allumage des 4 boutons for(int l=0; l<4; l++) { digitalWrite(LED[l], LOW); } 
  // défilement des 4 couleurs du jeu les unes après les autres for (int j=0; j<4; j++) { for (int i=0; i (NB_leds - 2)) { BTN_victoire = i; } } delay(10); 
  // légère attente pour gérer mes boutons trop sensibles ! ;o) return chgt; } 
  // Test de la led n-1 void testLedPrec(int POS) { for(int i=0; i<4; i++) {
  // on ne fait pas de test si on ne change pas de couleur if(i != POS) { 
  // si la led n-1 est utilisée par une autre couleur if((BTN_position[POS] - 1) == BTN_position[i]) { 
  // on l'allume à cette couleur et on sort strip.setPixelColor(BTN_position[POS]-1, COULEURS[i]); break; } else { 
  // sinon, on l'éteint strip.setPixelColor(BTN_position[POS]-1, 0); } } } } 
 void afficheLeds() 
  for(int i=0; i<4; i++)} 
    // si un chgt est enregistré sur cette couleur if(BTN_chgt[i] != 0) { strip.setPixelColor(BTN_position[i], COULEURS[i]); 
    //on allume la led associée testLedPrec(i); 
    // on gère la led n-1 en fonction de son utilisation par une autre couleur strip.show(); BTN_chgt[i] = 0; 
    // on efface l'indication de chgt } } } 

   }
  
  }
 }
}

Lorsque je le compile j’ai un message d’erreur tel que celui ci-dessous:

Les options de compilation ont été modifiées, tout sera recompilé

C:\Users\MARC~1.SEJ\AppData\Local\Temp\arduino_modified_sketch_455509\sketch_mar23d.ino: In function ‘void setup()’:

sketch_mar23d:35: error: expected initializer before ‘void’

void animDebutJeu() {

^

C:\Users\MARC~1.SEJ\AppData\Local\Temp\arduino_modified_sketch_455509\sketch_mar23d.ino: At global scope:

sketch_mar23d:53: error: expected declaration before ‘}’ token

}

^

exit status 1
expected initializer before ‘void’

Comment remédier à ce problème.

Merci d’avance,

Marc

La boucle animationjeu n’est pas fermé
Dans la boucle afficheled, après le for du met } au lieu de {
La boucle setup est mal fermé, le } est dans les commentaire
Il manque { } dans la loop.

Bonjour,

Qu'est ce que c'est que ce source (presque) toutes les instructions sont en commentaire.

je t’ai remis ton code en forme
il y avait aussi qq erreurs d’accolades, tu as l’option mise en forme qui te permet de voir ce problème

nota, tu n’as pas posté dans la bonne section. ici c’est projets finis

ton code ( pas testé en compilation car pas la bibliothèque )

// Récupération de la bibliothèque commandant la barre de leds
#include <Adafruit_NeoPixel.h>
// initialisation de la barre de leds : const int LUM = 100;
// luminosité générale de la barre de leds (0 à  255 max) const int CDE = 6;
// c'est la borne 6 qui commandera la barre de leds const int NB_leds = 30;
// nombre de leds sur la barre Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, CDE, NEO_GRB + NEO_KHZ800);
// les couleurs de base du jeu (R, V, B, J) : const uint32_t COULEURS[4] = {strip.Color(255, 0, 0), strip.Color(0, 255, 0), strip.Color(0, 0, 255), strip.Color(255, 255, 0)};
// les boutons (R, V, B, J) et leur borne de raccordement const int BTN[4] = {2, 3, 4, 5};
// variables liées aux boutons : int BTN_precedent[4] = {HIGH, HIGH, HIGH, HIGH};
// Etat par défaut en pull-up = +5V int BTN_actuel[4];
// état à l'instant t des boutons = non définit  int BTN_position[4] = {-1, -1, -1, -1};
// position initiale des leds allumées = aucune int BTN_chgt[4] = {0,0,0,0};
// position des chgt d'état des boutons
// variable de victoire int BTN_victoire = -1;
// prendra le n° du bouton vainqueur, entre 0 et 3 donc // Mes boutons sont dotés de leds intégrées => ajout de leur prise en compte
// les leds des boutons (R, V, B, J) et leur borne de raccordement const int LED[4] = {10, 7, 8, 9};
void setup()
{
  for (int i = 0; i < 4; i++)// les boutons sont des entrées, les leds associées des sorties, éteintes :
  {
    pinMode(BTN[i], INPUT);
    pinMode(LED[i], OUTPUT);
    digitalWrite(LED[i], HIGH);
  }// initialisation barre de leds :
  strip.begin();// démarrage
  strip.clear(); // toutes les leds éteintes
  strip.setBrightness(LUM);// réglage de la luminosité qui peut s'avérer trop forte par défaut
  strip.show();// on envoie les données
  animDebutJeu();// animation de début de jeu :
}


void loop()
{
  // lecture de l'état actuel des boutons
  litBoutons();
  // teste les chgt d'état des boutons
  if (testBoutons())
  {
    afficheLeds(); // affichage des leds associées
  }
  if (BTN_victoire > -1)// gestion du cas de victoire
  {
    animFinJeu();// animation de victoire
    do
    { // attente d'un appui sur un bouton pour recommencer
      litBoutons();
    }
    while (!testBoutons());
    resetVar();// remise à zéro des variables
    animDebutJeu();//redémarrage du jeu
  }
}


// Animation de début de jeux :
void animDebutJeu()
{
  // allumage des 4 boutons
  for (int l = 0; l < 4; l++)
  {
    digitalWrite(LED[l], LOW);
  }
  // défilement des 4 couleurs du jeu les unes après les autres
  for (int j = 0; j < 4; j++)
  {
    for (int i = 0; i (NB_leds - 2))
    {
      BTN_victoire = i;
    }
  }
  delay(10);
  // légère attente pour gérer mes boutons trop sensibles ! ;o)
  return chgt;
}


// Test de la led n-1
void testLedPrec(int POS)
{
  for (int i = 0; i < 4; i++)
  {
    // on ne fait pas de test si on ne change pas de couleur
    if (i != POS)
    {
      // si la led n-1 est utilisée par une autre couleur
      if ((BTN_position[POS] - 1) == BTN_position[i])
      {
        // on l'allume à cette couleur et on sort
        strip.setPixelColor(BTN_position[POS] - 1, COULEURS[i]); break;
      }
      else
      {
        // sinon, on l'éteint
        strip.setPixelColor(BTN_position[POS] - 1, 0);
      }
    }
  }
}


void afficheLeds()
{
  for (int i = 0; i < 4; i++)
  {
    // si un chgt est enregistré sur cette couleur
    if (BTN_chgt[i] != 0)
    {
      strip.setPixelColor(BTN_position[i], COULEURS[i]);
      //on allume la led associée
      testLedPrec(i);
      // on gère la led n-1 en fonction de son utilisation par une autre couleur
      strip.show();
      BTN_chgt[i] = 0;
      // on efface l'indication de chgt
    }
  }
}

Il y a encore un problème de formatage. Toutes les définitions de variables sont en commentaire.

Il serait plus simple de reprendre le programme original.
LAMALEON, peux tu donner le lien?

Bonjour,

Voici le lien d'origine

http://dtbhw0y54ogly.cloudfront.net/wp-content/uploads/formidable/09064335/lightrush.ino

et le ci-dessous le code que j'essaie de modifier:

http://13939-presscdn-0-86.pagely.netdna-cdn.com/wp-content/uploads/formidable/Course_Leds_3.ino.ino

et le lien du projet:

http://ouiaremakers.com/un-jeu-de-course-lumineux-a-la-ipxav/

Merci pour vos efforts et conseils,

Salut Lamaleon,

Poses moi la question directement en commentaire sur le tuto. Je peux t'expliquer tout le code si tu veux :wink:

En tout cas ravi que ça te plaise :slight_smile:

Bonne journée

Xavier

testes ça

// Récupération de la bibliothèque commandant la barre de leds
#include <Adafruit_NeoPixel.h>
// initialisation de la barre de leds : 
const int LUM = 100;
// luminosité générale de la barre de leds (0 à  255 max) 
const int CDE = 6;
// c'est la borne 6 qui commandera la barre de leds 
const int NB_leds = 30;
// nombre de leds sur la barre Adafruit_NeoPixel 
strip = Adafruit_NeoPixel(30, CDE, NEO_GRB + NEO_KHZ800);
// les couleurs de base du jeu (R, V, B, J) : 
const uint32_t COULEURS[4] = {strip.Color(255, 0, 0), strip.Color(0, 255, 0), strip.Color(0, 0, 255), strip.Color(255, 255, 0)};
// les boutons (R, V, B, J) et leur borne de raccordement 
const int BTN[4] = {2, 3, 4, 5};
// variables liées aux boutons : 
int BTN_precedent[4] = {HIGH, HIGH, HIGH, HIGH};
// Etat par défaut en pull-up = +5V 
int BTN_actuel[4];
// état à l'instant t des boutons = non définit  
int BTN_position[4] = {-1, -1, -1, -1};
// position initiale des leds allumées = aucune 
int BTN_chgt[4] = {0,0,0,0};
// position des chgt d'état des boutons
// variable de victoire 
int BTN_victoire = -1;
// prendra le n° du bouton vainqueur, entre 0 et 3 donc 
// Mes boutons sont dotés de leds intégrées => ajout de leur prise en compte
// les leds des boutons (R, V, B, J) et leur borne de raccordement 
const int LED[4] = {10, 7, 8, 9};
void setup()
{
  for (int i = 0; i < 4; i++)// les boutons sont des entrées, les leds associées des sorties, éteintes :
  {
    pinMode(BTN[i], INPUT);
    pinMode(LED[i], OUTPUT);
    digitalWrite(LED[i], HIGH);
  }// initialisation barre de leds :
  strip.begin();// démarrage
  strip.clear(); // toutes les leds éteintes
  strip.setBrightness(LUM);// réglage de la luminosité qui peut s'avérer trop forte par défaut
  strip.show();// on envoie les données
  animDebutJeu();// animation de début de jeu :
}


void loop()
{
  // lecture de l'état actuel des boutons
  litBoutons();
  // teste les chgt d'état des boutons
  if (testBoutons())
  {
    afficheLeds(); // affichage des leds associées
  }
  if (BTN_victoire > -1)// gestion du cas de victoire
  {
    animFinJeu();// animation de victoire
    do
    { // attente d'un appui sur un bouton pour recommencer
      litBoutons();
    }
    while (!testBoutons());
    resetVar();// remise à zéro des variables
    animDebutJeu();//redémarrage du jeu
  }
}


// Animation de début de jeux :
void animDebutJeu()
{
  // allumage des 4 boutons
  for (int l = 0; l < 4; l++)
  {
    digitalWrite(LED[l], LOW);
  }
  // défilement des 4 couleurs du jeu les unes après les autres
  for (int j = 0; j < 4; j++)
  {
    for (int i = 0; i (NB_leds - 2))
    {
      BTN_victoire = i;
    }
  }
  delay(10);
  // légère attente pour gérer mes boutons trop sensibles ! ;o)
  return chgt;
}


// Test de la led n-1
void testLedPrec(int POS)
{
  for (int i = 0; i < 4; i++)
  {
    // on ne fait pas de test si on ne change pas de couleur
    if (i != POS)
    {
      // si la led n-1 est utilisée par une autre couleur
      if ((BTN_position[POS] - 1) == BTN_position[i])
      {
        // on l'allume à cette couleur et on sort
        strip.setPixelColor(BTN_position[POS] - 1, COULEURS[i]); break;
      }
      else
      {
        // sinon, on l'éteint
        strip.setPixelColor(BTN_position[POS] - 1, 0);
      }
    }
  }
}


void afficheLeds()
{
  for (int i = 0; i < 4; i++)
  {
    // si un chgt est enregistré sur cette couleur
    if (BTN_chgt[i] != 0)
    {
      strip.setPixelColor(BTN_position[i], COULEURS[i]);
      //on allume la led associée
      testLedPrec(i);
      // on gère la led n-1 en fonction de son utilisation par une autre couleur
      strip.show();
      BTN_chgt[i] = 0;
      // on efface l'indication de chgt
    }
  }
}