Atelier3 - 5 Octobre 2018 : Différence entre versions

De Wiki L.A.B
Aller à : navigation, rechercher
(Ajout de l'écran)
(Ajout du capteur)
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 47 : Ligne 47 :
 
L'adresse de celui dont dispose le LAB est 0x76 [https://github.com/adafruit/Adafruit_BMP280_Library/blob/master/Adafruit_BMP280.h#L37 alors que <code>BMP280_ADDRESS</code> vaut 0x77].  
 
L'adresse de celui dont dispose le LAB est 0x76 [https://github.com/adafruit/Adafruit_BMP280_Library/blob/master/Adafruit_BMP280.h#L37 alors que <code>BMP280_ADDRESS</code> vaut 0x77].  
  
'''TODO procédure de modification de <code>Adafruit_BMP280.h</code>'''
+
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"
  
'''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 :
 
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 :
Ligne 58 : Ligne 57 :
 
#include <Adafruit_SSD1306.h>
 
#include <Adafruit_SSD1306.h>
 
#include <Adafruit_Sensor.h>
 
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280_chinese.h>
+
#include <Adafruit_BMP280_1.h>
  
 
#define OLED_RESET 4
 
#define OLED_RESET 4

Version actuelle en date du 11 octobre 2018 à 15:45

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