Bibliotheque qui ne marche pas

Bonjour, j’espère que vous allez bien,ici il fait beau (CERN suisse) et on est bien.
J’écris ce post car j'ai un problème avec ma bibliothèque. C'est la première que je fais donc peut etre que je passe a coté de choses essentielles? En tout cas je me suis basé sur "Le grand livre d'arduino", sur le chapitre des classes.
Inutile de vous dire que mon code me semble correct.

Voici mon problème: une fois enregistré ma classe dans le bon dossier et avec les bonnes extentions ( .h et .cpp) j'ecris mon programme incluant ma bibliothèque ( qui s’appelle "Clavier").
Voici le code de mon programme suivi par celui des fichiers de la bibliothèque.

#include <Clavier.h>

Clavier clavierNum(4,5,6,8,9,10,11);
double valeur;
void setup() 
{
 Serial.begin(9600);
valeur=0.0;
}

void loop() {
  Clavier.readKeypad();
  valeur=Clavier.getValue();
  Serial.println(valeur);
#if ARDUINO<100
#include <WProgram.h>
#else
#include <Arduino.h>
#endif

#include "Clavier.h"

Clavier ::Clavier(int A,int B,int C,int D,int E,int F,int G){
  col1=A;
  col2=B;
  col3=C;
  lig1=D;
  lig2=E;
  lig3=F;
  lig4=G;
 pinMode(col1,OUTPUT);
 pinMode(col2,OUTPUT);
 pinMode(col3,OUTPUT);
 pinMode(lig1,INPUT);
 pinMode(lig2,INPUT);
 pinMode(lig3,INPUT);
 pinMode(lig4,INPUT);
 restValue();
  }
  
 double Clavier::getValue(){
   if (moin==1){
     valeurFinale=valeurFinale*(-1);
     }
     return valeurFinale;
   }// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fin de la fonction "getValue"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
 void Clavier::resetValue(){
 dec=0;
moin=0;
valeurFinale=0.0;
tempsTouche=200;
i=0;
 }// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fin de la fonction "resetValue"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
int Clavier::getterKey(){
   int valeur;
  valeur=13;
  
    digitalWrite(col1,1); // colonne 1 alumee (147*)
    
    if (digitalRead(lig1)==1){ // verification de la ligne 1 (*0#)
      valeur=10;
      //break;
    }
    if (digitalRead(lig2)==1){// verification de la ligne 2 (789)
      valeur=7;
      //break;
    }
    if (digitalRead(lig3)==1){// verification de la ligne 3 (456)
      valeur=4;
      //break;
    }
    if (digitalRead(lig4)==1){// verification de la ligne 4 (123)
      valeur=1;
      //break;
    }
    
    digitalWrite(col1,0);// extinction de la colonne 1
    digitalWrite(col2,1);// colonne 2 alumee (0852)
    
    if (digitalRead(lig1)==1){ // verification de la ligne 1 (*0#)
      valeur=0;
      //break;
    }
    if (digitalRead(lig2)==1){// verification de la ligne 2 (789)
      valeur=8;
      //break;
    }
    if (digitalRead(lig3)==1){// verification de la ligne 3 (456)
      valeur=5;
      //break;
    }
    if (digitalRead(lig4)==1){// verification de la ligne 4 (123)
      valeur=2;
      //break;
    }
    
    digitalWrite(col2,0);// extinction de la colonne 2
    digitalWrite(col3,1);// colonne 3 alumee (#963)  
    
    if (digitalRead(lig1)==1){ // verification de la ligne 1 (*0#)
      valeur=11;
      //break;
    }
    if (digitalRead(lig2)==1){// verification de la ligne 2 (789)
      valeur=9;
      //break;
    }
    if (digitalRead(lig3)==1){// verification de la ligne 3 (456)
      valeur=6;
      //break;
    }
    if (digitalRead(lig4)==1){// verification de la ligne 4 (123)
      valeur=3;
      //break;
    }
    
  return valeur;
  } // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fin de la fonction "getKey"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  void Clavier::readKeypad(){
    
    int valeurBrut;
    int tpsdet;
    tpsdet=300;
    
    if (tpsdet-tempsTouche>0){
      valeurBrut=getterKey(); 
      
      if (valeurBrut<10){// chiffres de 1 a 9
        if (dec==0){// avant d'appuyer sur la virgule
          valeurFinale=valeurFinale*pow(10,i)+valeurBrut;
          i++;
          }
          
        if (dec==1){// apres avoir appuyé sur la virgule
          valeurBrut=valeurBrut/(pow(10,i+1));
          valeurFinale=valeurFinale+valeurBrut;
          i++;
          }
          tpsdet=millis()-tpsdet;
        }
        
      if (valeurBrut==10){// si on appuye sur virgule(etoile)
        dec=1; // dec en variable globale
        }
      if (valeurBrut==11){//si on appuye sur moin (diese)
        if (moin==0){
        moin=1; // variable globale
        }
        if (moin==1){
          moin=0;
          }
        tpsdet=millis()-tpsdet;
        }
      
    
    }//fin du if te temporisa
    }// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fin de la fonction "keypadRead"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#ifndef Clavier_h
#define Clavier_h

#if ARDUINO<100
#include <WProgram.h>
#else
#include <Arduino.h>
#endif

class Clavier{
  public:
  Clavier(int col1,int col2,int col3,int lig1,int lig2,int lig3,int lig4);// constructeur
  double getValue();// retourne la valeur actuelle
  void resetValue();// valeur actuelle=0
  void readKeypad();
  
  private:
  double valeurFinale;
  int dec;
  int moin;
  int tempsTouche;
  int i;
  int col1,col2,col3, lig1, lig2, lig3, lig4;
  int getterKey();
  };
  #endif

Dans mon programme il y a des lignes qui ressemblent a : Clavier.getValue();

Lors de la compilation,un message en rouge en bas dans l'IDE s'affiche disant: "expected unqualified-id before '.' token"

Cependant dans l'onglet "croquis", dans "importer bibliothèque" on trouver "Clavier".

Je suis confus.
Si un de vous connais ce problème, je vous serais reconnaissant de m’éclairer.
Merci !

PS: je suis étudiant en Genie Mecanique et je suis en stage. On me demande de programmer une machine fonctionnant avec arduino, je suis un peut perdu, j'apprend un peut comme je peux.

Stefano Zampieri

Salut,

Bin normal tu as instancié clavierNum et non Clavier

Bonjour,

Si tu utilises un clavier tu as aussi la bibliothèque Keypad qui fonctionne trés bien.

Merci, Je pensais créer un objet s'appelant clavierNum .
Du coup ca me met plein d'autres erreurs de compilation mais je devrais peut etre arriver a les résoudre seul.
Encore merci pour la rapidité et l'efficacité !!!
bye

Juste pour vous dire que ca marche bien maintenant et pour vous remercier encore une fois.
Bisous

fino39:
Merci, Je pensais créer un objet s'appelant clavierNum .

Oui c'est bien ça, donc c'est cette objet qui a été instancié. C'est tout le propre des langages orienté objet, tu peux créer à partir de ta classe une quantité illimité d'objets identiques à la création mais totalement indépendants.

Ici tu pourrais très bien ajouter un autre clavier :

Clavier clavierNum(4,5,6,8,9,10,11);
Clavier clavierNum2(4,5,6,8,9,10,11);

et t'en servir :

clavierNum.readKeypad();
clavierNum2.readKeypad();