Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Index du Forum



Bibliothèque => casse tete chinois...pour moi


 
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Accueil -> Présentez-vous
Sujet précédent :: Sujet suivant  
Auteur Message
denis666666
Débutant

Hors ligne

Inscrit le: 11 Avr 2014
Messages: 7
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Ven 11 Avr - 16:51 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

PublicitéSupprimer les publicités ?
Bonjour a tous,

Je suis nouveau sur le forum.
Je débute dans le Arduino.

J'ai commencé à mettre en œuvre un petit capteur de température avec affiche sur un LCD .
Jusque là , rien de bien sorcier.

Pour peaufiner le code, j'ai voulu sortir la fonction d’acquisition de la température pour la mettre dans une bibliothèque.Et c'est là qu'est l'os!

Voici mon code de base:

#include <LiquidCrystal.h>

const int RS=2; //declaration constante de broche
const int E=3; //declaration constante de broche

const int D4=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D6=6; //declaration constante de broche
const int D7=7; //declaration constante de broche

const int tempSensor = A0; 

LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// initialisation LCD en mode 4 bits

void setup()   {

lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes
delay(10); // pause rapide pour laisser temps initialisation

lcd.print("LCD OK") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes

lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran
lcd.print("Arduino TEMP SENSOR") ; // affiche la chaîne texte - message de test
delay(700);

int lastTemp = -100;

}
int lastTemp = -100;
void loop(){

  float temp = lectureTemp();

  if( abs(temp-lastTemp)<0.20 )
    return;
  lastTemp = temp;
 
  // Afficher la valeur en evitant le
  //   lcd.clear(), pour éviter l'effet de
  //   scintillement.
lcd.setCursor(0, 2) ;
lcd.print("Temperature : ") ; // affiche la chaîne texte - message de test
lcd.print( temp,1 );
lcd.print( "c" );
delay(700); // pause de 2 secondes


}

float lectureTemp(){
 // Lecture de la valeur sur l'entrée analogique
 // Retourne une valeur entre 0->1024 pour 0->5v
 int valeur = analogRead(tempSensor); 

 // Converti la lecture en tension
 float tension = valeur * 5.0;
 tension /= 1024.0;
 
 // Convertir la tension (mv) en temperature
 float temperature = ((tension * 1000) - 500) / 10;
 
 return temperature;
}

Je l'ai diviser en 3 :

.H:

#ifndef Morse_h
#define Morse_h

#include "Arduino.h"

class CapteurTemp
{
  public:
    float lectureTemp();
  private:
};

#endif

.CPP

#include "Arduino.h"
#include "CapteurTemp.h"

const int tempSensor = A0; 

float CapteurTemp::lectureTemp(){

 int valeur = analogRead(tempSensor); 

 // Converti la lecture en tension
 float tension = valeur * 5.0;
 tension /= 1024.0;
 
 // Convertir la tension (mv) en temperature
 float temperature = ((tension * 1000) - 500) / 10;
 
 return temperature;
}

Fichier "Main":

#include <LiquidCrystal.h>
#include "CapteurTemp.h"

const int RS=2; //declaration constante de broche
const int E=3; //declaration constante de broche

const int D4=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D6=6; //declaration constante de broche
const int D7=7; //declaration constante de broche



LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// initialisation LCD en mode 4 bits

void setup()   {

lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes
delay(10); // pause rapide pour laisser temps initialisation

lcd.print("LCD OK") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes

lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran
lcd.print("Arduino TEMP SENSOR") ; // affiche la chaîne texte - message de test
delay(700);

int lastTemp = -100;

}
int lastTemp = -100;
void loop(){


 float temp =  CapteurTemp.lectureTemp(temperature);

  if( abs(temp-lastTemp)<0.20 )
    return;
  lastTemp = temp;
 
  // Afficher la valeur en evitant le
  //   lcd.clear(), pour éviter l'effet de
  //   scintillement.
lcd.setCursor(0, 2) ;
lcd.print("Temperature : ") ; // affiche la chaîne texte - message de test
lcd.print( temp,1 );
lcd.print( "c" );
delay(700); // pause de 2 secondes


}

