Go Down

Topic: Aide sur Ecran oled I2C 128x64 / sonde KY-013: double affichage  (Read 905 times) previous topic - next topic

ArduinoFree

Bonjour

J'essaie d'afficher sur un écran oled I2C 128x64 un niveau de batterie et 2 températures ( eau et air)
Pour l'instant je teste voltmètre et température par thermo resistance (  Keyes KY-013)
j'ajouterai par la suite la sonde DS18b20 étanche.
Je ne peux rien tester physiquement car j'attends de recevoir le matériel ( La chine est loin !)

Le code me donne les erreurs dès le départ
Code: [Select]

#if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); // ERREUR exit status 1  missing ninary operator before token ""#""



http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/

Code: [Select]

// Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
// http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
// https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/







#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); // ERREUR exit status 1  missing ninary operator before token ""#""
#endif                   

#include <math.h>                  //KY-013

int sensorPin = A1;                 // KY-013 Déclaration de la broche d'entrée

// KY-013    Cette fonction convertit la valeur analogique lue en température en °C
double Thermistor(int RawADC)
{
  double Temp;
  Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15;            // conversion de degrés Kelvin en °C
  return Temp;
}


void loop() {

  // KY-013 le programme mesure la valeur de tension continue à la CTN et convertit le résultat en °C
  int readVal = analogRead(sensorPin);
  double temp =  Thermistor(readVal);

  delay(1);//delay time 1 mili second
  display.clearDisplay();

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Niveau Batterie");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A0");//define analog pin  16 pixels
  display.setTextSize(1);
  display.setTextColor(WHITE);//text color

  display.println("A1");                     // ici on met la 1° température air ( Keyes KY-013)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  displat.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser

  display.println("A2");                      // ici on met la 2° température eau (sonde étanche)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  displat.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser


  // pour le voltage de la batterie
  int sensorValue = analogRead(A0); // Convertion du signal (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);         // écrit la valeur lue
  display.print(voltage);
  display.println("V");                                              // ces 2 lignes pour afficher 0,00V
  display.display();
}
/*
  AO   récupère l'information du voltage
  A1    récupère l'information de la température  Thermo résistance (modèle Keyes KY-013)
  A2   récupère l'information de la température de la sonde étanche 1m  DS18B20
*/

lesept

Essaye de mettre le #error sur une autre ligne :

Code: [Select]
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");


Sinon, plus simple :
Code: [Select]
#if (SSD1306_LCDHEIGHT != 64)
#error Height incorrect, please fix Adafruit_SSD1306.h!


Au pire, comme ton écran fait 64 pixels de haut, tu peux ôter ces lignes.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

Lignes supprimées

J'ai une erreur, j'ai fait  'Recopier les messages d'erreur' et j'ai tout ça  :o
On peut m'expliquer .

Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

Ecran_temp_volt:68: error: stray '\302' in program

   display.println("V");                                              // ces 2 lignes pour afficher 0,00V

   ^

Ecran_temp_volt:68: error: stray '\240' in program

D:\ACER-Patrick\CLARISSE\Code bateau\Ecran_temp_volt\Ecran_temp_volt.ino: In function 'void loop()':

Ecran_temp_volt:37: error: 'display' was not declared in this scope

   display.clearDisplay();

   ^

Ecran_temp_volt:40: error: 'WHITE' was not declared in this scope

   display.setTextColor(WHITE);//text color

                        ^

Ecran_temp_volt:44: error: 'BLACK' was not declared in this scope

   display.setTextColor(BLACK, WHITE);

                        ^

Ecran_temp_volt:53: error: 'displat' was not declared in this scope

   displat.print(char(186));                  //Affichage du symbole <°>

   ^

exit status 1
stray '\302' in program

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.




Merci




Code: [Select]

// Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
// http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
// https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/







#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET);


#include <math.h>                  //KY-013

int sensorPin = A1;                 // KY-013 Déclaration de la broche d'entrée

// KY-013    Cette fonction convertit la valeur analogique lue en température en °C
double Thermistor(int RawADC)
{
  double Temp;
  Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15;            // conversion de degrés Kelvin en °C
  return Temp;
}


