109 lines
4.1 KiB
C++
109 lines
4.1 KiB
C++
/**************************************************************************
|
|
Auteur : Christophe JEANNEROT
|
|
|
|
- Gestion d'un ecran LCD de 0.9 Pouces
|
|
- Relevé d'une sonde DHT
|
|
**************************************************************************/
|
|
|
|
#include <SPI.h>
|
|
#include <Wire.h>
|
|
#include <Adafruit_GFX.h>
|
|
#include <Adafruit_SSD1306.h>
|
|
|
|
// définition de la taille de l'ecran
|
|
#define SCREEN_WIDTH 128 // Largeur
|
|
#define SCREEN_HEIGHT 64 // Hauteur
|
|
|
|
#define OLED_RESET -1 // Pas de PIN de reset sur l'écran
|
|
#define SCREEN_ADDRESS 0x3C // Adresse de l'ecran
|
|
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
|
|
|
// LOGO AZYLIS
|
|
#define LOGO_HEIGHT 45
|
|
#define LOGO_WIDTH 64
|
|
static const unsigned char PROGMEM logo_bmp[] =
|
|
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x7F,
|
|
0xFF, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x00, 0xFF,
|
|
0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x00, 0x03, 0xFF,
|
|
0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF,
|
|
0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF,
|
|
0xFF, 0xE0, 0x20, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x20, 0x1F, 0xFE, 0x00, 0xFF, 0xFF,
|
|
0xFF, 0xC0, 0x70, 0x1F, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x70, 0x0F, 0xF8, 0x03, 0xFF, 0xFF,
|
|
0xFF, 0x80, 0xF8, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0xFF,
|
|
0xFF, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, 0xFE, 0x03, 0xC0, 0x1F, 0xFF, 0xFF,
|
|
0xFC, 0x03, 0xFE, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0x01, 0x00, 0x7F, 0xFF, 0xFF,
|
|
0xF8, 0x07, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xFF,
|
|
0xF0, 0x00, 0x1F, 0xC0, 0x02, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xC0, 0x04, 0x00, 0x00, 0x0F,
|
|
0xE0, 0x00, 0x1F, 0xE0, 0x08, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x10, 0x00, 0x00, 0x0F,
|
|
0xC0, 0x00, 0x1F, 0xF0, 0x20, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3C, 0x00, 0x1C, 0x03, 0xE0, 0x20, 0x1F,
|
|
0xF8, 0x3C, 0x00, 0x18, 0x03, 0xE0, 0x00, 0x1F, 0xF8, 0x1C, 0x00, 0x08, 0x43, 0xE0, 0x00, 0x1F,
|
|
0xF8, 0x1F, 0x83, 0x00, 0x43, 0xF8, 0xC3, 0xFF, 0xF0, 0x0F, 0x83, 0x00, 0xC3, 0xF8, 0xC0, 0x1F,
|
|
0xF0, 0x0F, 0x07, 0x80, 0xC3, 0xF8, 0xC0, 0x0F, 0xE0, 0x0E, 0x0F, 0x81, 0xC3, 0xF8, 0xE0, 0x0F,
|
|
0xE0, 0x04, 0x1F, 0xC1, 0xC3, 0xF8, 0xFF, 0x0F, 0xE0, 0x04, 0x01, 0xC3, 0xC0, 0x00, 0x00, 0x0F,
|
|
0xC3, 0x80, 0x01, 0xC3, 0xC0, 0x00, 0x00, 0x0F, 0xC3, 0xC0, 0x01, 0xC3, 0xC0, 0x00, 0x00, 0x1F,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
|
|
// Reset de l'écran
|
|
display.clearDisplay();
|
|
|
|
// Affichage du Logo sur l'écran
|
|
AffichageLogo();
|
|
|
|
// Effet Flash du LOGO
|
|
display.invertDisplay(true);
|
|
delay(1000);
|
|
display.invertDisplay(false);
|
|
delay(1000);
|
|
|
|
// Affichage
|
|
Affichage();
|
|
|
|
}
|
|
|
|
void loop() {
|
|
}
|
|
|
|
|
|
void Affichage(void) {
|
|
display.clearDisplay();
|
|
|
|
|
|
display.setTextSize(2); // Draw 2X-scale text
|
|
display.setTextColor(SSD1306_WHITE);
|
|
display.setCursor(0,0);
|
|
display.println(F(" MA MAISON")); //display.println(0xDEADBEEF, HEX);
|
|
|
|
display.setTextSize(1); // Normal 1:1 pixel scale
|
|
display.println(F(""));
|
|
display.setTextColor(SSD1306_WHITE); // Draw white text
|
|
display.println(F("Temparature : 18.0"));
|
|
display.println(F(""));
|
|
display.println(F(""));
|
|
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text
|
|
display.println(F(" "));
|
|
display.println(F(" TROP Froid !!!! "));
|
|
|
|
|
|
|
|
display.display();
|
|
//delay(10000);
|
|
}
|
|
|
|
|
|
void AffichageLogo(void) {
|
|
display.clearDisplay();
|
|
|
|
display.drawBitmap(
|
|
(display.width() - LOGO_WIDTH ) / 2,
|
|
(display.height() - LOGO_HEIGHT) / 2,
|
|
logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1);
|
|
display.display();
|
|
delay(1000);
|
|
}
|