#include "U8glib.h"
#include "Adafruit_BME280.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST);
Adafruit_BME280 bme;
#define DOWN_BUTTON 3
#define UP_BUTTON 2
#define SELECT_BUTTON 4
#define SEALEVELPRESSURE_HPA (1013.25)
#define echoPin 6 //connect echo pin of ultrasonic sensor
#define trigPin 7 //connect trigger pin of ultrasonic sensor
// next item - used in the menu screen to draw next item after the selected one
int p;
int m;
int current_screen =0;
long duration;
int distance;
float temperature = 21.0;
float humidity = 28.0;
float pressure = 0;
void pageEnvironmentalData(); // Page-1
void pageTemperature(); // Page-2
void pageHumidity(); // Page-3
void pagePressure();
void Main1();
void Main2();
void Main3();
void Main4();
void (*pages[])() = { pageEnvironmentalData, pageTemperature, pageHumidity, pagePressure};
//void (*pages[])() = { pageEnvironmentalData, pageTemperature, pageHumidity, pagePressure } ;
static bool down_state = false;
static bool up_state = false;
static bool select_state = false;
static bool selected = false;
void setup() {
bme.begin(0x76);
u8g.setFont(u8g_font_profont12);
u8g.setColorIndex(1); // set the color to white
pinMode(DOWN_BUTTON, INPUT_PULLUP);
pinMode(UP_BUTTON, INPUT_PULLUP);
pinMode(SELECT_BUTTON, INPUT_PULLUP);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, OUTPUT);
p = 0;
m = 0;
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
up_state = digitalRead(UP_BUTTON);
down_state = digitalRead(DOWN_BUTTON);
select_state = digitalRead(SELECT_BUTTON);
u8g.firstPage();
do
{
(*pages[m])();
} while (u8g.nextPage());
/*if ( up_state == LOW )
{
p = p - 1;
if ( p == -1)
{
p = 3;
}
}
else if (down_state == LOW)
{
p = p + 1;
if (p == 4)
{
p = 0;
}
}*/
if ( up_state == LOW )
{
m = m - 1;
if ( m == -1)
{
m = 3;
}
}
else if (down_state == LOW)
{
m = m + 1;
if (m == 4)
{
m = 0;
}
}
else if (select_state == LOW)
{
selected = true;
}
/*if (m == 0 && select_state == LOW)
{
if (select_state == LOW)
{
selected = false;
}
}*/
}
void Main1()
{
u8g.drawStr( 12, 12, "Environmental Data");
u8g.drawCircle( 5, 8, 2);
u8g.drawStr( 12, 24, "Battery Stats");
u8g.drawStr( 12, 36, "Scanning");
u8g.setPrintPos( 12, 46);
u8g.print(m);
u8g.setPrintPos( 12, 56);
u8g.print(select_state);
}
void Main2()
{
u8g.drawStr( 12, 12, "Environmental Data");
u8g.drawCircle( 5, 20, 2);
u8g.drawStr( 12, 24, "Battery Stats");
u8g.drawStr( 12, 36, "Scanning");
u8g.setPrintPos( 12, 46);
u8g.print(m);
}
void Main3()
{
u8g.drawStr( 12, 12, "Environmental Data");
u8g.drawCircle( 5, 32, 2);
u8g.drawStr( 12, 24, "Battery Stats");
u8g.drawStr( 12, 36, "Scanning");
u8g.setPrintPos( 12, 46);
u8g.print(m);
}
void pageEnvironmentalData() {
temperature = bme.readTemperature();
u8g.drawStr( 0, 12, "Temperat:");
u8g.setPrintPos( 60, 12);
u8g.print(temperature);
humidity = bme.readHumidity();
u8g.drawStr( 0, 24, "Humidity:");
u8g.setPrintPos( 60, 24);
u8g.print(humidity);
pressure = bme.readPressure();
u8g.drawStr( 0, 36, "Pressure:");
u8g.setPrintPos( 60, 36);
u8g.print(pressure);
u8g.setPrintPos( 12, 46);
u8g.print(distance);
}
void pageTemperature(){
temperature = bme.readTemperature();
u8g.drawStr( 0, 15, "Temperature:");
u8g.setPrintPos( 0, 31);
u8g.print(distance);
return 0;
}
void pageHumidity() {
humidity = bme.readHumidity();
u8g.drawStr( 0, 15, "Humidity:");
u8g.setPrintPos( 0, 31);
u8g.print(distance);
return 0;
}
void pagePressure(){
pressure = bme.readPressure();
u8g.drawStr( 0, 15, "Pressure:");
u8g.setPrintPos( 0, 31);
u8g.print(distance);
return 0;
}