void loop() {

  // KY-013 le programme mesure la valeur de tension continue à la CTN et convertit le résultat en °C
  int readVal = analogRead(sensorPin);
  double temp =  Thermistor(readVal);

  delay(1);//delay time 1 mili second
  display.clearDisplay();

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Niveau Batterie");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A0");//define analog pin  16 pixels
  display.setTextSize(1);
  display.setTextColor(WHITE);//text color

  display.println("A1");                     // ici on met la 1° température air ( Keyes KY-013)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  displat.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser

  display.println("A2");                      // ici on met la 2° température eau (sonde étanche)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  displat.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser


  // pour le voltage de la batterie
  int sensorValue = analogRead(A0); // Convertion du signal (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);         // écrit la valeur lue
  display.print(voltage);
  display.println("V");                                              // ces 2 lignes pour afficher 0,00V
  display.display();
}
/*
  AO   récupère l'information du voltage
  A1    récupère l'information de la température  Thermo résistance (modèle Keyes KY-013)
  A2   récupère l'information de la température de la sonde étanche 1m  DS18B20
*/

lesept

Il arrive parfois qu'on tape es caractères bizarre au clavier sans le vouloir :  visiblement tu as un de ces caractères (invisible car assez loin dans la table ASCII, code 194 et l'IDE ne sais pas l'afficher).
Efface tout ce qui se trouve derrière le point virgule de la ligne fautive. Ça devrait compiler...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

Passé pour le A bizarre.

Si je comprends bien j'ai encore 3 erreurs.
Pour le I2c les couleurs à noter ne sont pas yelllow et blue ?

Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

D:\ACER-Patrick\CLARISSE\Code bateau\Ecran_temp_volt\Ecran_temp_volt.ino: In function 'void loop()':

Ecran_temp_volt:37: error: 'display' was not declared in this scope

   display.clearDisplay();

   ^

Ecran_temp_volt:40: error: 'WHITE' was not declared in this scope

   display.setTextColor(WHITE);//text color

                        ^

Ecran_temp_volt:44: error: 'BLACK' was not declared in this scope

   display.setTextColor(BLACK, WHITE);

                        ^

exit status 1
'display' was not declared in this scope

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.




Code: [Select]

// Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
// http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
// https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/







#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET);


#include <math.h>                  //KY-013

int sensorPin = A1;                 // KY-013 Déclaration de la broche d'entrée

// KY-013    Cette fonction convertit la valeur analogique lue en température en °C
double Thermistor(int RawADC)
{
  double Temp;
  Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15;            // conversion de degrés Kelvin en °C
  return Temp;
}


void loop() {

  // KY-013 le programme mesure la valeur de tension continue à la CTN et convertit le résultat en °C
  int readVal = analogRead(sensorPin);
  double temp =  Thermistor(readVal);

  delay(1);//delay time 1 mili second
  display.clearDisplay();

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Niveau Batterie");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A0");//define analog pin  16 pixels
  display.setTextSize(1);
  display.setTextColor(WHITE);//text color

  display.println("A1");                     // ici on met la 1° température air ( Keyes KY-013)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser

  display.println("A2");                      // ici on met la 2° température eau (sonde étanche)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser


  // pour le voltage de la batterie
  int sensorValue = analogRead(A0); // Convertion du signal (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);         // écrit la valeur lue
  display.print(voltage);
  display.println("V");
  display.display();
}
/*
  AO   récupère l'information du voltage
  A1    récupère l'information de la température  Thermo résistance (modèle Keyes KY-013)
  A2   récupère l'information de la température de la sonde étanche 1m  DS18B20
*/

lesept

Je pense que tu n'as pas déclaré la bibliothèque qui gère l'écran. Ajoute :
Code: [Select]
#include Adafruit_SSD1306.h
en début de code. Ou alors tu peux l'importer depuis l'IDE, dans le menu gérer les bibliothèques ou importer une bibliothèque (de mémoire)
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

Ah j'aime pas ça.
Comme je te disais par ailleurs

Ma carte n'esqt pas adaptée ?

Edit : j'ai testé les autres cartes, même pb
je n'ai que cette bibliothèque
#include <Adafruit_CircuitPlayground.h>

Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

D:\ACER-Patrick\CLARISSE\Code bateau\Ecran_temp_volt\Ecran_temp_volt.ino:14:68: fatal error: Adafruit_SSD1306.h: No such file or directory

 #include <Adafruit_SSD1306.h>        / la bibliothèque du l'écran

                                                                    ^

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.




ArduinoFree

je suis reparti sur le site du code d'origine

Il y a le lien vers la bibliothèque

Code: [Select]