Le soft Arduino me dit :

L36 expected primary expression before "." token  ( dans le main )


Je ne comprend pas le pourquoi du comment?
Quelqu'un peut il m'expliquer ?

D'avance merci
Revenir en haut
seb03000
Débutant

Hors ligne

Inscrit le: 23 Fév 2014
Messages: 55
Masculin
Niveau d'éléctronique: Intermédiaire

MessagePosté le: Ven 11 Avr - 18:14 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

Bonjour.


 
Citation:
 
L36 expected primary expression before "." token  ( dans le main )




éssai de ne pas mettre les "  " dans le titre "Main"
Revenir en haut
denis666666
Débutant

Hors ligne

Inscrit le: 11 Avr 2014
Messages: 7
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Ven 11 Avr - 20:36 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

???

Il n'y a pas de "" ligne 36...

Cordialement
Denis
Revenir en haut
Admin
Fondateur

Hors ligne

Inscrit le: 12 Avr 2012
Messages: 860
Masculin
Niveau d'éléctronique: Pro

MessagePosté le: Dim 13 Avr - 07:57 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

Pourquoi tu déclares Morse_h dans ton .h et qu'ensuite tu appelles CapteurTemp.h dans ton .cpp ? Je trouve ça assez bizarre...
C'est l'exemple du site arduino.cc mais il ne faut pas le reprendre tel quel, il faut l'adapter à tes beoins  Okay
____________________________
http://simple-duino.com
Revenir en haut
denis666666
Débutant

Hors ligne

Inscrit le: 11 Avr 2014
Messages: 7
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Dim 13 Avr - 19:51 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

merci pour cette réponse....je suis repéré! Embarassed
Bon je vais tenter de résumer ce que j'ai compris et là ou je cale

De mon code de départ , je veux extraire la fonction de lecture de température afin de la mettre dans une bibliothèque.

J'ai donc créé 2 fichiers: un .h et un .cpp .
Commençons par mon .h :

#ifndef CapteurTemp
#define CapteurTemp
#include "Arduino.h"

=> on évite les inclusions en boucle ( juste? ) + permet d'utiliser la bibliothèque de fonction Arduino

Ensuite, je défini ma classe:

class CapteurTemp
{
  public:
    float lectureTemp();
  private:
};

#endif

Est ce que jusque là pour toi c'est OK u dans la classe il y a d'autres choses à définir?

Merci d'avance Admin
Revenir en haut
Admin
Fondateur

Hors ligne

Inscrit le: 12 Avr 2012
Messages: 860
Masculin
Niveau d'éléctronique: Pro

MessagePosté le: Dim 13 Avr - 20:52 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

Mhhh, visiblement c'est bon mais si d'autres peuvent donner leurs avis, c'est mieux car on sera meilleur à plusieurs  Wink
____________________________
http://simple-duino.com
Revenir en haut
denis666666
Débutant

Hors ligne

Inscrit le: 11 Avr 2014
Messages: 7
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Dim 13 Avr - 21:29 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

OK quand je compile, voici ce que l'IDE m'affiche:
(voir image)
Peut être quand quelqu'un verra quelque chose qui m'échappe. Question

 
Revenir en haut
denis666666
Débutant

Hors ligne

Inscrit le: 11 Avr 2014
Messages: 7
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Dim 13 Avr - 21:34 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

Revenir en haut
denis666666
Débutant

Hors ligne

Inscrit le: 11 Avr 2014
Messages: 7
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Dim 13 Avr - 21:36 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

Revenir en haut
Admin
Fondateur

Hors ligne

Inscrit le: 12 Avr 2012
Messages: 860
Masculin
Niveau d'éléctronique: Pro

MessagePosté le: Dim 13 Avr - 22:05 (2014)    Sujet du message: Bibliothèque => casse tete chinois...pour moi Répondre en citant

#ifndef CapteurTemp_h
#define CapteurTemp_h


Essayes avec ça, ça devrait aller mieux 
____________________________
http://simple-duino.com
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 09:06 (2017)    Sujet du message: Bibliothèque => casse tete chinois...pour moi

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Accueil -> Présentez-vous Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino