Problème programmation projet escalier lumineux

Bonjour à tous,

Je viens de finir la rénovation de mon escalier de 15 marches avec intégration de ruban de led dans les nez de marches. Comme vous vous en doutez cet éclairage doit être piloté par un arduino méga. Voici le code utilisé et les message d'erreurs ensuite , merci d'avance pour votre aide :

#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUMPIXELS 659


Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


 unsigned long timeOut=60000;      // timestamp to remember when the PIR was triggered.
 int downUp = 0;                   // variable to rememer the direction of travel up or down the stairs
 int irPinTop = 11;                 // PIN du PIR en haut
 int irPinBottom =10;               // PIN du PIR en bas
 int irValueTop = LOW;             // Variable to hold the PIR status
 int irValueBottom = LOW;          // Variable to hold the PIR status
 int ledPin = 13;                  // LED 13 de la carte Arduino quand detection d'un PIR
 int colourArray[350];             // An array to hold RGB values
 int change = 1;                   // used in 'breathing' the LED's
 int breathe = 0;                  // used in 'breathing' the LED's
 int LDRSensor = A0;        // Light dependant resistor
 int LDRValue = 0;          // Variable to hold the LDR value


void setup() {
 strip.begin();
 strip.setBrightness(50);              //Luminosite
 strip.show();                         // Initialize all pixels to 'off'
 pinMode(ledPin, OUTPUT);              // initilise the onboard pin 13 LED as an indicator
 pinMode(irPinTop, INPUT_PULLUP);      // for PIR at top of stairs initialise the input pin and use the internal restistor
 pinMode(irPinBottom, INPUT_PULLUP);   // for PIR at bottom of stairs initialise the input pin and use the internal restistor
 delay (200);                            // it takes the sensor 2 seconds to scan the area around it before it can


}


