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)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
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).

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