#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
// ' Box', 128x64px
const unsigned char bitmap__Box [] PROGMEM = {
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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#define NEXT_BUTTON 6
#define OK_BUTTON 5
#define POT A0
#define led1 8
int Tact = 0;
int Tdes = 0;
int f = 0;
int button_NEXT_clicked = 0;
int button_OK_clicked = 0;
int item_next = 0;
int item_select = 0;
int item_select_1 = 0;
int item_select_2 = 0;
int item_select_3 = 0;
int menu_numbers = 2;
int menu_selector = 0;
int menu_automatico = 0;
int menu_manual = 0;
int menu_detener_automatico = 0;
int menu_detener_manual = 0;
double valor_potenciometro = 0;
int valor_rpm = 0;
char valor_rpm_char[4];
int valor_automatico = 500;
int valor_contador = 0;
char menu_items_0[2] [20] = {
{"PROBADOR DE BOBINAS"},
{"SELECCIONE MODO:"}
};
const int NUM_ITEMS = 2;
char menu_items_1[NUM_ITEMS] [20] = {
{"Automatico"},
{"Manual"}
};
const int NUM_ITEMS_1 = 2;
char menu_items_2[NUM_ITEMS_1] [20] = {
{"Comenzar"},
{"Atras"}
};
char Detener = "Detener";
void setup(void) {
u8g.setFont(u8g_font_unifont);
u8g.setColorIndex(1);
pinMode(NEXT_BUTTON, INPUT_PULLUP);
pinMode(OK_BUTTON, INPUT_PULLUP);
pinMode(led1, OUTPUT);
}
void loop(void) {
if (digitalRead(OK_BUTTON) == HIGH && button_OK_clicked == 1) { // unclick
button_OK_clicked = 0;
}
if(digitalRead(NEXT_BUTTON) == LOW && menu_selector == 0 && button_NEXT_clicked == 0){
button_NEXT_clicked = 1;
item_select = item_select - 1;
if(item_select < 0){
item_select = NUM_ITEMS - 1;
}
}
if(digitalRead(NEXT_BUTTON) == LOW && menu_selector == 11 && button_NEXT_clicked == 0){
button_NEXT_clicked = 1;
item_select_1 = item_select_1 - 1;
if(item_select_1 < 0){
item_select_1 = NUM_ITEMS_1 - 1;
}
}
if(digitalRead(NEXT_BUTTON) == LOW && menu_selector == 12 && button_NEXT_clicked == 0){
button_NEXT_clicked = 1;
item_select_2 = item_select_2 - 1;
if(item_select_2 < 0){
item_select_2 = NUM_ITEMS_1 - 1;
}
}
if ((digitalRead(NEXT_BUTTON) == HIGH) && (button_NEXT_clicked == 1)) { // unclick
button_NEXT_clicked = 0;
}
item_next = item_select + 1;
if(item_next >= NUM_ITEMS_1){item_next = 0;}
//al menu automatico
if(digitalRead(OK_BUTTON) == LOW && item_select == 0 && button_OK_clicked == 0){
button_OK_clicked = 1;
menu_selector = 11;
item_select = 10;
menu_automatico = menu_automatico + 1;
}
//al menu manual
if(digitalRead(OK_BUTTON) == LOW && item_select == 1 && button_OK_clicked == 0){
button_OK_clicked = 1;
menu_selector = 12;
item_select = 10;
menu_manual = menu_manual + 1;
}
//al menu comenzar automatico
if(digitalRead(OK_BUTTON) == LOW && item_select_1 == 0 && menu_automatico >= 1 && button_OK_clicked == 0){
button_OK_clicked = 1;
item_select_1 = 10;
menu_selector = 13;
}
//al menu comenzar manual
if(digitalRead(OK_BUTTON) == LOW && item_select_2 == 0 && menu_manual >= 1 && button_OK_clicked == 0){
button_OK_clicked = 1;
item_select_2 = 10;
menu_selector = 14;
}
//al presionar detener automatico
if(digitalRead(OK_BUTTON) == LOW && menu_detener_automatico >= 3 && button_OK_clicked == 0){
button_OK_clicked = 1;
menu_selector = 11;
menu_automatico = 3;
menu_detener_automatico = 0;
item_select_1 = 0;
}
//al presionar detener manual
if(digitalRead(OK_BUTTON) == LOW && menu_detener_manual >= 3 && button_OK_clicked == 0){
button_OK_clicked = 1;
menu_selector = 12;
menu_manual = 3;
menu_detener_manual = 0;
item_select_2 = 0;
}
if(digitalRead(OK_BUTTON) == LOW && item_select_1 == 1 && button_OK_clicked == 0){
button_OK_clicked = 1;
menu_automatico = 0;
menu_manual = 0;
menu_selector = 0;
item_select = 0;
item_select_1 = 0;
}
if(digitalRead(OK_BUTTON) == LOW && item_select_2 == 1 && button_OK_clicked == 0){
button_OK_clicked = 1;
menu_automatico = 0;
menu_manual = 0;
menu_selector = 0;
item_select = 0;
item_select_2 = 0;
}
u8g.firstPage();
do {
if (menu_selector == 0){
u8g.drawBitmapP(0, 0, 128/8, 64, bitmap__Box);
u8g.setFont(u8g_font_6x13);
u8g.drawStr(10, 12, menu_items_0[0]);
/*dtostrf(percent,4,0,pct);
u8g.setPrintPos(10,12);
u8g.print(pct);
*/
u8g.setFont(u8g_font_6x13);
u8g.drawStr(21, 28, menu_items_0[1]);
switch (item_select)
{ case 0:
// Modo seleccionado:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(36, 44, menu_items_1[0]);
// Modo siguiente:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(47, 60, menu_items_1[1]);
break;
case 1:
// Modo seleccionado:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(47, 44, menu_items_1[1]);
// Modo siguiente:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(36, 60, menu_items_1[0]);
break;
}
}
if(menu_selector == 11){
u8g.drawBitmapP(0, 0, 128/8, 64, bitmap__Box);
switch (item_select_1)
{ case 0:
// Modo seleccionado:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(41, 44, menu_items_2[0]);
// Modo siguiente:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(49, 59, menu_items_2[1]);
break;
case 1:
// Modo seleccionado:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(49, 44, menu_items_2[1]);
// Modo siguiente:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(41, 60, menu_items_2[0]);
break;
}
}
if(menu_selector == 12){
u8g.drawBitmapP(0, 0, 128/8, 64, bitmap__Box);
switch (item_select_2)
{ case 0:
// Modo seleccionado:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(41, 44, menu_items_2[0]);
// Modo siguiente:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(49, 59, menu_items_2[1]);
break;
case 1:
// Modo seleccionado:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(49, 44, menu_items_2[1]);
// Modo siguiente:
u8g.setFont(u8g_font_6x13);
u8g.drawStr(41, 59, menu_items_2[0]);
break;
}
}
if(menu_selector == 13){
u8g.drawBitmapP(0, 0, 128/8, 64, bitmap__Box);
u8g.setFont(u8g_font_9x18);
u8g.drawStr(96, 29, "RPM");
u8g.setFont(u8g_font_6x13);
u8g.drawStr(36, 44, "Detener");
menu_detener_automatico = 3;
if(valor_contador <= 100){
valor_rpm = valor_automatico;
Tact = 5.182 - (valor_rpm/2750);
Tdes = 51.364 - (valor_rpm/150);
digitalWrite(led1,HIGH);
delay(Tact);
digitalWrite(led1, LOW);
delay(Tdes);
dtostrf(valor_rpm,4,0,valor_rpm_char);
u8g.setFont(u8g_font_10x20);
u8g.drawStr(28, 28, valor_rpm_char);
valor_contador = valor_contador + 1;
}
if(valor_contador >= 100){
valor_contador = 0;
valor_automatico = valor_automatico + 500;
}
if(valor_automatico == 6500){
menu_selector = 11;
menu_automatico = 3;
menu_detener_automatico = 0;
item_select_1 = 0;
valor_automatico = 500;
}
}
if(menu_selector == 14){
u8g.drawBitmapP(0, 0, 128/8, 64, bitmap__Box);
valor_potenciometro = analogRead(POT);
valor_rpm = (valor_potenciometro*5500/1023)+500;
valor_rpm = valor_rpm/100;
valor_rpm = valor_rpm*100;
Tact = 5.182 - (valor_rpm/2750);
Tdes = 21.364 - (valor_rpm/366.67);
digitalWrite(led1,HIGH);
delay(Tact);
digitalWrite(led1, LOW);
delay(Tdes);
dtostrf(valor_rpm,4,0,valor_rpm_char);
u8g.setFont(u8g_font_10x20);
u8g.drawStr(28, 28, valor_rpm_char);
u8g.setFont(u8g_font_9x18);
u8g.drawStr(96, 29, "RPM");
u8g.setFont(u8g_font_6x13);
u8g.drawStr(36, 44, "Detener");
menu_detener_manual = 3;
}
} while( u8g.nextPage() );
}