Bug dans le code Arduino

voila la reponse obtenu apres mon téléversement

E:\Fichiers\Casque Iron Man\Instructions\IronMan\IronMan.ino: In function 'void loop()':
E:\Fichiers\Casque Iron Man\Instructions\IronMan\IronMan.ino:31:5: error: 'numbers' was not declared in this scope
 750,numbers
     ^~~~~~~
exit status 1

Compilation error: 'numbers' was not declared in this scope

Pouvez-vous m'aider

#include <ServoEasing.hpp>

#include <Arduino.h>

#include "ServoEasing.h"

#include "ServoEasing.h"

ServoEasing servoTop;

ServoEasing servoBottom;

const int action_pin = 2;

const int ledPin = 6;

const int potPin = A0;

int location = 31;

int bottom_closed = 107;

int top_closed = 167;

int bottom_open = 20;

int top_open = 20;

int value;

void setup()

{

pinMode(action_pin, INPUT_PULLUP);

pinMode(potPin, INPUT);

servoTop.attach(9);

servoBottom.attach(10);

setSpeedForAllServos(190);

servoTop.setEasingType(EASE_CUBIC_IN_OUT);

servoBottom.setEasingType(EASE_CUBIC_IN_OUT);

synchronizeAllServosStartAndWaitForAllServosToStop();

}

void loop()

{

value = analogRead(potPin);

value = map(value, 250, 750, 0, 255); //dimmer works between 0-1000, to adjust on/off positions, adjust 250 and

750,numbers

analogWrite(ledPin, value);

delay(100);

int proximity = digitalRead(action_pin);

if (proximity == LOW)

{

if (location > bottom_open) {

servoTop.setEaseTo(top_open);

servoBottom.setEaseTo(bottom_open);

synchronizeAllServosStartAndWaitForAllServosToStop();

location = bottom_open;

delay(600);

} else {

servoTop.setEaseTo(top_closed);

servoBottom.setEaseTo(bottom_closed);

synchronizeAllServosStartAndWaitForAllServosToStop();

location = bottom_closed;

delay(600);

}

}

}

Bonjour et bienvenue,

Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.

En particulier, la mise en forme du code avec des balises en cliquant sur l'icône <code/>
Merci aussi de veiller à indenter le code pour qu'il soit lisible. Dans l'IDE Arduino faire ctrl+T sur PC ou cmd+T sur un Mac) avant de le copier

Bonjour

J'ai recopié tes lignes de code dans l'Arduino IDE
puis j'ai supprimé toutes les lignes vides,
et ensuite j'ai reformaté tout ça en utilisant le raccourci clavier Ctrl+T
et j'ai vu qu'il y avait une ligne (N°31) qui ne contenait que :

750,numbers

… ce qui semble bien correspondre au message d'erreur qui t'a été retourné :

…
E:\Fichiers\Casque Iron Man\Instructions\IronMan\IronMan.ino:31:5: error: 'numbers' was not declared in this scope
750,numbers
    ^~~~~~~
exit status 1
…

J'ai donc déplacé le contenu de cette ligne à la fin de la précédente :

  value = map(value, 250, 750, 0, 255);  //dimmer works between 0-1000, to adjust on/off positions, adjust 250 and 750, numbers

Ce qui donne :

#include <ServoEasing.hpp>
#include <Arduino.h>
#include "ServoEasing.h"
#include "ServoEasing.h"

ServoEasing servoTop;
ServoEasing servoBottom;

const int action_pin = 2;
const int ledPin = 6;
const int potPin = A0;

int location = 31;
int bottom_closed = 107;
int top_closed = 167;
int bottom_open = 20;
int top_open = 20;
int value;

void setup() {
  pinMode(action_pin, INPUT_PULLUP);
  pinMode(potPin, INPUT);
  servoTop.attach(9);
  servoBottom.attach(10);
  setSpeedForAllServos(190);
  servoTop.setEasingType(EASE_CUBIC_IN_OUT);
  servoBottom.setEasingType(EASE_CUBIC_IN_OUT);
  synchronizeAllServosStartAndWaitForAllServosToStop();
}

void loop() {
  value = analogRead(potPin);
  value = map(value, 250, 750, 0, 255);  //dimmer works between 0-1000, to adjust on/off positions, adjust 250 and 750, numbers
  analogWrite(ledPin, value);
  delay(100);

  int proximity = digitalRead(action_pin);
  if (proximity == LOW) {
    if (location > bottom_open) {
      servoTop.setEaseTo(top_open);
      servoBottom.setEaseTo(bottom_open);
      synchronizeAllServosStartAndWaitForAllServosToStop();
      location = bottom_open;
      delay(600);
    } else {
      servoTop.setEaseTo(top_closed);
      servoBottom.setEaseTo(bottom_closed);
      synchronizeAllServosStartAndWaitForAllServosToStop();
      location = bottom_closed;
      delay(600);
    }
  }
}