https://github.com/adafruit/Adafruit_SSD1306


Mais je ne sais pas quoi prendre et surtout où l'enregistrer.

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

C'est fait mais tjrs la même erreur


Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

In file included from D:\ACER-Patrick\CLARISSE\Code bateau\Ecran_temp_volt\Ecran_temp_volt.ino:1:0:

D:\ACER-Patrick\Documents\Arduino\libraries\Adafruit_SSD1306-master/Adafruit_SSD1306.h:49:26: fatal error: Adafruit_GFX.h: No such file or directory

 #include <Adafruit_GFX.h>

                          ^

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.







Code: [Select]

#include <Adafruit_SSD1306.h>      // la bibliothèque du l'écran
#include <math.h>                  //KY-013 pour température de l'air


// Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
// http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
// https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/

//la librairie de l'écran
//https://github.com/adafruit/Adafruit_SSD1306

#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET);



int sensorPin = A1;                 // KY-013 Déclaration de la broche d'entrée

// KY-013    Cette fonction convertit la valeur analogique lue en température en °C
double Thermistor(int RawADC)
{
  double Temp;
  Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15;            // conversion de degrés Kelvin en °C
  return Temp;
}


void loop() {

  // KY-013 le programme mesure la valeur de tension continue à la CTN et convertit le résultat en °C
  int readVal = analogRead(sensorPin);
  double temp =  Thermistor(readVal);

  delay(1);//delay time 1 milli second
  display.clearDisplay();

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Niveau Batterie");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A0");//define analog pin  16 pixels
  display.setTextSize(1);
  display.setTextColor(WHITE);//text color

  display.println("A1");                     // ici on met la 1° température air ( Keyes KY-013)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser

  display.println("A2");                      // ici on met la 2° température eau (sonde étanche)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser


  // pour le voltage de la batterie
  int sensorValue = analogRead(A0); // Convertion du signal (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);         // écrit la valeur lue
  display.print(voltage);
  display.println("V");
  display.display();
}
/*
  AO   récupère l'information du voltage
  A1    récupère l'information de la température  Thermo résistance (modèle Keyes KY-013)
  A2   récupère l'information de la température de la sonde étanche 1m  DS18B20
*/

hbachetti

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

ArduinoFree

Merci

J'ai vu après mais je croyais qu'elle était incluse dans l'autre à cause de son nom…. eh ben non !

encore une erreur à la ligne après delay 1 milli seconde

Ce qui m'ennuie c'est que ce n'est pas une question de logique mais purement installation de logiciel et là, je ne peux pas faire grand chose  :(

Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

D:\ACER-Patrick\CLARISSE\Code bateau\Ecran_temp_volt\Ecran_temp_volt.ino: In function 'void loop()':

Ecran_temp_volt:38: error: 'display' was not declared in this scope

   display.clearDisplay();

   ^

exit status 1
'display' was not declared in this scope

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.








Code: [Select]

#include <Adafruit_SSD1306.h>      // la bibliothèque du l'écran
#include <Adafruit_GFX.h>
#include <math.h>                  //KY-013 pour température de l'air


// Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
// http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
// https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/

//la librairie de l'écran
//https://github.com/adafruit/Adafruit_SSD1306

#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET);



int sensorPin = A1;                 // KY-013 Déclaration de la broche d'entrée

// KY-013    Cette fonction convertit la valeur analogique lue en température en °C
double Thermistor(int RawADC)
{
  double Temp;
  Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15;            // conversion de degrés Kelvin en °C
  return Temp;
}


void loop() {

  // KY-013 le programme mesure la valeur de tension continue à la CTN et convertit le résultat en °C
  int readVal = analogRead(sensorPin);
  double temp =  Thermistor(readVal);

  delay(1);//delay time 1 milli second
  display.clearDisplay();

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Niveau Batterie");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A0");//define analog pin  16 pixels
  display.setTextSize(1);
  display.setTextColor(WHITE);//text color

  display.println("A1");                     // ici on met la 1° température air ( Keyes KY-013)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser

  display.println("A2");                      // ici on met la 2° température eau (sonde étanche)
  display.setTextSize(2);//text size                                        // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                        //Affichage du symbole <C>
  delay(500);                                      // Attente 0,5 sec pour réactualiser


  // pour le voltage de la batterie
  int sensorValue = analogRead(A0); // Convertion du signal (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);         // écrit la valeur lue
  display.print(voltage);
  display.println("V");
  display.display();
}
/*
  AO   récupère l'information du voltage
  A1    récupère l'information de la température  Thermo résistance (modèle Keyes KY-013)
  A2   récupère l'information de la température de la sonde étanche 1m  DS18B20
*/



