Bonjour
Suite au post précédent sur "Ecran oled 128x64 i2c et bibliothèque u8x8, j'essaie la bibliothèque u8g2
qui me permet de changer la taille de la police.
J'ai 2 pb.
1 Je ne sais pas quel écran choisir dans la rubriqueSSD1306 128X64_NONAME
Et comment le paramétrer
2 Je ne comprends pas le choix des fontes.
Certaines sont notées en fin u8g2, d'autres x11.
Je pense que c'est directX11, mais laquelle je dois prendre ?
Je joints le code qui fonctionne en u8x8
/*
Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
Copyright (c) 2016, olikraus@gmail.com
All rights reserved.
Please UNCOMMENT one of the contructor lines below
U8x8 Contructor List: https://github.com/olikraus/u8g2/wiki/u8x8setupcpp
Update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected
*/
/* utilisation de A0 pour le voltage avec resistance en //
pin 4 pour l'AIR DS18b20EAU
des A4 et A5 pour l'écran
du pin 2 pour l'eau DS18b20EAU
AO récupère l'information du voltage avec GND fil direct à la batterie mais avec resistance en parallèle !!
pin 4 AIR récupère l'information de la température de la sonde étanche 1m DS18B20
pin 2 EAU récupère l'information de la température de la sonde étanche 1m DS18B20
A4 et A5 affichage de l'écran
"5 Volt c'est la tension de la référence de tension de l'ADC.
J'espère que tu n'as pas raccordé directement le 12V à A0 ?
Il faut placer un pont diviseur à deux résistances pour que la tension sur A0 soit inférieure à 12V".
*/
/* Essai affichage voltage, température air et eau
// http://www.instructables.com/id/Arduino-OLED-Voltage-Meter/ le voltmètre
// A0 et GND entre les deux mettre resistance ( voir le lien)ici A0 pour le voltage
// A0 est lié à la batterie et GND à l'autre pôle de la batterie
// 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/
//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
*/
// Pour l'écran
#include <Arduino.h>
#include <U8x8lib.h>
//Pour les sondes
#include <DallasTemperature.h> //DS18B20 pour température de l'eau et de l'air
#include <Wire.h>
// Déclaratipon de l'écran 128x64
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(A5, A4, U8X8_PIN_NONE); // OLEDs without Reset of the Display
// Déclaratipon de l'écran 128x128 à venir
// U8X8_SH1107_128X128_HW_I2C u8x8(/* reset=*/ 8);
// les 2 sondes DS18B20
#define ONE_WIRE_BUS_1 2 // sonde pour l'eau pin 2
#define ONE_WIRE_BUS_2 4 // sonde pour l'air pin 4
OneWire oneWire_in(ONE_WIRE_BUS_1); // sonde pour l'eau
OneWire oneWire_out(ONE_WIRE_BUS_2); // sonde pour l'air
DallasTemperature sensor_eau(&oneWire_in); // sonde pour l'eau
DallasTemperature sensor_air(&oneWire_out); // sonde pour l'air
void setup(void)
{
/* U8g2 Project: SSD1306 Test Board */
pinMode(A4, OUTPUT);
digitalWrite(A4, 0);
u8x8.begin();
u8x8.setPowerSave(0);
// start serial port
Serial.begin(115200);
Serial.println("Dallas Temperature Control Library Demo - TwoPin_DS18B20");
// Start up the library
sensor_eau.begin(); // sonde pour l'eau
sensor_air.begin(); // sonde pour l'air
// déclaration de la pin 2 et 4
pinMode(2, INPUT);
pinMode(4, INPUT);
int readValEau = analogRead(2);// met à zéro la sonde EAU
int readValAir = analogRead(4);// met à zéro la sonde AIR
}
void loop(void)
{
// AFFICHAGE SUR SERIAL
Serial.print("Recherche des temperatures...");
sensor_eau.requestTemperatures();
sensor_air.requestTemperatures();
Serial.println(" done");
// sonde EAU
Serial.print("Température eau: ");
Serial.println(sensor_eau.getTempCByIndex(0));
// sonde AIR
Serial.print("Température air: ");
Serial.println(sensor_air.getTempCByIndex(0));
delay ( 5000);
/*/modele d'écriture
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 18);
u8x8.print("Hello World");
*/
// Affichage Niveau batterie
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 0);
u8x8.println("NIVEAU BATTERIE");
//delay ( 1000);
// pour le voltage de la batterie
// Conversion du signal (which goes from 0 - 1023) to a voltage (0 - (V):
int sensorValue = analogRead(A0);//******************************************************* A3 pour la voiture bateau
// écrit la valeur lue
float voltage = sensorValue * (5.0 / 1023.0);
u8x8.setCursor(0, 1);// position 0, sur la 1 ere ligne,
u8x8.print(" ");
u8x8.print(voltage);
u8x8.print("V");
//Affichage températures Air
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 3);
u8x8.println("TEMP. AIR ");
u8x8.print(" ");
u8x8.print(sensor_air.getTempCByIndex(0));
u8x8.print(" ");
u8x8.print("C");
// Affichage températures Eau
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 6);
u8x8.println("TEMP. EAU ");
u8x8.print(" ");
u8x8.print(sensor_eau.getTempCByIndex(0));
u8x8.print(" ");
u8x8.print("C");
}
Code de test dans lequel j'ai remplacé les u8x8 par u8g2 ( si j'ai bien compris la différence entre les 2 bibliothèque)
// Pour l'écran
#include <Arduino.h>
#include <U8g2lib.h>
// pour les fontes https://github.com/olikraus/u8g2/wiki/fntlistall
// poue l'écran https://github.com/olikraus/u8g2/wiki/u8g2setupc
// Déclaratipon de l'écran 128x64
U8G2_SSD1306_128X64_NONAME_SW_I2C U8G2(A5, A4, U8G2_PIN_NONE); // OLEDs without Reset of the Display
// Déclaratipon de l'écran 128x128 à venir
// U8G2_SH1107_128X128_HW_I2C U8G2(/* reset=*/ 8);
void setup(void)
{
/* U8g2 Project: SSD1306 Test Board */
pinMode(A4, OUTPUT);
digitalWrite(A4, 0);
u8g2.begin();
u8g2.setPowerSave(0);
}
void loop(void)
{
//modele d'écriture
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(0, 15);
u8g2.print("Hello World!");
}