Ne sachant pas du tout sur quelle carte arduino (ou autre) tu comptes faire fonctionner ton programme ni quel type de servos il doit piloter et comment tu voudrais les voir fonctionner, ni comment tout ça est alimenté, il m'est impossible de faire des tests pour savoir si ça fonctionne.


NOTE : Méfie toi des copiés/collés dans les programmes de traitement de texte, car ce n'est pas du tout le genre d'outil qu'il faut utiliser pour créer un programme source.

Un traitement de texte risque de te couper les lignes qu'il considèrera comme trop longues, et y ajoutera parfois des caractères du genre "espace insécable" ou autres caractères de formatage parfois invisibles que seul le traitement de texte utilisé saura interpréter, mais un IDE ou un compilateur ne pourra pas interpréter toutes ces "fioritures" qui ne servent qu'à la mise en page et présentation du texte pour ce programme de traitement de texte.

Ce qu'il faut, c'est un éditeur de texte, comme celui qui est utilisé dans Arduino IDE, ou autre éditeur de texte comme par exemple notepad, vim, etc.


D'autre part, à cause de cette erreur dans le code source, le compilateur n'a pas pu terminer son travail , et comme le programme n'a pas pu être compilé, il n'y a pas eu de téléversement.
Donc, c'est plutôt un problème de compilation de code source qu'un problème de téléversement.


Il manque beaucoup d'informations pour qu'on puisse t'apporter une aide efficace, mais tu auras sans doute compris tout ça et pourquoi toutes ces informations sont nécesaires après avoir lu "Les bonnes pratiques du forum francophone" comme te le conseille @fdufnews

En te souhaitant une très bonne journée.
Cordialement.

Cela arrive aussi lorsqu'on fait un copié-collé d'un programme sur le net en sélectionnant le texte à la souris au lieu d'utiliser la petite icône de copie qui se trouve (souvent) dans le coin supérieur droit de la fenêtre contenant le code.

Le premier post est toujours moche

@cerbere14 merci de régler le problème

Merci d’éditer votre post en utilisant le :pencil2: dans la barre d’outil juste sous votre post et rajoutez les balises de de code (c’est difficilement lisible tel quel) :

  • sélectionner la partie du texte qui correspond au code
  • appuyez sur l’icône <code/> dans la barre d’outils pour indiquer que c’est du code

(Assurez vous aussi d’indenter le code correctement dans l’IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)

il serait bon de (re)lire les recommandations listées dans « Les bonnes pratiques du Forum Francophone”


Sinon le titre n’est pas approprié, ce n’est pas un souci de téléchargement mais un bug dans votre code qui empêche de compiler parce qu’un commentaire a été coupé en deux lignes et une partie de ce commentaire se retrouve (pour le compilo) dans le code et ne veut rien dire ➜ modifier aussi le titre pour dire « souci de compilation »

Bonjour,

Bien reçu l'information Merci :slight_smile:

Bonjour,

Merci énormément pour le temps passé, effectivement, je ne suis pas très doué pour le langage Arduino.

Carte : Arduino Nano
Servos : Emax analogie servo

Je vais utiliser Notepad, pour Arduino

Le tous sert à faire fonctionner l'ouverture du casque d'Iron Man
Je fais des tests.

Encore mille mercis pour ton aide, en espérant en apprendre un peu plus.
Bien Cordialement
Frank

Bonjour,

Bon mon code ne fonctionne toujours pas, mes je ne désespére pas :slight_smile:
Voila l'erreur qu'il me donne
Carte : Nano Arduino 328P
Servos : Emax analogie servo
Merci encore pour votre aide

Le croquis utilise 7720 octets (25%) de l'espace de stockage de programmes. Le maximum est de 30720 octets.
Les variables globales utilisent 157 octets (7%) de mémoire dynamique, ce qui laisse 1891 octets pour les variables locales. Le maximum est de 2048 octets.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xed
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xed
Failed uploading: uploading error: exit status 1

Voir ici

Tu pourrais aussi allez dans les préférences de l'IDE et activer les comptes-rendus détaillés, qui fournissent un peu plus d'infos lorsqu'il y a un problème.

Apparement pas… j’ai fait la modification pour vous pour cette fois…. Dans le futur merci de bien utiliser les balises de code .

Essayez le mode « old bootloader » dans les options pour le choix de la carte

Bonjour,

Merci :slight_smile: , pour la balise code, je me suis bien servie de l'onglet , Pour l'avenir pouvez me donner la marche a suivre.

Je vous remercie d'avance
Bonne soirée
Frank

PS : Super tous fonctionne bien, j'ai utilisé old bootloader :slight_smile:
Merci

C’est ce qui a déjà été mentionné