[Aide] Erreur compilation sur instruction bas niveau

Bonsoir tout le monde :slight_smile:

Je reviens avec un petit souci qui me turlupine depuis quelque temps et qui semble étrange ...

Lors de la compilation de sketch utilisant des instructions "bas niveau" je me retrouve avec ce message d'erreur :

sketch_oct11a.cpp: In function 'void setup()':
sketch_oct11a:277: error: 'digitalPinToBitMask' was not declared in this scope
sketch_oct11a:278: error: 'digitalPinToPort' was not declared in this scope
sketch_oct11a:278: error: 'portInputRegister' was not declared in this scope

Skywodd m'a alors conseillé ( merci à lui et encore bravo pour ses tuto) d'inclure un #define en debut de code mais rien à faire :S

Pour info les deux pc "victime" sont sous win7 x64 et testés sous la version 0020, 0023 et v1 de l'IDE Arduino

Si quelqu'un a déjà rencontré ce type de soucis ...

Merci à tous et bonne soirée,
TchaoPaulo

Bonjour,

Aurais-tu oublié de poster ton code? :slight_smile:

Et, un #define qui ne définit rien du tout est complètement inutile :smiley:

Bonjour,

Le include c'est :

#include <WProgram.h>

bonjour,

@guix : la réponse est oui totalement ^^ je le joint

@Skywodd : j'avais bien tenté le

#define <WProgram.h>
#define <pins_arduino.h>

mais rien a faire ...

Blyss_Sniffer_Skywodd.pde (8.09 KB)

Hum
#define d'un fichier include ?
Ca serait pas plutot un #include ?

Sinon, si tu publiais le code offensant on pourrais peut être plus facilement aider.

barbudor:
#define d'un fichier include ?
Ca serait pas plutot un #include ?

Oula pas bien réveillé le skywodd :grin:
Oui oui c'est bien un #include ! oups :blush:

Edit:
Pour compiler avec arduino 0023 ou antérieur (à placer en haut du code) :

#include <pins_arduino.h>

Allez savoir pourquoi l'ide arduino avec 1.0 n'inclut pas de base ce fichier ...

Edit 2:
J'ai mis à jour le github du projet avec une note à ce sujet dans le readme :

(arg! Saloperie de wordpress et de github qui supprime tout ce qui est entre <...> par sécurité)

Nice j'ai testé tout les include possible et celui qui fonction est le #include <pins_arduino.h>

Encore merci à tous !!!!

Edit : Oups je viens juste de voir ton message Skywodd mais merci pour le pourquoi de ce soucis :slight_smile:

TchaoPaulo

Bonjour, j'ai la même erreur que paolo et je ne comprend pas pourquoi. Ca fait des jours que je me casse la tête et j'espére que vous pourrez m'aider. Voila mon code et mes erreurs :

#include <LiquidCrystal.h>
LiquidCrystal lcd(11,12,5,6,7,8);
void setup()
{lcd.begin(16,3);}
const int boutonDroit = 2;
void setup()
{pinMode(boutonDroit,INPUT);
attachInterrupt(2,++,FALLING);}
void loop(){
lcd.setCursor(16,1);
void loop(){
byte e=0
void ++(){
e++;}
if(e>23)
{byte e=0;}
}
delay(10000);
lcd.setCursor(16,2);
void loop(){
byte f=e+1
void ++(){
f++;}
if(f>23)
{byte f=e+1;}
}
delay(10000);
lcd.setCursor(16,3);
void loop(){
byte g=f+1
void ++(){
g++;}
if(g>23)
{byte g=f+1;}
}
delay(10000);
lcd.setCursor(16,1);
if(e>f)
{byte f=e+1;
byte g=f+1;}
}
int h1=e;
char d1[14]="1Compartiment";
char message1[16]="";
sprintf(message1,"%s:%2d",d1,h1);
int h2=f;
char d2[14]="2Compartiment";
char message2[16]="";
sprintf(message2,"%s:%2d",d2,h2);
int h3=g;
char d3[14]="3Compartiment";
char message3[16]="";
sprintf(message3,"%s:%2d",d3,h3);
const int boutonGauche=3;
void setup(){
pinMode(boutonGauche,INPUT);
attachInterrupt(3,display()||noDisplay(),FALLING);
if(boutonGauche==1)
{lcd.display();}
if(boutonGauche==0)
{lcd.noDisplay();}
#define LED 13;
#define POUSSOIR 14;
void loop(){
{byte a=0;
delay(3600000);
a++;}
#include <Servo.h>
Servo monServo;
int position=0;
void setup(){
monServo.attach(4);
monServo.write(position);}
if(a=e||a=f||a=g)
{for(position=0,position<120;position++);
{monServo.write(position);
delay(15000);}
}
if(a>23)
{byte b=0;
byte a=0;
delay(86400000);
b++;}
if(b=8)
{pinMode(LED,OUTPUT);
digitalWrite(LED,HIGH);
}
pinMode(POUSSOIR,INPUT);
if(POUSSOIR==1)
{digitalWrite(LED,LOW);
byte b=0}
}

DISTRIBUTEUR_AUTOMATIQUEa.ino: In function 'void setup()':
DISTRIBUTEUR_AUTOMATIQUEa.ino:6:6: error: redefinition of 'void setup()'
DISTRIBUTEUR_AUTOMATIQUEa.ino:3:6: error: 'void setup()' previously defined here
DISTRIBUTEUR_AUTOMATIQUEa.ino:8:21: error: expected primary-expression before ',' token
DISTRIBUTEUR_AUTOMATIQUEa.ino: In function 'void loop()':
DISTRIBUTEUR_AUTOMATIQUEa.ino:11:12: error: a function-definition is not allowed here before '{' token
DISTRIBUTEUR_AUTOMATIQUEa.ino:92:11: error: expected '}' at end of input
Erreur lors de la compilation.

C'est pas une bonne idée de squatter un vieux post.
Ton erreur n'a à priori rien à voir avec celle qu'avait rencontré TchaoPaulo
Et il faut placer le code entre balises code (7eme icone en partant de la droite dans la barre d'icone de la fenêtre d'édition) sinon il est illisible.

bonjour,
balise code, merci
2 void setup() et 2 void loop') déjà

je savais pas qu'un lcd(16,3) existait

Voila désolé pour le temps de retard pour ma réponse. Je suis nouveau dans l'univers Arduino et je ne savais pas comment mettre un code entre deux balise codes. Sinon en allant voir d'autres forums, j'ai réussi à régler mes erreurs. Je ne comprends juste pas l'erreur : DISTRIBUTEUR_AUTOMATIQUEa.ino:8:21: error: expected primary-expression before ',' token. ++ est-il une fonction? Sinon comment faire si ce n'est pas une fonction? void++()? Merci beaucoup pour vos réponses en tout cas. Désolé de "squatter" ce post je pensais qu'il y avait un rapport et je n'avais pas vu la date.

#include <LiquidCrystal.h>
LiquidCrystal lcd(11,12,5,6,7,8);
void setup()
{lcd.begin(16,3);}
const int boutonDroit = 2;
void setup()
{pinMode(boutonDroit,INPUT);
attachInterrupt(2,++,FALLING);}
void loop(){
lcd.setCursor(16,1);
void loop(){
  byte e=0
  void ++(){
    e++;}
    if(e>23)
    {byte e=0;}
    }
    delay(10000);
    lcd.setCursor(16,2);
 void loop(){
  byte f=e+1
  void ++(){
    f++;}
    if(f>23)
    {byte f=e+1;}
    }
    delay(10000);
    lcd.setCursor(16,3);
     void loop(){
  byte g=f+1
  void ++(){
    g++;}
    if(g>23)
    {byte g=f+1;}
    }
    delay(10000);
    lcd.setCursor(16,1);
    if(e>f)
    {byte f=e+1;
    byte g=f+1;}
    }
    int h1=e;
    char d1[14]="1Compartiment";
    char message1[16]="";
    sprintf(message1,"%s:%2d",d1,h1);
    int h2=f;
    char d2[14]="2Compartiment";
    char message2[16]="";
    sprintf(message2,"%s:%2d",d2,h2);
    int h3=g;
    char d3[14]="3Compartiment";
    char message3[16]="";
    sprintf(message3,"%s:%2d",d3,h3);
    const int boutonGauche=3;
    void setup(){
      pinMode(boutonGauche,INPUT);
      attachInterrupt(3,display()||noDisplay(),FALLING);
      if(boutonGauche==1)
      {lcd.display();}
      if(boutonGauche==0)
      {lcd.noDisplay();}
      #define LED 13;
      #define POUSSOIR 14;
      void loop(){
        {byte a=0;      
        delay(3600000);
        a++;}
        #include <Servo.h>
        Servo monServo;
        int position=0;
        void setup(){
          monServo.attach(4);
          monServo.write(position);}
          if(a=e||a=f||a=g)
          {for(position=0,position<120;position++);
          {monServo.write(position);
          delay(15000);}
          }
          if(a>23)
          {byte b=0;
          byte a=0;
          delay(86400000);
          b++;}
          if(b=8)
          {pinMode(LED,OUTPUT);
          digitalWrite(LED,HIGH);
          }
          pinMode(POUSSOIR,INPUT);
          if(POUSSOIR==1)
          {digitalWrite(LED,LOW);
          byte b=0}
          }



DISTRIBUTEUR_AUTOMATIQUEa.ino: In function 'void setup()':
DISTRIBUTEUR_AUTOMATIQUEa.ino:6:6: error: redefinition of 'void setup()'
DISTRIBUTEUR_AUTOMATIQUEa.ino:3:6: error: 'void setup()' previously defined here
DISTRIBUTEUR_AUTOMATIQUEa.ino:8:21: error: expected primary-expression before ',' token
DISTRIBUTEUR_AUTOMATIQUEa.ino: In function 'void loop()':
DISTRIBUTEUR_AUTOMATIQUEa.ino:11:12: error: a function-definition is not allowed here before '{' token
DISTRIBUTEUR_AUTOMATIQUEa.ino:92:11: error: expected '}' at end of input
Erreur lors de la compilation.

est ce que tu lis ce qu'on te met?
apparemment, non

infobarquee:
bonjour,
balise code, merci
2 void setup() et 2 void loop') déjà

je savais pas qu'un lcd(16,3) existait

Alors pour info un écran 16x3 existe et j'ai dit que j'avais réglé l'erreu du void loop et void setup. Voila mon nouveau code :

#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(11,12,5,6,7,8);
void setup()
{lcd.begin(16,3);
const int boutonDroit = 2;
pinMode(boutonDroit,INPUT);
attachInterrupt(2,++,FALLING);}
void loop(){
lcd.setCursor(16,1);
  byte e=0
  void ++(){
    e++;}
    if(e>23)
    {byte e=0;}
    delay(10000);
    lcd.setCursor(16,2);
  byte f=e+1
  void ++(){
    f++;}
    if(f>23)
    {byte f=e+1;}
    delay(10000);
    lcd.setCursor(16,3);
  byte g=f+1
  void ++(){
    g++;}
    if(g>23)
    {byte g=f+1;}
    delay(10000);
    lcd.setCursor(16,1);
    if(e>f)
    {byte f=e+1;
    byte g=f+1;}
    }
    int h1=e;
    char d1[14]="1Compartiment";
    char message1[16]="";
    sprintf(message1,"%s:%2d",d1,h1);
    int h2=f;
    char d2[14]="2Compartiment";
    char message2[16]="";
    sprintf(message2,"%s:%2d",d2,h2);
    int h3=g;
    char d3[14]="3Compartiment";
    char message3[16]="";
    sprintf(message3,"%s:%2d",d3,h3);
    const int boutonGauche=3;
    void setup(){
      pinMode(boutonGauche,INPUT);
      attachInterrupt(3,display()||noDisplay(),FALLING);
      if(boutonGauche==1)
      {lcd.display();}
      if(boutonGauche==0)
      {lcd.noDisplay();}
      #define LED 13;
      #define POUSSOIR 14;
      void loop(){
        {byte a=0;      
        delay(3600000);
        a++;}
        Servo monServo;
        int position=0;
        void setup(){
          monServo.attach(4);
          monServo.write(position);}
          if(a=e||a=f||a=g)
          {for(position=0,position<120;position++);
          {monServo.write(position);
          delay(15000);}
          }
          if(a>23)
          {byte b=0;
          byte a=0;
          delay(86400000);
          b++;}
          if(b=8)
          {pinMode(LED,OUTPUT);
          digitalWrite(LED,HIGH);
          }
          {pinMode(POUSSOIR,INPUT);}
          if(POUSSOIR==1)
          {digitalWrite(LED,LOW);
          byte b=0}
          }

void ++ ne veut rien dire
pourquoi mettre ca plusieurs fois?

en plus tu mets des #define arpès le setup
organise mieux ton code

define
setup
loop