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
#if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); // ERREUR exit status 1 missing ninary operator before token ""#""
// 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
*/
J'ai une erreur, j'ai fait 'Recopier les messages d'erreur' et j'ai tout ça :o
On peut m'expliquer .
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
// 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
*/
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...
Si je comprends bien j'ai encore 3 erreurs.
Pour le I2c les couleurs à noter ne sont pas yelllow et blue ?
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.
// 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
*/
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.
#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
*/
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
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.
#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
*/
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'
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.
#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
*/
#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 <OneWire.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
//les librairies de la sonde étanche DS18B20
//https://github.com/PaulStoffregen/OneWire
// 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érature 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
*/
Ici mais je croyais qu'elle était incluse de base dans l'IDE... Je dois me tromper
Je croyais aussi, mais non.
Dernière ligne droite :
Le constructeur de DallasTemperature réclame une adresse (&) :
DallasTemperature sensors(&oneWire);
Et il te manque un setup()
void setup(void)
{
// start serial port
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
// INITIALISER AUSSI L'AFFICHEUR
}
( je n'arrivais pas à lire le '&'. Je croyais à une patte de mouche de mon pc)
Une dernière question pour ce post ( ... enfin je crois )
Je veux donc écrire la tempéraur de la sonde étanche sur oled I2C.
Est-ce que je mets "dTempWater" ou A2 ?
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
Ah ben non, une autre question
Ici j'ai modifié le code d'origine qui notait 5 volt par 12v, qui est la valeur de la batterie à pleine charge.
La logique est bonne ?
Pleine charge = 1023 dpnc = 12 ?
// pour le voltage de la batterie
int sensorValue = analogRead(A0); // Conversion 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();
#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 <OneWire.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
//les librairies de la sonde étanche DS18B20
//https://github.com/PaulStoffregen/OneWire
// 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 setup(void)
{
// start serial port
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
// INITIALISER AUSSI L'AFFICHEUR
display.clearDisplay();
}
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érature 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); // Conversion 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
*/
Quand tu écris display.println("dTempWater");avec des guillemets, tu affiches un texte, pas une valeur numérique. Pour afficher la valeur d'une variable, il faut ôter les guillemets : display.println(dTempWater);Après, il faut que la variable que tu affiches corresponde bien à ton besoin.
En général, les noms tels que A0, A1 sont réservés à des numéros de broches, donc tu peux les afficher si tu veux mais ils ne te donneront pas la valeur mesurée sur cette broche, c'est clair. Donc pour afficher la température, il faut afficher la variable qui contient cette température.
Pour la mesure de tension, c'est bon. Je ne suis pas un pro des batteries, mais tu devrais mesurer la vraie valeur de tension délivrée par ta batterie à pleine charge, ce serait plus précis que de mettre 12 par défaut.