void loop() {
LDRValue = analogRead(LDRSensor);
  Serial.println(LDRValue);
  
  if (timeOut+57000 < millis()) {        // idle state - 'breathe' the top and bottom LED to show program is looping
    
     breathe = breathe + change;
     strip.setPixelColor(0,0,0,breathe);
     strip.setPixelColor(116,0,0,breathe);
     strip.show();
     if (breathe == 100 || breathe == 0) change = -change;      // breathe the LED from 0 = off to 100 = fairly bright
     if (breathe == 100 || breathe == 0) delay (300);           // Pause at beginning and end of each breath
     delay(25); 
  }
  
  if (LDRValue > 600) {        // only switch on LED's at night when LDR senses low light conditions - you may have to change the number for your circumstances!




   irValueTop = digitalRead(irPinTop);             // Constantly poll the PIR at the top of the stairs
   irValueBottom = digitalRead(irPinBottom);       // Constantly poll the PIR at the bottom of the stairs
   
   if (irValueTop == HIGH && downUp != 2)  {
     timeOut=millis();
     downUp = 1;
     topdown();                                                  // lights up the strip from top down
     delay(100);
     for (int x = 0; x < 100; x++){                              //start loop for twinkling
     int randomled = random(0, 299);                             //choose random led to twinklke
     int delaytimeon = random(20, 50);                           //choose how long to stay on full brightness
     int delaytimeoff = random(5, 50);                           //choose how long before next led sparkle
     strip.setPixelColor(randomled, strip.Color(255,255,255));   //set choosen pixel to full brightness
     strip.show();
     delay(delaytimeon);
     strip.setPixelColor(randomled, strip.Color(125,125,125));   //set the same choosen pixel back to normal brightness
     strip.show();
     delay(delaytimeoff);
     } //repeat cycle
     


   }


   if (irValueBottom == HIGH && downUp != 1)  {
     timeOut=millis();
     downUp = 2;
     bottomup();                                                 // lights up the strip from bottom up
     delay(100);
     for (int x = 0; x < 100; x++){                              //start loop for twinkling
     int randomled = random(0, 299);                             //choose random led to twinklke
     int delaytimeon = random(20, 50);                           //choose how long to stay on full brightness
     int delaytimeoff = random(5, 50);                           //choose how long before next led sparkle
     strip.setPixelColor(randomled, strip.Color(255,255,255));   //set choosen pixel to full brightness
     strip.show();
     delay(delaytimeon);
     strip.setPixelColor(randomled, strip.Color(125,125,125));   //set the same choosen pixel back to normal brightness
     strip.show();
     delay(delaytimeoff);
     } //repeat cycle
     
   }


   if (timeOut+10000 < millis() && timeOut+15000 < millis()) {     //switch off LED's in the direction of travel.
      if (downUp == 1) {
         colourWipeDown(strip.Color(0, 0, 0), 1);                  // Off
         delay(1000);


           for (int x = 0; x < 100; x++){
           strip.setPixelColor(0, strip.Color(0,0,x));             //put the led 0 on a dim standby state      
           strip.show();
           delay(50);
      }
      }
     
      if (downUp == 2)  {
       colourWipeUp(strip.Color(0, 0, 0), 1);   // Off
       delay(1000);
           for (int x = 0; x < 100; x++){
           strip.setPixelColor(0, strip.Color(0,0,x));             //put the led 0 a on a dim standby state        
           strip.show();
           delay(50);
      }
      }
     
     downUp = 0;
   }
     delay(100);
     
     
}


void topdown() {
   colourWipeDown(strip.Color(125, 125, 125), 25 );                 // Warm White
   
}






void bottomup() {
   colourWipeUp(strip.Color(125, 125, 125), 25);                    // Warm White


 }




                                                                    // Fade light each step strip
void colourWipeDown(uint32_t c, uint16_t wait) {


 for (uint16_t j = 0; j < 300; j++){
 int start = strip.numPixels()/300 *j;    
       for (uint16_t i = start; i < start + 1; i++){
   strip.setPixelColor(i, c);
       }
     strip.show();  
 delay(5);
 }


}




void clearStrip(){
 for (int l=0; l<strip.numPixels(); l++){
   strip.setPixelColor(l, (0,0,0));
 }
     
}
                                                                     // Fade light each step strip
void colourWipeUp(uint32_t c, uint16_t wait) {
  for (uint16_t j = 300; j > 0; j--){
  int start = strip.numPixels()/300 *j;
         for (uint16_t i = start; i > start - 1; i--){
         strip.setPixelColor(i-1, c);
        }
         strip.show();
 delay(5);
 }  


}
Escalier_V1:55:6: error: 'topdown' was not declared in this scope


Escalier_V1:75:6: error: 'bottomup' was not declared in this scope


Escalier_V1:93:10: error: 'colourWipeDown' was not declared in this scope


Escalier_V1:104:8: error: 'colourWipeUp' was not declared in this scope


C:\Users\Grégory\OneDrive\Documents\Arduino\Escalier_V1\Escalier_V1.ino:104:8: note: suggested alternative: 'colourArray'


Escalier_V1:120:16: error: a function-definition is not allowed here before '{' token


Escalier_V1:127:17: error: a function-definition is not allowed here before '{' token


Escalier_V1:134:48: error: a function-definition is not allowed here before '{' token


Escalier_V1:148:18: error: a function-definition is not allowed here before '{' token


Escalier_V1:155:46: error: a function-definition is not allowed here before '{' token


Escalier_V1:165:1: error: expected '}' at end of input


Utilisation de la bibliothèque Adafruit_NeoPixel version 1.7.0 dans le dossier: C:\Users\Grégory\OneDrive\Documents\Arduino\libraries\Adafruit_NeoPixel 


exit status 1


'topdown' was not declared in this scope
[code/]

Bonjour,
c'est typiquement des accolades manquantes..

   downUp = 0;
   }
     delay(100);
     
     
}
}  <---- il manque celui là.


void topdown() {
   colourWipeDown(strip.Color(125, 125, 125), 25 );                 // Warm White
   
}

De manière général c'est un point que je vérifie quand j'ai ce genre d'erreur.
Dans l'éditeur arduino en cliquant à gauche d'une accolade, l'autre accolade du bloc de code se met en surbrillance.

Merci beaucoup, effectivement c'est beaucoup mieux.
J'y suis depuis le début de l'après midi et je commençais a devenir chèvre

Indente correctement ton code en tapant Control-T dans l'IDE (Pomme-T sur Mac)
les erreurs de {} seront beaucoup plus visibles.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.