lesept

Ceci n'est pas une ligne
Code: [Select]
#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET);
mais deux lignes :
Code: [Select]
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


Au besoin, inspire toi de ce sketch
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

En fait je l'ai ton code. Il est fourni en exemple avec Addafruit.
J'ai ajouté oneWire et la partie pour la sonde sonar étanche DS18B20.

J'ai encore une erreur mais je crois qu'elle est 'minime'

Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

In file included from D:\ACER-Patrick\CLARISSE\Code bateau\Ecran_temp_volt\Ecran_temp_volt.ino:6:0:

D:\ACER-Patrick\Documents\Arduino\libraries\DallasTemperature-3.8.0/DallasTemperature.h:22:21: fatal error: OneWire.h: No such file or directory

 #include <OneWire.h>

                     ^

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.



Code: [Select]

  

#include <Adafruit_SSD1306.h>      // la bibliothèque du l'écran
#include <Adafruit_GFX.h>          // la bibliothèque du l'écran
#include <math.h>                  //KY-013 pour température de l'air

#include <Wire.h> //DS18B20 pour température de l'eau
#include <DallasTemperature.h>    //DS18B20 pour température de l'eau


// Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/  le voltmètre
// http://edu.mrpigg.ca/termo.html     thermo resistor  Keyes KY-013  pour l'air
// https://letmeknow.fr/blog/2016/08/10/le-capteur-de-temperature-ds18b20/           //A venir

//les librairies de l'écran
//https://github.com/adafruit/Adafruit_SSD1306
//https://github.com/adafruit/Adafruit-GFX-Library





//  L'écran OLED
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


// Température de l'eau DS18B20
#define EAU_TEMPERATURE_PIN A2
OneWire oneWire(EAU_TEMPERATURE_PIN);
DallasTemperature sensors(oneWire);


// Température de l'eau KY-013
int sensorPin = A1;                 // KY-013 Déclaration de la broche d'entrée
// fonction convertit la valeur analogique lue en température en °C
double Thermistor(int RawADC)
{
  double Temp;
  Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15;            // conversion de degrés Kelvin en °C
  return Temp;
}



void loop() {

  // la température de l'eau
  sensors.requestTemperatures();
  double dTempWater = sensors.getTempCByIndex(0);  / le nom de la variable de la températur eau

  // KY-013 le programme mesure la valeur de tension continue à la CTN et convertit le résultat en °C
  int readVal = analogRead(sensorPin);
  double temp =  Thermistor(readVal);

  delay(1);//delay time 1 milli second
  display.clearDisplay();

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Niveau Batterie");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A0");//define analog pin  16 pixels
  display.setTextSize(1);
  display.setTextColor(WHITE);//text color
  //*****************************

  display.setTextSize(1);//text size
  display.setTextColor(WHITE);//text color
  display.setCursor(0, 0);
  display.println("Temp. Eau et Air");//affiche texte 1ere ligne 8 pixels

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("A1");                     // ici on met la 1° température air ( Keyes KY-013)
  display.setTextSize(2);//text size         // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                      //Affichage du symbole <C>
  delay(500);                                // Attente 0,5 sec pour réactualiser

  display.setTextColor(BLACK, WHITE);
  display.println(); // affiche une ligne noire

  display.println("dTempWater");             // ici on met la 2° température eau (sonde étanche)(A2 ??)
  display.setTextSize(2);//text size         // mettre 2 pour 16 pixels
  display.print(char(186));                  //Affichage du symbole <°>
  display.println("C");                      //Affichage du symbole <C>
  delay(500);                                // Attente 0,5 sec pour réactualiser


  // pour le voltage de la batterie
  int sensorValue = analogRead(A0); // Convertion du signal (which goes from 0 - 1023) to a voltage (0 - 12V):
  float voltage = sensorValue * (12.0 / 1023.0);         // écrit la valeur lue
  display.print(voltage);
  display.println("V");
  display.display();
}
/*
  AO   récupère l'information du voltage
  A1   récupère l'information de la température  Thermo résistance (modèle Keyes KY-013)
  A2   récupère l'information de la température de la sonde étanche 1m  DS18B20
*/




Go Up