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.
// 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); }