Bonsoir a tous

Je viens vous solliciter car je n'arrive pas à compiler mon programme . Je précise que je suis débutant en langage Arduino et que c'est mon premier grand projet .
Je veux éclairer successivement les marches de mon escalier de 13 marches .
Un détecteur en haut et en bas de type ultrason HC SR04 . J 'avais commencé avec des PIR mais ils sont trop ingérables au niveau détection .
Associer a une cellule photo pour détecter le jour/nuit .

Mon matériel:
Un Arduino Méga
Une carte 16 relais
Deux HC SR04
Une photorésistance ( référence a définir )
Des bandes de Leds

Mon programme tiré de plusieurs tuto sur internet .

Erreur de compilage : a function-definition is not allowed here before ' {' token

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 
// Programme escalier 13 Marches
 
#define trigPin 12    //Trig premier capteur
#define echoPin 11    //Echo premier capteur
#define trigPin2 13   //Trig2 second capteur
#define echoPin2 10   //Echo2 second capteur
int lumPin;           //variable état du contact du capteur de luminosité
boolean etatLumPin;
 
// Numéros des pins des leds, du bas vers le haut
const byte pinMarches[] = {2,3,4,5,6,7,8,9,38,40,42,44,46};
const byte NMarches = sizeof(pinMarches) / sizeof(pinMarches[0]);
 
// capteur ultrason:
int mindist = 40; //distance en dessous de laquelle nous souhaitons demarrer le cycle d'allumage
long duration, distance; //capteur 1
long duration2, distance2; //capteur 2
 
void setup() {
 
  lumPin = 1;   //pin défini pour l'état du capteur de luminosité
  etatLumPin = 0;
 
  pinMode(lumPin, INPUT_PULLUP);
 
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);  //On defini Trig comme une sortie
  pinMode(echoPin, INPUT);   //On defini Echo comme une entree
  pinMode(trigPin2, OUTPUT); //On defini Trig2 comme une sortie
  pinMode(echoPin2, INPUT);  //On defini Echo2 comme une entree
}
 
void loop() {
 
  boolean etatLumPin = digitalRead(lumPin);
  Serial.print("Capteur de luminosite : ");
  Serial.println(etatLumPin);
 
  if (etatLumPin) //condition "nuit" pour utilisation du système
  {
    //premier capteur à*ultrason:
 
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10); //Trig envoi pendant 10ms
    digitalWrite(trigPin, LOW);
 
    duration = pulseIn(echoPin, HIGH);
    distance = duration * 340 / (2 * 10000);
    Serial.print("Distance1 : ");
    Serial.println(distance);
 
    // second capteur à ultrason:
 
    digitalWrite(trigPin2, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin2, HIGH);
    delayMicroseconds(10); //Trig envoi pendant 10ms
    digitalWrite(trigPin2, LOW);
 
    duration2 = pulseIn(echoPin2, HIGH);
    distance2 = duration2 * 340 / (2 * 10000);
    Serial.print("Distance2 : ");
    Serial.println(distance2);
 
//Séquence 1:sens d'allumage de la led 1 à 13
 
    if (distance < mindist) { // si capteur détecte une distance en dessous de 50cm
 
      Serial.print("Séquence d'allumage 1");
 
void Montee (bool state) {
  // Allumer ou éteindre les marches une par une à partir du bas
  for (byte i=0; i< NMarches; i++)
  {
  digitalWrite(pinMarches[i], state);
  int duration = 50*pinMarches[i];
  if (pinMarches[i] > 30) duration = 500 + (pinMarches[i] - 38) * 25;
  delay(duration);
  }
}
 
// Séquence 2: sens d'allumage de la led 16 à 1
 
    if (distance2 < mindist) { // si capteur détecte une distance en dessous de 50cm
 
      Serial.print("Séquence d'allumage 2");
 
void Descente (bool state) {
  // Allumer ou éteindre les marches une par une à partir du haut
  for (int i=NMarches-1; i>=0 ; i--)
  {
  digitalWrite(pinMarches[i], state);
  int duration = 350 + 50*(9-pinMarches[i]);
  if (pinMarches[i] > 30) duration = 100 + (46 - pinMarches[i]) * 25;
  delay(duration);
  }
}
 
 
void setup()
{
  for (int i=0; i< NMarches; i++) pinMode(pinMarches[i], OUTPUT);
  pinMode(Detecteurhaut, INPUT);
  pinMode(Detecteurbas, INPUT);
}
 
void loop() {
  Etat_det_haut = digitalRead(Detecteurhaut);
  Etat_det_bas = digitalRead(Detecteurbas);
  if (Etat_det_bas==HIGH) {
    Montee (HIGH);
    while (Etat_det_haut != HIGH); Etat_det_haut = digitalRead(Detecteurhaut);
    Montee (LOW);
  } else if (Etat_det_haut==HIGH) {
    Descente (HIGH);         
    while(Etat_det_bas != HIGH) Etat_det_bas = digitalRead(Detecteurbas);
    Descente (LOW);
  }
}
Je vous remercie a l'avance pour l'aide et le temps que vous passerez a m'aider a réussir mon projet .
Amicalement .
Thierry