switch to u8g2 over u8x8
This commit is contained in:
parent
e26b49c58f
commit
7e8227861b
1 changed files with 61 additions and 56 deletions
|
@ -4,7 +4,7 @@
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include "wifi_login.h"
|
#include "wifi_login.h"
|
||||||
|
|
||||||
#include <U8x8lib.h>
|
#include <U8g2lib.h>
|
||||||
|
|
||||||
#ifdef U8X8_HAVE_HW_SPI
|
#ifdef U8X8_HAVE_HW_SPI
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
|
@ -14,19 +14,22 @@
|
||||||
|
|
||||||
#include <Adafruit_SGP30.h>
|
#include <Adafruit_SGP30.h>
|
||||||
|
|
||||||
U8X8_SSD1327_EA_W128128_4W_HW_SPI u8x8(/* cs=*/ 17, /* dc=*/ 3, /* reset=*/ 16);
|
U8G2_SSD1327_WS_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 17, /* dc=*/ 3, /* reset=*/ 16);
|
||||||
|
|
||||||
BME280I2C bme; // Default : forced mode, standby time = 1000 ms
|
BME280I2C bme; // Default : forced mode, standby time = 1000 ms
|
||||||
// Oversampling = pressure ×1, temperature ×1, humidity ×1, filter off,
|
// Oversampling = pressure ×1, temperature ×1, humidity ×1, filter off,
|
||||||
|
|
||||||
Adafruit_SGP30 sgp;
|
Adafruit_SGP30 sgp;
|
||||||
|
|
||||||
// setup the terminal (U8X8LOG) and connect to u8g2 for automatic refresh of the display
|
// setup the terminal (U8G2LOG) and connect to u8g2 for automatic refresh of the display
|
||||||
// The size (width * height) depends on the display
|
// The size (width * height) depends on the display
|
||||||
|
// u8g2_font_t0_15_mf: BBX Width 8, Height 15
|
||||||
|
// 128/8 = 16
|
||||||
#define U8LOG_WIDTH 16
|
#define U8LOG_WIDTH 16
|
||||||
#define U8LOG_HEIGHT 12
|
// 128/15 = 8
|
||||||
|
#define U8LOG_HEIGHT 8
|
||||||
uint8_t u8log_buffer[U8LOG_WIDTH*U8LOG_HEIGHT];
|
uint8_t u8log_buffer[U8LOG_WIDTH*U8LOG_HEIGHT];
|
||||||
U8X8LOG u8x8log;
|
U8G2LOG u8g2log;
|
||||||
|
|
||||||
/* return absolute humidity [mg/m^3] with approximation formula
|
/* return absolute humidity [mg/m^3] with approximation formula
|
||||||
* @param temperature [°C]
|
* @param temperature [°C]
|
||||||
|
@ -41,68 +44,70 @@ uint32_t getAbsoluteHumidity(float temperature, float humidity) {
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
|
||||||
//Init Display
|
//Init Display
|
||||||
u8x8.begin();
|
u8g2.begin();
|
||||||
u8x8.setFont(u8x8_font_chroma48medium8_r);
|
u8g2.setFont(u8g2_font_t0_15_mf);
|
||||||
|
u8g2.enableUTF8Print();
|
||||||
u8x8log.begin(u8x8, U8LOG_WIDTH, U8LOG_HEIGHT, u8log_buffer);
|
|
||||||
u8x8log.setRedrawMode(0); // 0: Update screen with newline, 1: Update screen for every char
|
u8g2log.begin(U8LOG_WIDTH, U8LOG_HEIGHT, u8log_buffer);
|
||||||
|
u8g2log.setLineHeightOffset(0); // set extra space between lines in pixel, this can be negative
|
||||||
|
u8g2log.setRedrawMode(0); // 0: Update screen with newline, 1: Update screen for every char
|
||||||
|
|
||||||
|
|
||||||
//Init wifi connection
|
//Init wifi connection
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
|
|
||||||
u8x8log.print("Connecting to SSID:\n");
|
u8g2log.print("Connecting to SSID:\n");
|
||||||
u8x8log.print(ssid);
|
u8g2log.print(ssid);
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
delay(500);
|
delay(500);
|
||||||
u8x8log.print(".");
|
u8g2log.print(".");
|
||||||
}
|
}
|
||||||
|
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
u8x8log.print("WiFi connected\n");
|
u8g2log.print("WiFi connected\n");
|
||||||
u8x8log.print("IP address:\n");
|
u8g2log.print("IP address:\n");
|
||||||
u8x8log.println(WiFi.localIP());
|
u8g2log.println(WiFi.localIP());
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
|
|
||||||
//Init BME280 sensor
|
//Init BME280 sensor
|
||||||
Wire.begin();
|
Wire.begin();
|
||||||
|
|
||||||
while(!bme.begin())
|
while(!bme.begin())
|
||||||
{
|
{
|
||||||
u8x8log.print("Could not find BME280 sensor!\n");
|
u8g2log.print("Could not find BME280 sensor!\n");
|
||||||
delay(1000);
|
delay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(bme.chipModel())
|
switch(bme.chipModel())
|
||||||
{
|
{
|
||||||
case BME280::ChipModel_BME280:
|
case BME280::ChipModel_BME280:
|
||||||
u8x8log.print("Found BME280 sensor! Success.\n");
|
u8g2log.print("Found BME280 sensor! Success.\n");
|
||||||
break;
|
break;
|
||||||
case BME280::ChipModel_BMP280:
|
case BME280::ChipModel_BMP280:
|
||||||
u8x8log.print("Found BMP280 sensor! No Humidity available.\n");
|
u8g2log.print("Found BMP280 sensor! No Humidity available.\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
u8x8log.print("Found UNKNOWN sensor! Error!\n");
|
u8g2log.print("Found UNKNOWN sensor! Error!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Init SGP30 sensor
|
//Init SGP30 sensor
|
||||||
while(!sgp.begin())
|
while(!sgp.begin())
|
||||||
{
|
{
|
||||||
u8x8log.print("Could not find SGP30 sensor!\n");
|
u8g2log.print("Could not find SGP30 sensor!\n");
|
||||||
delay(1000);
|
delay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8x8log.print("Found SGP30 serial #");
|
u8g2log.print("Found SGP30 serial #");
|
||||||
u8x8log.print(sgp.serialnumber[0], HEX);
|
u8g2log.print(sgp.serialnumber[0], HEX);
|
||||||
u8x8log.print(sgp.serialnumber[1], HEX);
|
u8g2log.print(sgp.serialnumber[1], HEX);
|
||||||
u8x8log.print(sgp.serialnumber[2], HEX);
|
u8g2log.print(sgp.serialnumber[2], HEX);
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
|
|
||||||
// If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
|
// If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
|
||||||
//sgp.setIAQBaseline(0x8E68, 0x8F41); // Will vary for each sensor!
|
//sgp.setIAQBaseline(0x8E68, 0x8F41); // Will vary for each sensor!
|
||||||
|
@ -114,7 +119,7 @@ int counter = 0;
|
||||||
void loop() {
|
void loop() {
|
||||||
|
|
||||||
//Clear screen
|
//Clear screen
|
||||||
u8x8log.print("\f");
|
u8g2log.print("\f");
|
||||||
|
|
||||||
//Read Temperature, humidity and pressure
|
//Read Temperature, humidity and pressure
|
||||||
float temp(NAN), hum(NAN), pres(NAN);
|
float temp(NAN), hum(NAN), pres(NAN);
|
||||||
|
@ -127,26 +132,26 @@ void loop() {
|
||||||
sgp.setHumidity(getAbsoluteHumidity(temp, hum));
|
sgp.setHumidity(getAbsoluteHumidity(temp, hum));
|
||||||
|
|
||||||
if (! sgp.IAQmeasure()) {
|
if (! sgp.IAQmeasure()) {
|
||||||
u8x8log.print("Air Quality Measurement failed\n");
|
u8g2log.print("Air Quality Measurement failed\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8x8log.print("Temp: ");
|
u8g2log.print("Temp: ");
|
||||||
u8x8log.print(temp);
|
u8g2log.print(temp);
|
||||||
u8x8log.print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F'));
|
u8g2log.print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F'));
|
||||||
u8x8log.print("\nHumidity: ");
|
u8g2log.print("\nHumidity: ");
|
||||||
u8x8log.print(hum);
|
u8g2log.print(hum);
|
||||||
u8x8log.print("% RH");
|
u8g2log.print("% RH");
|
||||||
u8x8log.print("\nPressure: ");
|
u8g2log.print("\nPressure: ");
|
||||||
u8x8log.print(pres);
|
u8g2log.print(pres);
|
||||||
u8x8log.print("Pa\n");
|
u8g2log.print("Pa\n");
|
||||||
|
|
||||||
u8x8log.print("TVOC ");
|
u8g2log.print("TVOC ");
|
||||||
u8x8log.print(sgp.TVOC);
|
u8g2log.print(sgp.TVOC);
|
||||||
u8x8log.print(" ppb\n");
|
u8g2log.print(" ppb\n");
|
||||||
u8x8log.print("eCO2 ");
|
u8g2log.print("eCO2 ");
|
||||||
u8x8log.print(sgp.eCO2);
|
u8g2log.print(sgp.eCO2);
|
||||||
u8x8log.print(" ppm\n");
|
u8g2log.print(" ppm\n");
|
||||||
|
|
||||||
//Get Baseline readings every 30s
|
//Get Baseline readings every 30s
|
||||||
counter++;
|
counter++;
|
||||||
|
@ -155,14 +160,14 @@ void loop() {
|
||||||
|
|
||||||
uint16_t TVOC_base, eCO2_base;
|
uint16_t TVOC_base, eCO2_base;
|
||||||
if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
|
if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
|
||||||
u8x8log.print("Failed to get baseline readings\n");
|
u8g2log.print("Failed to get baseline readings\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
u8x8log.print("Baseline values: eCO2: 0x");
|
u8g2log.print("Baseline values: eCO2: 0x");
|
||||||
u8x8log.print(eCO2_base, HEX);
|
u8g2log.print(eCO2_base, HEX);
|
||||||
u8x8log.print(" & TVOC: 0x");
|
u8g2log.print(" & TVOC: 0x");
|
||||||
u8x8log.print(TVOC_base, HEX);
|
u8g2log.print(TVOC_base, HEX);
|
||||||
u8x8log.print("\n");
|
u8g2log.print("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
delay(1000);
|
delay(1000);
|
||||||
|
|
Loading…
Reference in a new issue