malheureusement, c'est le genre de trucs que je saurais pas expliquer proprement.
y'a un tuto ici(clique c'est un lien) mais il est peut-être pas suffisamment complet pour ton cas.
en fait, une lib, en C++, c'est une classe: la description d'un objet, et de tout ce qu'il peut faire, à part. et ensuite, il suffit dans le code de créer cet objet pour avoir accès à toutes ses fonctionnalités (que tu as codées)
mettons que tu aie un avion, tu peux lui donner 2-3 variables (son immatriculation, l'agence de voyage, le nombre maxi de passagers, son état général, en pourcentage par exemple, etc…) et tu peux aussi lui donner des fonctions: faire la révision, voler vers un certain nombre de villes. cette étape, c'est grâce à elle que tu fais le fichier .h (le header, là où tu déclare tout, dès que ça te vient par la tête, en réfléchissant à qui dans ton programme a le droit d'accéder à telle ou telle variable et fonction: le mécanicien n'a pas accès à l'immatriculation de l'avion, il n'a pas le droit de la modifier. par contre, il peut faire la révision, et donc il a accès à la fonction réparer l'avion).
et ensuite y'a plus qu'à coder les fonctions, et là c'est bête et méchant: tu prends une fonction, tu code. tu en prends une autre, et tu code. et ainsi de suite.
dans ton cas, j'aurais tendance à faire un objet de ce style là:
- fichier .h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | #include "OneWire.h"
#include "WProgram.h"
#ifndef DS18S20_h
#define DS18S20_h
class DS18S20{
public:
DS18S20(int pin);
float getTemperature();//mesurer la température, et la retourner sous la forme d'un float
private:
int _pin;//cette variable est en private, parce que personne ne doit pouvoir la modifier
OneWire _bus;
};
#endif
|
je te laisse faire le .cpp (c'est grossomodo ce que tu as déjà fait avant, y'a plus qu'à remettre en forme…)
et dans le sketch arduino, ce serait plutôt de ce style:
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 | #include <Wire.h>
#include "DS18S20.h"
#include "rgb_lcd.h"
//cellule D2 DS18B20
#define DS18S20_D2 2
DS18S20 capteur_1(DS18S20_D2);
//cellule D3 DS18B20
#define DS18S20_D3 3
DS18S20 capteur_2(DS18S20_D3);
//=========================================
void setup(){
lcd.begin(16, 2);
}
//=========================================
void loop(){
float temperatureE = capteur_1.getTemperature();
float temperatureC = clateur_2.getTemperature();
if (isnan(temperatureE) || isnan(temperatureC)) {
lcd.println("pas d infos");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TE:");
lcd.print(temperatureE);
lcd.setCursor(0, 1);
lcd.print("TC:");
lcd.print(temperatureC);
delay(5000);
}
}
|
voilà ce que j'aurais fait. pas sûr que ça compile dans l'état actuel du code, j'ai pas essayé, et vu que j'ai pas fait le .cpp, de toute façon ça ne marcherait pas. à toi de poser des questions sur ce que t'as pas compris, parce que la programmation orientée objet, c'est quelque chose qui mériterait presque un tuto à elle seule, et quel que soit le langage, et perso j'ai pas trop les capacités d'en faire un…
pour VRAIMENT plus de précisions, tu peux chercher un tuto de C++ qui parle de programmation orientée objet, style celui sur openclassrooms, chapitre 2 (clique c'est un lien).
enfin voilà… j'espere ne pas t'avoir trop embrouillé. si tu vois que t'y arrive pas mieux comme ça, repasse sur la solution d'Eskimon, qui est plus simple, mais qui produit un code un peu moins lisible (enfin ça, c'est une question de gouts et d'habitude plutôt qu'autre chose…)