Bonjour, j'ai un code arduino qui fonctionne bien, il me permets de visualiser la température d'un capteur sur un petit écran lcd.
temperature_lcd.ino
Or je n'arrive pas à compiler dès que je sépare les déclarations et les instanciations en un fichier "config.h"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 ////////////////////////////////////////////////////////////////////////// //// //// //// affichage de la température //// //// sur écran LCD 16x2 //// //// //// ////////////////////////////////////////////////////////////////////////// // Inclusion des librairies #include <Wire.h> #include <LiquidCrystal.h> #include <OneWire.h> //Librairie du bus OneWire #include <DallasTemperature.h> //Librairie du capteur #include "config.h" #define NOT_AN_INTERRUPT -1 //const word rpm_facteur = 30; // pour moteur 4 cylindres 4 temps : =60/(nombre d'étincelles par tour moteur) const byte ledPin = 13; int outPin = 9; // digital pin 9 void setup(){ //cli () ; // déactive interruptions globales #ifdef Debug Serial.begin(115200); // for debugging #endif sensors.begin(); //Activation des capteurs sensors.getAddress(sensorDeviceAddress, 0); //Demande l'adresse du capteur à l'index 0 du bus sensors.setResolution(sensorDeviceAddress, 12); //Résolutions possibles: 9,10,11,12 //initialisation du LCD init_lcd(); pinMode(ledPin, OUTPUT); pinMode(outPin, OUTPUT); //sei () ; // active les interruptions } void loop(){ sensors.requestTemperatures(); //Demande la température aux capteurs #ifdef Debug Serial.print("La température est: "); Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du capteur n°0 Serial.println(" C°"); #endif lcd.clear(); lcd.print("Temperature ="); lcd.setCursor(9,1); lcd.print(sensors.getTempCByIndex(0)); lcd.setCursor(14,1); lcd.print("C"); }
et un fichier où se trouve les fonctions: config2.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #ifndef config_h #define config_h // comment out the next line to eliminate the Serial.print stuff // saves about XX Ko of program memory //#define Debug // --- constantes des broches --- const int RS = 3; //declaration constante de broche const int E = 8; //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 extern OneWire oneWire(2); //Bus One Wire sur la pin 2 de l'arduino extern DallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteurs extern DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie extern LiquidCrystal lcd(RS, E, D4, D5, D6, D7); // ----- déclaration des fonctions ----- //initialisation du LCD void init_lcd (); #endif
j'ai bien mis extern pour les variables dans le .h mais rien n'y fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 // Inclusion des librairies //#include <Arduino.h> #include <Wire.h> #include <LiquidCrystal.h> #include <OneWire.h> //Librairie du bus OneWire #include <DallasTemperature.h> //Librairie du capteur #include "config.h" OneWire oneWire(2); //Bus One Wire sur la pin 2 de l'arduino DallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteurs DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie LiquidCrystal lcd(RS, E, D4, D5, D6, D7); //initialisation du LCD void init_lcd () { // Configuration de l'afficheur 16 caractères en 2 lignes lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Initialisation"); delay(1000); lcd.clear(); lcd.print("Temperature ="); lcd.setCursor(9,1); lcd.print("16.2"); lcd.setCursor(14,1); lcd.print("C"); delay(1000); }
Quelle est l'erreur que je fais encore ?This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows XP), Board: "Arduino Uno"
config2.cpp:9: error: redefinition of 'OneWire oneWire'
config.h:18: error: 'OneWire oneWire' previously declared here
config2.cpp:10: error: redefinition of 'DallasTemperature sensors'
config.h:19: error: 'DallasTemperature sensors' previously declared here
config2.cpp:12: error: redefinition of 'LiquidCrystal lcd'
config.h:21: error: 'LiquidCrystal lcd' previously declared here
Partager