Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Appeler un programme dans un programme

Sujet résolu
    2 mai 2012 à 13:15:39

    Bonjour,
    Une question toute bête :
    Peut-on appeler un Programme Arduino dans un Programme Arduino?

    Exemple : dans mon programme de gestion de ma LED RGB, j'ai plusieurs mode de défilement des couleurs, qui sont déjà tous dans un fichier Arduino à part.
    Y-a-t-il un moyen d'appeler ces fichiers plutôt que de refaire des void avec les fonctions?

    Merci et bonne journée!
    • Partager sur Facebook
    • Partager sur Twitter
      2 mai 2012 à 18:50:01

      La manière propre de faire est de mettre les déclarations de fonctions dans un fichier .h (mesfontions.h) et les implémentations dans un .c ou .cpp (mes fonctions.cpp)...

      Ensuite en le mettant dans le dossier ou est ton fichier .pde ou .ino, tu pourras y avoir accès en faisant un :
      #include "mesfonctions.h"

      Je te conseille d'aller faire un tour sur le sdz info sur le tuto du C pour plus de détails/infos
      • Partager sur Facebook
      • Partager sur Twitter
        4 mai 2012 à 15:00:37

        Ça à l'air d'être exactement ce qu'il me faut!
        Merci pour ta réponse, je vais aller faire un tour dans le cours sur le C pour approfondir tout ça!

        edit :
        Je suis allé voir dans le cours de C++; effectivement le tout est assez bien expliqué, cf. :
        Découper son programme en plusieurs fichiers

        Donc pour mon programme qui sert à allumer une LED RGB sur différents modes,
        j'ai créer un fichier .cpp par mode : couleur_tournante.cpp, couleur_bp.cpp, couleur_choix.cpp, et enfin eteindre.cpp
        j'ai créer un fichier fonctions.h, qui regroupe donc cela
        et j'ai mis un include dans mon fichier .ino

        Seulement quand je veux compiler, il me renvoie vers mes fonctions (cad les fichiers .cpp) en me disant que les variables ne sont pas déclarées
        Or elle le sont toutes dans le fichier .ino.

        Ce découpage impose-t-il qu'une variable nécessaire à une fonction soit déclarée dans le fichier .cpp où la fonction est définie?
        Si oui, je n'ai plus intérêt à découper puisque mes variables sont presque toutes communes aux différentes fonctions.
        • Partager sur Facebook
        • Partager sur Twitter
          4 mai 2012 à 16:48:25

          un peu de code pourrait aider à mieux comprendre le problème.

          Tu as des espèces de variables globales utilisées par plusieurs(ou toutes) de tes fonctions c'est ça? (si oui c'est pas bien :p)

          • Partager sur Facebook
          • Partager sur Twitter
            4 mai 2012 à 18:00:37

            Il faut que dans ton fichier .h tu mettes les noms des fonctions (les déclarations) et dans un seul .cpp qui a le même nom que le .h tu mettes toutes les implémentations, bas dans plusieurs .cpp
            • Partager sur Facebook
            • Partager sur Twitter
              4 mai 2012 à 18:14:35

              ou alors faire un .h par .cpp, qui contient uniquement les déclarations des fonctions définies dans le .cpp correspondant...

              Le fait de séparer ton .h unique en plusieurs permettra de gagner du temps à la compilation, si tu modifie une fonction, tu modifie un .h, qui entraine la recompilation du .cpp qui va avec, et ceux qui utilise les fonctions, mais pas les autres .cpp qui n'ont rien demandé à personne ;)
              • Partager sur Facebook
              • Partager sur Twitter
                4 mai 2012 à 18:40:40

                Citation : epso

                un peu de code pourrait aider à mieux comprendre le problème.

                Tu as des espèces de variables globales utilisées par plusieurs(ou toutes) de tes fonctions c'est ça? (si oui c'est pas bien :p)



                C'est exactement ça :/
                En fait mes trois fonctions gère la même led,
                A chaque appuie sur un BP on change de mode de fonctionnement,

                Le code principale
                //Illumination d'une Led RGB
                
                
                
                
                void setup() //Initialisation
                {
                  pinMode(vert,OUTPUT);
                  pinMode(rouge,OUTPUT);
                  pinMode(bleu,OUTPUT);
                  pinMode(pot,INPUT);
                  pinMode(bp,INPUT);
                  
                  eteindre();
                }
                
                
                void loop ()
                {
                  vbp= digitalRead(bp); //Lecture de l'état du BP
                  
                  if ((vbp != vbpmem)&&(vbp == LOW)) //si on appuie sur le BP
                  {
                    mode++; //On incrémente la variable mode
                  }
                  
                  vbpmem=vbp; //on mémorise l'état du bouton
                  
                  if (mode == nbrmode) //Qd la variable mode vaut nbrmode on la repasse à zéro (ie quand on attend le dernier mode)
                  {
                    mode=0; 
                  }
                  
                  switch (mode) //Application du mode
                  {
                    case 0:
                    eteindre(); //passe toutes les leds à 255 donc éteintes
                    break;
                    
                    case 1:
                    couleur_tournante(); //lance le programme de "couleur tournante"
                    break;
                    
                    case 2:
                    couleur_bp(); //lance le programme pour le choix de couleur
                    break;
                    
                    case 3:
                    couleur_choix(); //Lance le programme pour le choix de couleur, mais de manière plus fine
                    break;
                    
                  }
                }
                


                La fonction éteindre
                void eteindre()
                {
                  analogWrite(vert,255);
                  analogWrite(rouge,255);
                  analogWrite(bleu,255);
                }
                


                La fonction couleur tournante
                void couleur_tournante()
                {
                  for (unsigned int i=0 ; (i<240)&&(vbp1==vbpmem);)
                  //Un cycle est fait de 240 itérations, donc un cycle pour une couleur dure 80 tops
                  {
                    valpot=analogRead(pot);  //on récupère la valeur du Pot
                    vit=map(valpot,0,1023,0,500); //on échelonne de 0 à 500ms 
                    
                    if((millis()-temps)>vit)  
                    {
                      i++; 
                      temps=millis(); 
                    }
                  
                    vbp1= digitalRead(bp);
                    // VERT
                    vv1=map(i,0,80,255,0); //vv1 représente la phase de croissance du vert (40tops)
                    vv2=map(i,80,160,0,255); //vv2phase décroissante
                    vv=min(vv1,vv2);  //On prend le min de vv1 et vv2
                    vv=min(vv,255); //On borne à un max de 255 
                    
                    // ROUGE
                    vr1=map(i,0,80,0,255);
                    vr2=map(i,160,240,255,0);
                    vr=min(vr1,vr2);
                    vr=min(vr,255);
                    
                    // BLEU
                    vb1=map(i,80,160,255,0);
                    vb2=map(i,160,240,0,255);
                    vb=min(vb1,vb2);
                    vb=min(vb,255);
                   
                    analogWrite(bleu,vb); //on envoie les valeurs respectives aux Cathodes
                    analogWrite(vert,vv);
                    analogWrite(rouge,vr);
                    
                    vbp=analogRead(bp);
                    
                   }
                }
                



                Voici mes variables :
                Presques toutes sont utilisées au moins deux fois, ne serait-ce que parce que toutes mes fonctions agissent sur "vr" "vv" "vb" les valeurs pour les leds rouge, vert, bleu

                const int rouge=9; //broche rouge au pin 9
                const int vert=10; //broche vert au pin 10
                const int bleu=11; //broche bleue au pin 11
                
                //Variables pour le Vert
                unsigned int vv=255;
                unsigned int vv1=255;
                unsigned int vv2=255;
                
                //Variables pour le Rouge
                unsigned int vr=255;
                unsigned int vr1=255;
                unsigned int vr2=255;
                
                //Variables pour le Bleu
                unsigned int vb=255;
                unsigned int vb1=255;
                unsigned int vb2=255;
                
                //Potentiomètre
                const int pot=0;
                long valpot=0;
                unsigned long vit=0;
                unsigned long temps=0;
                
                //Bouton Poussoir
                const int bp=4;
                boolean vbp=0;
                boolean vbp1=0;
                boolean vbpmem=0;
                int mode = 0;
                
                //Nombre de mode
                int nbrmode=4;
                int couleur=0;
                


                Pour ce qui est du découpage .h et .cpp, j'ai compris grâce à vos explications, Merci!

                Pour mes variables, j'en déduis qu'il faut je réorganise le tout? pour qu'elle soient propre à chaque fonction et déclarées dans le .cpp correspondant.
                Le problème de ces variables doublement utilisées pose-t-il un vrai problème? ou est-ce une question de propreté du code?
                • Partager sur Facebook
                • Partager sur Twitter
                  4 mai 2012 à 18:51:12

                  Le truc qui serait super (mais je sais connait pas ton niveau) se serait de créer une classe (cours de C++) et comme ça tu n'aurais plus ce problème de variables redondantes, ce serait des membres de ta classe...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 mai 2012 à 19:22:43

                    Je ne connais pas les classes non, mais du coup voilà une bonne motivation ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 mai 2012 à 19:35:33

                      Disons que tu pourrais faire sans, mais avec se serait plus propre...

                      Mais les classes et le langage objet c'est pas un truc que t'apprend en une heure non plus...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 mai 2012 à 23:33:55

                        Bon effectivement, je me suis un peu mis dans le langage objet,
                        le principe, le fonctionnement, la syntaxe me paraissent assez clair,
                        mais l'application ce n'est pas la même chose!
                        je re-posterais ici quand j'aurais approfondi le sujet
                        (si je le fais ^^)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 août 2012 à 1:25:42

                          ReBonjour!

                          Ayant un peu de temps en ce moment je me suis décidé à travailler un peu le C++, et me voilà à essayer d'utiliser les classes :

                          J'ai décidé de commencer par un programme "simple" mais bien sur sur Arduino pour profiter des 2 en même temps (Ce n'était peut être pas une si bonne idée!)

                          J'ai définit une classe "Lampe"
                          Ses méthodes sont éteindre, allumer, inverser, afficher_état
                          Ses attributs état_lampe, numéro de pin, sortie digitale ou analogique
                          le code de "Lampe.h"
                          #ifndef DEF_PERSONNAGE
                          #define DEF_PERSONNAGE
                          
                          class Lampe
                          {
                            public:
                            
                            Lampe(int pinlampe, bool digital);
                            void allumer();
                            void eteindre();
                            void inverser();
                            void affecter_pin ();
                            
                            private:
                            
                            const int m_pinlampe;
                            bool m_etatlampe;
                            bool m_digital;
                          }
                          
                          #endif
                          


                          Le fichier "Lampe.cpp"
                          #include "Lampe.h"
                          
                          //Constucteur
                          Lampe::Lampe(int pinlampe, boolean digital) : m_pinlampe=pinlampe, m_etatlampe=0, m_digital=digital
                          {
                          }
                          
                          //Méthodes
                          void Lampe::allumer()
                          {
                            if (m_digital==1)
                            {
                              digitalWrite(m_pins, LOW);
                            }
                            else
                            {
                              analogWrite(m_pinlampe, LOW);
                            }
                            m_etatlampe = 1;
                          }
                          
                          void Lampe::eteindre()
                          {
                            if (m_digital==1)
                            {
                              digitalWrite(m_pinlampe, HIGH);
                            }
                            else
                            {
                              analogWrite(m_pinlampe, HIGH);
                            }
                            m_etatlampe = 0;
                          }
                          
                          void Lampe::inverser()
                          {
                            m_etatlampe = !m_etatlampe;
                              if (m_digital==1)
                            {
                              digitalWrite(m_pinlampe, m_etatlampe);
                            }
                            else
                            {
                              analogWrite(m_pinlampe, m_etatlampe);
                            }  
                          }
                          
                          void Lampe::affecter_pin ()
                          {
                            numpin=m_mpinlampe
                            pinMode(numpin,OUTPUT);
                          }
                          
                          bool Lampe::estallume ()
                          {
                            if (m_etatlampe ==1)
                            {
                              //la lampe 1 est allumée
                            }
                            else
                            {
                              //la lampe est éteinte
                            }
                          }
                          


                          Et enfin le programme "eclairage.ino"
                          #include "Lampe.h"
                          
                          //définition des objets lampes(int pin, bool digital)
                          Lampe lampeA1(1,0), lampeB1(2,0), lampeC1(3,0), lampeD1(4,0), lampeG(0,0); //définitions des objets de la classe lampe
                          
                          int nbrlampe=5; //5 lampes
                          
                          Lampe lampe_nom[] = {lampeA1, lampeB1, lampeC1, lampeD1, lampeG}; //Noms des objets organisés dans un tableau
                          
                          void setup()
                          {
                            void OFF(); //Eteindre toutes les lampes référencées dans le tableau
                          
                            
                            for (int j=0; j < nbrlampe; j++) //Affecter à toutes les lampes du tableau au pin auquel elles sont branchées
                            {
                              lampe_nom[j].affecter_pin();
                            }
                          }
                          
                          void loop()
                          {
                            for (int k=0; k < nbrlampe; k++) //On allume puis éteint chaque lampe tour à tour
                            {
                              lampe_nom[k].allumer();
                              delay(1000);
                              lampe_nom[k].eteindre();
                            }    
                          }
                          
                          void OFF() //Eteindre toutes les lampes référencées dans le tableau
                          {
                            for(int i=0; i < nbrlampe; i++)
                            {
                              lampe_nom[i].eteindre();
                            }
                          }
                          



                          Bien évidemment, je n'ai pas réussi mon premier programme OO du premier coup ^^
                          J'obtiens donc 1kg d'erreurs indigestes représentées par une erreur générale dans arduino : "Error Compling"
                          Je pense que la première chose qu'il manque ce sont des librairies, mais je ne sais pas lesquelles...
                          Si vous pouvez donc me filer un petit coup de main :D

                          Merci d'avance!

                          Ci dessous, tout le log (attention ca pique un peu les yeux)


                          In file included from d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:47,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:4,
                          from eclairage_salon_bureau.cpp:4:
                          d:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\tools\avr\bin\../lib/gcc/avr/4.3.2/include/stddef.h:214: error: two or more data types in declaration of 'size_t'
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:4,
                          from eclairage_salon_bureau.cpp:4:
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:143: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:144: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:175: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:175: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:290: error: 'size_t' was not declared in this scope
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:302: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:319: error: 'size_t' was not declared in this scope
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:319: error: 'size_t' was not declared in this scope
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:319: error: initializer expression list treated as compound expression
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:338: error: 'size_t' has not been declared
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:5,
                          from eclairage_salon_bureau.cpp:4:
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:113: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:114: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:115: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:116: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:117: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:117: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:118: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:119: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:120: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:128: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:130: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:131: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:132: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:134: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:135: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:136: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:137: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:138: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/string.h:143: error: 'size_t' does not name a type
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:8,
                          from eclairage_salon_bureau.cpp:4:
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:744: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:745: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:746: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:747: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:747: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:748: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:756: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:757: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:758: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:759: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:760: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:761: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:762: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:763: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:764: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:768: error: 'size_t' does not name a type
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:24,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:26,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:193,
                          from eclairage_salon_bureau.cpp:4:
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdio.h:685: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdio.h:691: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdio.h:713: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdio.h:719: error: 'size_t' has not been declared
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdio.h:762: error: 'size_t' does not name a type
                          d:/arduino/arduino-1.0.1-windows/arduino-1.0.1/hardware/tools/avr/lib/gcc/../../avr/include/stdio.h:840: error: 'size_t' does not name a type
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Printable.h:23,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:26,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:193,
                          from eclairage_salon_bureau.cpp:4:
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/new.h:10: error: declaration of 'operator new' as non-function
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/new.h:10: error: 'size_t' was not declared in this scope
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:26,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:193,
                          from eclairage_salon_bureau.cpp:4:
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Printable.h:36: error: 'size_t' does not name a type
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:26,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:193,
                          from eclairage_salon_bureau.cpp:4:
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:38: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:39: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:48: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:49: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:50: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:52: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:53: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:54: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:55: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:56: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:57: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:58: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:59: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:60: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:61: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:62: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:64: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:65: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:66: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:67: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:68: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:69: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:70: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:71: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:72: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:73: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:74: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:75: error: 'size_t' does not name a type
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:27,
                          from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:193,
                          from eclairage_salon_bureau.cpp:4:
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:62: error: 'size_t' has not been declared
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:67: error: 'size_t' has not been declared
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:67: error: 'size_t' has not been declared
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:76: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:80: error: 'size_t' does not name a type
                          In file included from D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Arduino.h:193,
                          from eclairage_salon_bureau.cpp:4:
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:58: error: 'size_t' does not name a type
                          D:\Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/HardwareSerial.h:59: error: no members matching 'Print::write' in 'class Print'
                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 août 2012 à 9:35:22

                            J'ai pas le temps de regarder en détails mais en C++ à la fin d'une classe on met un ';' (dans le .h) (mais je sais plus s'il le faut aussi dans le langage à Arduino)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              12 août 2012 à 12:40:51

                              Il te manque un include dans ton .h
                              #ifndef DEF_PERSONNAGE //|¯Hi Hi 
                              #define DEF_PERSONNAGE //|_
                              
                              #if defined(ARDUINO) && ARDUINO >= 100  
                              	#include "Arduino.h"  
                              #else  
                              	#include "WProgram.h"  
                              #endif
                              

                              -------------------------

                              Si tu remarque bien il y a un code qui se retrouve plusieurs fois.
                              J'aurai ajouté la méthode lampeWrite(bool etat) en private ou pas
                              void Lampe::lampeWrite(bool etat)
                              {
                                m_etatlampe = !etat;
                                if (m_digital)
                                {
                                  digitalWrite(m_pinlampe, m_etatlampe);
                                }
                                else
                                {
                                  analogWrite(m_pinlampe, m_etatlampe);
                                }
                              }
                              

                              -------------------------

                              Citation : Eskimon

                              à la fin d'une classe on met un ';' (dans le .h) (mais je sais plus s'il le faut aussi dans le langage à Arduino)


                              En effet, c'est nécessaire.
                              Souvent quand je me fais une nouvelle classe je copie/colle une librairie déjà écrite pour éviter ce genre d'oublie qui peuvent te faire perdre un temps fou.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 août 2012 à 3:03:55

                                Citation : thelme


                                #ifndef DEF_PERSONNAGE //|¯Hi Hi 
                                #define DEF_PERSONNAGE //|_
                                



                                j'ai presque honte pour celle là :p:lol: Au moins vous savez où j'apprends le C++

                                Sinon j'ai corrigé les autres erreurs de bases (notamment le ; ou les constantes écrites trop vite voir qui se transforme au fil du code ^^ )
                                J'ai appliqué le lampeWrite, très bonne idée en effet! Merci bien!

                                Le code se compile comme il faut maintenant! (Il reste juste à voir si ca fait bien ce que je veux sur Nono!)

                                Mais j'ai quand même deux questions :

                                A quoi sert :
                                #if defined(ARDUINO) && ARDUINO >= 100  
                                	#include "Arduino.h"  
                                #else  
                                	#include "WProgram.h"
                                

                                Des bibliothèques pour inclure la POO?
                                Aussi j'ai du le mettre à la fin du fichier .h pour que ça marche
                                et j'ai du ajouter un deuxième #endif

                                Et j'ai du remplacer ça
                                Lampe::Lampe(int pinlampe, bool digital) : m_pinlampe=pinlampe, m_etatlampe=0, m_digital=digital
                                

                                par
                                Lampe::Lampe(int pinlampe, bool digital) : m_pinlampe(pinlampe), m_etatlampe(0), m_digital(digital)
                                

                                Donc passer de l'écriture variable(0) au lieu de variable=0 pour qu'il accepte de compiler, sans quoi j'avais une erreur Expected "(" before "=" token
                                Sachant que j'utilise cette notation partout ailleurs (variable=0)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  13 août 2012 à 9:04:56

                                  Pour:
                                  #if defined(ARDUINO) && ARDUINO >= 100  
                                  	#include "Arduino.h"  //compilateur supérieur et égal a 1.0
                                  #else  
                                  	#include "WProgram.h" //compilateur inférieur et égal a 1.0
                                  #endif
                                  


                                  Je suis pas sur, mais c'est surement pour implémenter tout le blabla de l'Arduino, et c'est la le même fichier avant la 1.0 que après.
                                  En tout cas ça marche pas sans. ^^

                                  J'ai fais vite fait une recherche, j'ai eu la flemme de chercher plus loin Cependant je suis tomber sur CE SITE, je vais faire un tour pour voir ce qu'il raconte de sympa.


                                  Citation : Supernik

                                  Mais j'ai quand même deux questions


                                  Je vois pas la seconde question. :euh:
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    13 août 2012 à 16:24:24

                                    Merci beaucoup, c'est vrai que pas pensé à chercher -_-

                                    Et la deuxième question, c'est : Est ce qu'il y a une raison au fait que j'ai du passé de l'écriture variable=0 à variable(0) pour définir les valeurs de mes variables dans le constructeur?
                                    Ou juste que c'est comme ça et c'est tout ^^
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      13 août 2012 à 17:56:53

                                      c'est comme ça et c'est tout, si tu donne une valeur aux variables à la construction, c'est avec les parenthèses comme tu as écrit, si tu veux utiliser un égal, il faut le mettre dans le corps du constructeur:
                                      Lampe::Lampe(int pinlampe, bool digital) : m_pinlampe(pinlampe), m_etatlampe(0), m_digital(digital)
                                      {}
                                      

                                      ou
                                      Lampe::Lampe(int pinlampe, bool digital) 
                                      {
                                      m_pinlampe=pinlampe;
                                      m_etatlampe=0;
                                      m_digital=digital;
                                      }
                                      


                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        13 août 2012 à 21:06:10

                                        Citation : epso

                                        c'est comme ça et c'est tout, si tu donne une valeur aux variables à la construction, c'est avec les parenthèses comme tu as écrit, si tu veux utiliser un égal, il faut le mettre dans le corps du constructeur


                                        Très bien! merci!
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          16 août 2012 à 13:55:52

                                          Et pour le #ifdef ca sert à inclure un fichier utile à l'environnement Arduino. Ce fichier contient un paquet de variable ou définition de symbole et aussi des inclusions vers d'autres truc utiles.
                                          On passe par le ifdef car le fichier n'est pas le même selon la version d'Arduino que tu utilises (100 étant la version 1.00)
                                          Si tu connais ta version tu pourrais te contenter de faire un "#include <lefichier.h>" avec le bon des deux fichiers.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            16 août 2012 à 19:37:45

                                            Ok!!
                                            Merci bien pour la précision!
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            [Arduino] Appeler un programme dans un programme

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown