Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
BMP280
El BMP280 és un termòmetre i baròmetre digital. Permet obtenir lectures de temperatura i de presió atmosfèrica. Donat que la pressió canvia amb l'altitud, també podem obtenir estimació de altitud sobre el nivell del mar.
Tensió d'alimentació: 3.3V
Medició de Presió barométrica
Rang: de 300 hPa a 1100 hPa (equivalent a una altitud de -500 m a 9000 m sobre el nivell del mar)
Precisió relativa: ± 0,12 hPa, equivalent a ± 1 m
Precisió absoluta: ± 1,0 hPa
Resolució: 0,16 Pa
Medició de temperatura
Rang: de -40 ºC a 85 ºC
Precisió: ± 1.0 ºC
Resolució: 0.01ºC
Medició d'humitat (?):
Precisió: ± 3
El nostre admet tant connexió per I2C com per SPI (els models de 4 pins només admeten I2C).
Nosaltres l'hem comprat aquí. Ens ha costat 3,59 #.
Esquema de connexions
Utilitzarem el protocol de comunicació I2C (pins SCL i SCA del sensor).
Pautes de programació
Les llibreries
Per treballar amb l’OLED cal instal·lar dues llibreries des del gestor de llibreries de l'IDE (Programa / Incluir libreria / Administrar Bibliotecas): Adafruit BME280 i Adafruit Unified Sensor.
A més, per treballar amb I2C cal inserir als programes la llibreria Wire, inclosa a l'IDE Arduino.
L'adreça I2C
Sembla que l'adreça I2C del sensor és 0x76. Recordeu que podem comprobar-la executant l’sketch i2c_scanner.
// llibreries:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define PresioMar (1013.25) // presió atmosfèrica mitjana a nivell del mar: 1.013,25 HPa a latitud 45º. Per obtenir major precissió, buscar la de la nostra latitud.
// definició del sensor:
Adafruit_BME280 bme;
void setup ( )
{
Serial.begin (115200); // inicialització de comunicació sèrie
if (! bme.begin (0x76)) // inicialització del sensor. 0x76 és l'adreça I2C (caldria comprobar-ho)
{ Serial.println ("No es troba el sensor"); while (1); }
}
void loop ( )
{
MostraValors ( ); // funció, que cal crear, per mostrar els valors mesurats pel sensor
delay (1000);
}
bme.readTemperature (); - llegeix la temperatura (en graus Celsius)
bme.readHumidity (); - llegeix la humitat absoluta
bme.readPressure (); - llegeix la presió en hPa (hectoPascal = milibar)
bme.readAltitude (PresioMar); - Estima l'altitud en metres en funció de la presión al nivell del mar
Podem comprobar online la relació entre la presió mesurada pel sensor i l'altitud calculada pel programa