Table des matières

Sommaire Matériels

Adafruit 1,3" 128x64 OLED FeatherWing - SH1107 + 3 buttons (I2C)

[Mise à jour le 18/8/2023]


1. Description

Le module complémentaire Adafruit FeatherWing 128×64 OLED pour Feather est un petit écran monochrome de 1,3 pouces de diagonale avec trois boutons pouvant être utilisés sur n'importe quelle carte mère Feather. Cet afficheur utilise un bus I2C pour se connecter et dispose d'un circuit de réinitialisation automatique et d'un bouton de réinitialisation sur le dessus. Il est composé de 128×64 pixels OLED blancs individuels et aucun rétroéclairage n'est requis car l'écran produit sa propre lumière. Le connecteur STEMMA QT compatible SparkFun Qwiic est inclus pour le bus I2C qui fournit le plug and play pour les appareils STEMMA QT, Qwiic et Grove I2C.

2. Exemples

2.1 Un premier exemple pour tester l'afficheur avec l'IDE Arduino

2.2 Mise en oeuvre de l'afficheur avec un capteur BME280

*.cpp
// Matériels : Adafruit Feather Huzzah ESP8266  + Support Particle, Adafruit OLED SH1107, Sparkfun BME280, câble Qwiic
// Logiciel : Arduino
 
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#include "SparkFunBME280.h"
 
#define BUTTON_A 0
#define BUTTON_B 16
#define BUTTON_C 2
 
// Constructeurs
Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire);
BME280 bme_280; // L'adresse du circuit BME280 est 0x77 par défaut
 
void setup()
{
  // Bus I2C
  Wire.begin();              // Initialisation
  Wire.setClock(400000);     // Fast I2C
  display.begin(0x3C, true); // L'addresse de l'afficheur est 0x3C par défaut
 
  // Configuration de l'affichage
  display.setRotation(1); // Affichage horizontal
  display.setTextSize(1); // Horizontal
  display.setTextColor(SH110X_WHITE);
  display.clearDisplay(); // Pour ne pas afficher le logo Adafruit chargé
                          // automatiquement à la mise sous tension
  // Test de la communication avec le capteur
  if (bme_280.beginI2C() == false)
  {
    display.println("DEFAUT(s)");
    display.println("1. Le capteur BME280 ne repond pas ! ");
    display.println();
    display.print("BLOCAGE du PROGRAMME");
    display.display(); // Transfert du buffer sur l'écran
    while (1)
      delay(10); // Blocage du programme
  }
 
  // Connexion des boutons-poussoir
  pinMode(BUTTON_A, INPUT_PULLUP);
  pinMode(BUTTON_B, INPUT_PULLUP);
  pinMode(BUTTON_C, INPUT_PULLUP);
}
 
void loop()
{
  // Efface le buffer
  display.clearDisplay();
 
  // Test des boutons
  display.setCursor(0, 0);
 
  if (!digitalRead(BUTTON_A))
    display.print("[A]");
  if (!digitalRead(BUTTON_B))
    display.print("[B]");
  if (!digitalRead(BUTTON_C))
    display.print("[C]");
 
  // Titre
  display.setCursor(20, 0);
  display.println("Sparkfun BME280");
 
  // Humidité
  display.setCursor(0, 12);
  display.print("Humidite : ");
  display.print(bme_280.readFloatHumidity(), 0);
  display.println("%");
 
  // Pression en hPa
  display.setCursor(0, 22);
  display.print("Pression : ");
  display.print(bme_280.readFloatPressure() / 100, 0);
  display.println("hPa");
 
  // Température
  display.setCursor(0, 32);
  display.print("Temp : ");
  display.print(bme_280.readTempC(), 1);
  display.print("C");
 
  // Infos
  display.setCursor(5, 52);
  display.print("Appuyer sur A, B, C");
 
  // yield();
  display.display(); // Transfert du buffer sur l'écran
  delay(10);
}

Télécharger le projet PlatformIO pour VSCode.