Atelier3 - 5 Octobre 2018

De Wiki L.A.B
Aller à : navigation, rechercher

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).

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 :

#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.

Il suffit donc de modifier cette valeur dans le fichier "Adafruit_BMP280.h" de la librairie "Adafruit_BMP280_Library" placée dans le répertoire " Documents/Arduino/libraries" 0X77 PAR 0X76 puis d'enregistrer le fichier sous "Adafruit_BMP280_1.h"


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