#include "U8glib.h"
#include <Servo.h>
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
const uint8_t rook_bitmap[] U8G_PROGMEM = {
// imagem aqui linha abaixo
// 'garrafa_1', 40x44px
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0xff, 0xc0, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x03, 0xff,
0xe0, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x20,
0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00,
0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00,
0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02,
0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff,
0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0,
0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00,
0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00,
0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xa0, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02,
0x00, 0x60, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int slider = A0;
int bot1=2;
int bot2=3;
int led= 12;
int valorslider=0;
float percentagem=0;
Servo valvula;
int sp_valvula=90;
int p=0;
int a=0;
void menu1(); // Page-1
void menu2(); // Page-2
void menu3(); // Page-3
void pageInfo(); // Page-4
void menutest(); // menu de teste
void (*menus[])() = { menu1, menu2, menu3, menutest } ;
int lastState = HIGH;
int lastState1 = HIGH;
int sensor1 =4;
int sensor2 =5;
int i=0;
void setup() {
pinMode(bot1, INPUT_PULLUP);
pinMode(bot2, INPUT_PULLUP);
pinMode(led, OUTPUT);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
// servo_motor ->>> abertura da valvula
valvula.attach(6);
// escolha fonte do OLED
u8g.setFont(u8g_font_tpssb);
u8g.setColorIndex(1);
}
void menu1() { // p=0
// indicador enchimento cliente 1
if (digitalRead(bot1)==LOW) {
sp_valvula=45;
valvula.write(sp_valvula); }
valorslider=analogRead(slider);
valorslider=map(valorslider,0,1023, 0, 100);
percentagem=valorslider;
u8g.drawFrame(0, 10, 128, 20);
u8g.drawBox(10, 15, valorslider, 10);
u8g.setPrintPos(30, 55);
u8g.print(valorslider);
u8g.drawStr(12, 40, "Valor enchimento");
u8g.drawStr(40, 55, "% - Cliente 1");
return 0;
}
void menu2() { // p=1
u8g.drawStr( 40, 10, "MENU 2");
u8g.drawBitmapP( 40, 12, 5, 44, rook_bitmap); // 5 = 40/8 bytes
return 0;
}
void menu3() { // p=2
u8g.drawStr( 0, 15, "MENU 3");
u8g.setPrintPos(45, 50);
u8g.print(a);
return 0;
}
void menutest () {//p=3
u8g.drawStr( 40, 15, "BEM VINDO");
u8g.drawStr( 40, 30, "cliente 1");
delay(100);
i=i+1;
if (i>=20) {
a=1;
}
return a;
}
/*
do {
// indicador enchimento
valorslider=analogRead(slider);
valorslider=map(valorslider,0,1023, 0, 100);
percentagem=valorslider;
u8g.drawStr(12, 40, "Valor enchimento");
u8g.drawStr(65, 55, "%");
u8g.drawFrame(0, 10, 128, 20);
u8g.drawBox(10, 15, valorslider, 10);
u8g.setPrintPos(40, 55);
u8g.print(valorslider);
*/
void loop() {
int value_b1 = digitalRead(bot2); // menu seguinte VERMELHO
int value_b2 = digitalRead(bot1); // menu anterior VERDE
if (lastState != value_b1 && p<2) {
lastState = value_b1;
if (value_b1 == HIGH) {
p=p+1; }
}
if (lastState != value_b1 && p>=2) {
lastState = value_b1;
if (value_b1 == HIGH) {
p=0; }
}
if (lastState1 != value_b2 && p>0) {
lastState1 = value_b2;
if (value_b2 == HIGH) {
p=p-1; }
}
if (lastState1 != value_b2 && p==0) {
lastState1 = value_b2;
if (value_b2 == HIGH) {
p=2; }
}
if (digitalRead(sensor1)==HIGH && digitalRead(sensor2)==HIGH && a==0) {
p=3; }
else if (digitalRead(sensor1)==LOW || digitalRead(sensor2)==LOW && a==2 ) {
a=0;
}
if (a == 1) {
p=2;
a=2;
i=0; }
// COISAS A APARECER NO ECRA
u8g.firstPage();
do {
(*menus[p])();
} while( u8g.nextPage() );
}
//acender LED
/* if (digitalRead(bot1)==LOW || digitalRead(bot2)==LOW) {
digitalWrite(led, HIGH);
}
else { digitalWrite(led, LOW);
} */