Atelier3 - 5 Octobre 2018 : Différence entre versions
De Wiki L.A.B
(Ajout des codes de test du SSD1306 et du BMP280) |
(→Ajout de l'écran) |
||
Ligne 6 : | Ligne 6 : | ||
L'adresse I2C par défaut est la bonne (<code>SSD1306_I2C_ADDRESS</code>, 0x3C). | L'adresse I2C par défaut est la bonne (<code>SSD1306_I2C_ADDRESS</code>, 0x3C). | ||
− | + | [[Fichier:STM32-BMP280-OLED.PNG]]◙ | |
Le code suivant permet de s'assurer que l'écran a bien été branché, il doit afficher un « TEST ! » en haut à gauche et un rectangle doit faire le tour de l'écran : | Le code suivant permet de s'assurer que l'écran a bien été branché, il doit afficher un « TEST ! » en haut à gauche et un rectangle doit faire le tour de l'écran : |
Version du 11 octobre 2018 à 15:39
Résumé
Ajout de l'écran
L'écran est un SSD1306 (128x32), avec lequel nous communiquons en I2C.
L'adresse I2C par défaut est la bonne (SSD1306_I2C_ADDRESS
, 0x3C).
Le code suivant permet de s'assurer que l'écran a bien été branché, il doit afficher un « TEST ! » en haut à gauche et un rectangle doit faire le tour de l'écran :
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, SSD1306_I2C_ADDRESS);
display.setTextSize(1);
display.setTextColor(WHITE);
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
delay(2000);
display.clearDisplay();
display.setCursor(4,3);
display.println("TEST !");
display.drawRect(1, 1, 126,31, WHITE);
display.display();
}
Ajout du capteur
Le capteur est un BMP280 avec lequel nous communiquons en I2C.
L'adresse de celui dont dispose le LAB est 0x76 alors que BMP280_ADDRESS
vaut 0x77.
TODO procédure de modification de Adafruit_BMP280.h
TODO schéma de câblage
Le code suivant permet de s'assurer qu'il est possible de lire des valeurs depuis le capteur et les restitue sur l'écran et en serial :
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280_chinese.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
Adafruit_BMP280 bmp;
#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
display.begin(SSD1306_SWITCHCAPVCC, SSD1306_I2C_ADDRESS);
display.setTextSize(1);
display.setTextColor(WHITE);
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
String pressure = String(bmp.readPressure()/100);
String temp = String(bmp.readTemperature());
String alt = String(bmp.readAltitude(1017));
display.clearDisplay();
display.setCursor(4, 3);
display.println("Pressure: " + pressure + " Mb");
display.setCursor(4, 12);
display.println("Temperature: " + temp + " C");
display.setCursor(4, 21);
display.println("Altitude: " + alt + " m");
display.drawRect(1, 1, 126,31, WHITE);
Serial.println("Pressure: " + pressure + " Mb");
Serial.println("Temperature: " + temp + " C");
Serial.println("Altitude: " + alt + " m");
Serial.println();
display.display();
delay(200);
}