Atelier3 - 5 Octobre 2018 : Différence entre versions
(→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]. | ||
− | + | 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 : | 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 < | + | #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).
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);
}