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