Atelier3 - 5 Octobre 2018
De Wiki L.A.B
Révision de 5 octobre 2018 à 15:23 par Thomas Chauchefoin (discussion | contributions) (Ajout des codes de test du SSD1306 et du BMP280)
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).
TODO schéma de câblage 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 :
#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);
}