// Inclusão da biblioteca do módulo teclado
#include <neotimer.h>
#include <Keypad.h>
#include <Wire.h> // requried to run I2C SH1106
#include <SPI.h> // requried to run I2C SH1106
#include <Adafruit_GFX.h> // https://github.com/adafruit/Adafruit-GFX-Library
//#include <Adafruit_SH1106.h> // https://github.com/wonho-maker/Adafruit_SH1106
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 20 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//********************************************
#include <Fonts/FreeSansBold12pt7b.h> // Numeros
#include <Fonts/FreeSerifBold9pt7b.h> // Texto
#include <Fonts/FreeSerifBold12pt7b.h> //Texto "Porta Aberta"
Neotimer playStart;
Neotimer piscaTela;
Neotimer alertaBuzzer;
Neotimer alertaBuzerNo;
Neotimer tempoSemUso; //DELETAR *************************
//USADO para controlar o tempo e contagem
unsigned long tempoAnterior = 0;
const long intervalo = 1000; //Intervalor para contagem do conometro (1segundo)
/************************ DEFINIÇÃO Do ARREY para armazenar TEMPO ******************************* */
char digitado [4] = {0,0,0,0};
char digitadoBiz [4];
int x = 0;
char segundos [2] = {0,0};
char minutos [2] = {0,0};
int ms;
int ss;
int conometro = 0;
int pausa = 0;
int tocar = 0;
int inverter = 0;
int pisca = 0;
int fimTempo = 0;
bool estadoInicial = 0;
/************************ CONFIGURAÇÕES TECLADO ******************************* */
const byte LINHAS = 4; // quantidade de linhas do teclado
const byte COLUNAS = 4; // quantidade de colunas do teclado
char digitos[LINHAS][COLUNAS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}}; // todos os caracteres do teclado
byte pinosLinha[LINHAS] = { 10, 9, 8, 7 }; // pinos de conexão das linhas no arduino
byte pinosColuna[COLUNAS] = { 6, 5, 4, 3 }; // pinos de conexão das colunas no arduino
Keypad keypad = Keypad( makeKeymap(digitos), pinosLinha, pinosColuna, LINHAS, COLUNAS ); // objeto de leitura das teclas com os parâmetros lidos
/************************ VARIÁVEIS AUXILIARES ******************************* */
//USADO para controlar o tempo e contagem
char digito;
bool botaoPorta;
int portaFechada = 0;
const int ledVermelho = A1; //LED POWER
const int pinLuz = A2; //Luz da Porta
const int pinMotor = A3; // Rele do Motod do Prato
const int buzzer = A0; // Som das teclas e do alarme
int pinMagnetron = 12;
int pinBotao = 2;
int estadoLuz = LOW;
int estadoMotor = LOW;
int estadoMagnetron = LOW;
int tempoBuzz = 50;
int autoReset = 0;
int tpReset = 60;
int alertaPausa = 0;
int limpaLCD = 1;
char position [2];
int posicao=0;
int colunaX;
/**
* Made with Marlin Bitmap Converter
* https://marlinfw.org/tools/u8glib/converter.html
*
* This bitmap from the file 'FornoM128x64.bmp'
*/
const unsigned char PROGMEM sininho [] = { //48x48
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x07, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x18, 0x00,
0x0F, 0xF0, 0x00, 0x18, 0x38, 0x00, 0x3F, 0xFC, 0x00, 0x1C, 0x31, 0x00, 0x78, 0x3E,
0x00, 0x8C, 0x71, 0x80, 0xE0, 0x07, 0x01, 0x8E, 0x63, 0x81, 0xC0, 0x03, 0x81, 0xC6,
0x63, 0x03, 0x80, 0x01, 0x80, 0xC6, 0x63, 0x03, 0x80, 0x01, 0xC0, 0xC6, 0xE7, 0x03,
0x00, 0x00, 0xC0, 0xE7, 0xC6, 0x03, 0x00, 0x00, 0xE0, 0x63, 0xC6, 0x06, 0x00, 0x00,
0xC0, 0x63, 0xC6, 0x07, 0x00, 0x00, 0x60, 0x63, 0xC6, 0x06, 0x00, 0x00, 0xE0, 0x63,
0xC6, 0x07, 0x00, 0x00, 0x60, 0x63, 0xC6, 0x06, 0x00, 0x00, 0xE0, 0x63, 0xC6, 0x07,
0x00, 0x00, 0x60, 0x63, 0xC6, 0x06, 0x00, 0x00, 0xE0, 0x67, 0xE7, 0x07, 0x00, 0x00,
0x60, 0xE7, 0x63, 0x06, 0x00, 0x00, 0x60, 0xC6, 0x63, 0x87, 0x00, 0x00, 0xE1, 0xC6,
0x71, 0x86, 0x00, 0x00, 0x61, 0x8E, 0x31, 0x06, 0x00, 0x00, 0x60, 0x8C, 0x38, 0x0E,
0x00, 0x00, 0x70, 0x1C, 0x18, 0x0C, 0x00, 0x00, 0x30, 0x18, 0x00, 0x1C, 0x00, 0x00,
0x30, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x1C, 0x00,
0x00, 0x3F, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00,
0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x70,
0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char fornoM[] 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,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,
0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3C,0x3F,0xFF,0xF8,0xE0,
0x03,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3C,0x3F,0xFF,0xF8,0xE0,
0x03,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3C,0x3F,0xFF,0xF8,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0xFE,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0xFE,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0xFE,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x3E,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x00,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3F,0xFF,0xF8,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3F,0xFF,0xF8,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3F,0xFF,0xF8,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x3C,0x78,0x78,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x3C,0x00,0xFC,0x00,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFE,0x3C,0x03,0xFF,0x80,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x3C,0x0F,0xFF,0xC0,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x3C,0x1F,0x87,0xE0,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3E,0x01,0xF0,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0xF0,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0xF0,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x3C,0x3C,0x00,0xF0,0xE0,
0x03,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x3C,0x3C,0x00,0xF0,0xE0,
0x03,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3C,0x3E,0x03,0xF0,0xE0,
0x03,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3C,0x1F,0x87,0xE0,0xE0,
0x03,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3C,0x0F,0xFF,0xC0,0xE0,
0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x03,0xFF,0x00,0xE0,
0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x78,0x00,0xE0,
0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/***************************************************************************** */
// CONFIGURAÇÃO DE CARACTERES PARA NUMEROS GRANDES ********
byte d1[8] =
{
B00000,
B00000,
B00000,
B00000,
B00000,
B11111,
B11111,
B11111
};
byte d2[8] =
{
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
};
byte d3[8] =
{
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B00000,
B00000,
};
byte ponto[8] =
{
B00000,
B00000,
B00100,
B01110,
B11111,
B01110,
B00100,
B00000
};
void num_0(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.write(byte(3));
lcd.write(byte(3));
lcd.write(byte(3));
}
void num_1(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(3));
}
void num_2(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.write(byte(2));
lcd.print(" ");
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.write(byte(3));
lcd.write(byte(3));
lcd.write(byte(3));
}
void num_3(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.write(byte(3));
lcd.write(byte(3));
lcd.write(byte(3));
}
void num_4(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.print(" ");
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(2));
lcd.write(byte(1));
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(3));
}
void num_5(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(2));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.write(byte(3));
lcd.write(byte(3));
lcd.write(byte(3));
}
void num_6(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(2));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.write(byte(3));
lcd.write(byte(3));
lcd.write(byte(3));
}
void num_7(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(3));
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(3));
}
void num_8(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(2));
lcd.write(byte(1));
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.write(byte(3));
lcd.write(byte(3));
lcd.write(byte(3));
}
void num_9(){
lcd.setCursor(colunaX, 0); //Coluna, Linha
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(colunaX, 1); //Coluna, Linha
lcd.write(byte(2));
lcd.write(byte(1));
lcd.write(byte(2));
lcd.setCursor(colunaX, 2); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(colunaX, 3); //Coluna, Linha
lcd.print(" ");
lcd.write(byte(3));
}
void pontilhado(){
//Pontos de separação entre Minutos e Segundos
lcd.setCursor(8, 1); //Coluna, Linha
lcd.write(byte(4));
lcd.setCursor(8, 2); //Coluna, Linha
lcd.write(byte(4));
}
void fim(){
//**F
lcd.setCursor(6, 0);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.print(" ");
lcd.write(byte(3));
lcd.print(" ");
lcd.write(byte(1));
lcd.print(" ");
lcd.write(byte(1));
lcd.setCursor(6, 1);
lcd.write(byte(2));
lcd.write(byte(1));
lcd.print(" ");
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.write(byte(2));
lcd.write(byte(2));
lcd.setCursor(6, 2);
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.print(" ");
lcd.write(byte(2));
lcd.setCursor(6, 3);
lcd.write(byte(3));
lcd.print(" ");
lcd.write(byte(3));
lcd.print(" ");
lcd.write(byte(3));
lcd.print(" ");
lcd.write(byte(3));
}
void setup()
{
lcd.begin(20,4);
lcd.setBacklight(LOW);
lcd.createChar(1, d1);
lcd.createChar(2, d2);
lcd.createChar(3, d3);
lcd.createChar(4, ponto);
// ****** INICIA O LCD ******
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // needed for SH1106 display
display.clearDisplay(); // Limpa o Display OLED
display.display(); // Carrega as informações no Display OLED
//INPUT_PULLUP
pinMode(ledVermelho,OUTPUT);
pinMode(pinLuz,OUTPUT);
pinMode(pinMotor,OUTPUT);
pinMode(pinMagnetron,OUTPUT);
pinMode(buzzer,OUTPUT); // define os pinos de saída do arduino
pinMode(pinBotao, INPUT_PULLUP);
digitalWrite(ledVermelho, HIGH);
digitalWrite(pinMotor, LOW);
digitalWrite(pinLuz, LOW);
digitalWrite(pinMagnetron, LOW);
piscaTela.set(2000);
alertaBuzzer.set(15000);
alertaBuzerNo.set(400);
tempoSemUso.set(1000);
// Serial.begin(9600);
digitalWrite(buzzer, HIGH);
delay(50);
digitalWrite(buzzer, LOW);
delay(50);
digitalWrite(buzzer, HIGH);
delay(50);
digitalWrite(buzzer, LOW);
}
void loop()
{
if(estadoInicial == 0){
piscaLcd();
piscaLcd_Barra();
}
//MONITORA A ABERTURA DA PORTA ACENDENDO A LUZ CASO SEJA ABERTA.
botaoPorta = digitalRead(pinBotao);
if(botaoPorta == 0){
digitalWrite(pinLuz, HIGH);
portaFechada = 1;
estadoInicial = 1;
display.setTextSize(1); //Tamanho para Texto [1] para os Numeros [0]
display.setFont(&FreeSerifBold12pt7b);
display.setTextColor(WHITE);
display.clearDisplay();
display.setCursor(15,30); //Coluna, Linha
display.print(F("PORTA"));
display.setCursor(10,50); //Coluna, Linha
display.print(F("ABERTA"));
display.display();
//*****************************
if(limpaLCD <= 1){
lcd.clear();
lcd.display();
limpaLCD = 2;
}
lcd.setCursor(2,1); //Coluna, Linha
lcd.print(F("PREOCESSO PAUSADO"));
lcd.setCursor(2,2); //Coluna, Linha
lcd.print(F("PORTA ESTA ABERTA"));
//*****************************
}
if(botaoPorta == 1){
if(limpaLCD == 2){
limpaLCD = 0;
lcd.clear();
lcd.display();
}
if(portaFechada == 1){
digitalWrite(pinLuz, LOW);
if(digitado[0] == 0 ){
estadoInicial = 0;
pisca = 0;
}
if(digitado[0] != 0 ){
//--------------------------------
conometroOled();
conometroOled_BARRA();
//---------------------------------
}
portaFechada = 0;
}
//Reset Automatico, Limpa o que foi digitado apos um tempo caso o forno não seja iniciado a contagem.
if(digitado[0] != 0 ){
if(tempoSemUso.repeat()){
autoReset++;
}
if(autoReset == tpReset){
fimTempo = 1;
estadoInicial = 0;
autoReset = 0;
for (int i=0; i<4; i++) {
digitado[i] = 0;
x = 0;
}
}
}//************************************
}
//---- FAZ A LEITURA DO TECLADO
digito = keypad.getKey();
if (digito != 0){
portaFechada = 0;
digitalWrite(buzzer, HIGH);// acionamento do buzzer ao apertar qualquer tecla
delay(tempoBuzz);
digitalWrite(buzzer, LOW);
limpaLCD = 0;
display.clearDisplay(); //LIMPA O DISPLAY OLED
display.setTextColor(WHITE); // DEFINE A COR DO TEXTO no OLED
display.setTextSize(2); //Tamanho para Texto (1) para os Numeros (2)
display.setFont(&FreeSansBold12pt7b); //Fonte para Texto [1] para os Numeros [0]
display.setCursor(0,50); //Coluna, Linha
//-------- ARMAZENA OS DIGITOS PRESIONADO PELO TECLADO NO ARREY
if(digito != '*' && digito != '#' && digito != 'A' && digito != 'D'){
digitado[x] = digito;
x++;
estadoInicial = 1;
}
if (x == 4){ //RETORNA AO INICIO DO ARREY CASO SEJA DIGITADO MAIS DE 4 DIGITOS
x = 0;
}
//------ Caso seja digitado * Limpa o arrey "digitado"
if((digito == '*') && (digitado[0] != 0)){
for (int i=0; i<4; i++) {
digitado[i] = 0;
x = 0; //RETORNA AO INICIO DO ARREY "digitado" (usado pela função pra armazena os digitos do teclado)
estadoInicial = 0;
}
}
//------ SE FOI DIGITADO ALGUM TEMPO, INICIA O ESTADO DE LIGAÇAO DO FORNO E COMEÇA A CONTAGEM
if((digito == '#')&&(digitado[0] != 0)){
digitadoBiz[0] = digitado[0];
digitadoBiz[1] = digitado[1];
digitadoBiz[2] = digitado[2];
digitadoBiz[3] = digitado[3];
autoReset = 0;
contador();
contagemRegreciva ();
}
if((digito == 'D')&&(digitadoBiz[0] != 0)){
digitado[0] = digitadoBiz[0];
digitado[1] = digitadoBiz[1];
digitado[2] = digitadoBiz[2];
digitado[3] = digitadoBiz[3];
estadoInicial = 1;
}
//------ SE FOI DIGITADO Pipoca, Entra o tempo programado pra Pipoca
if(digito == 'A'){
digitado[0] = '3';
digitado[1] = '0';
digitado[2] = '6';
estadoInicial = 1;
}
// =================================
conometroOled ();
conometroOled_BARRA();
// =================================
}
} // FIM DO LOOP
// Organiza os dados digitados na ordem correta pra a conometragem do tempo
// e converte os valores dos caracteres do arrey para um valor inteiro nas variaveis "ms" e "ss"
// de forma que possamos usar o valor em uma contagem regreciva...
void contador(){
if(digitado[2] == 0){
segundos[0]= digitado[0];
segundos[1] = digitado[1];
ss = atoi(segundos);
conometro = ss;
}
if((digitado[3] == 0) && (digitado[2] != 0)){
minutos[0] = digitado[0];
ms = atoi(minutos);
segundos[0]= digitado[1];
segundos[1]= digitado[2];
ss = atoi(segundos);
conometro = (ms*60) + ss;
}
if(digitado[3] != 0){
minutos[0] = digitado[0];
minutos[1] = digitado[1];
ms = atoi(minutos);
segundos[0]= digitado[2];
segundos[1]= digitado[3];
ss = atoi(segundos);
conometro = (ms*60) + ss;
}
}
void contagemRegreciva (){
//***** INICIA O LIGAMENTO DO FORNO MICROONDAS
fimTempo = 0;
estadoLuz = HIGH;
estadoMotor = HIGH;
estadoMagnetron = HIGH;
digitalWrite(pinMotor, estadoMotor);
digitalWrite(pinLuz, estadoLuz);
digitalWrite(pinMagnetron, estadoMagnetron);
//*** ORGANIZA A POSICAO DOS VALORES MINUTOS E SEGUNDOS DE FORMA CORRETA NO OLED
while(conometro > -1){
unsigned long tempoAtual=millis();
if (tempoAtual-tempoAnterior>=intervalo){ //com o playStart.repeat não fez a contagem com perfeição (gera atrazos de 2seg por cada 1min)
tempoAnterior=tempoAtual;
autoReset++;
alertaPausa = !alertaPausa;
display.setTextColor(WHITE); // DEFINE A COR DO TEXTO no OLED
display.setTextSize(2);
display.setFont(&FreeSansBold12pt7b);
display.setCursor(3,50); //Coluna, Linha (NUMEROS)
display.clearDisplay();
if(pausa == 0){
alertaPausa = 0;
}
if(alertaPausa == 0){
display.drawRoundRect(0, 10, 125, 50, 8, WHITE);// Retangulo (Coluna 0 á 125 / linha 10 á 50) com curva de angulo 8 nas bordas
display.drawRoundRect(1, 11, 123, 48, 8, WHITE);// Retangulo (Coluna 0 á 125 / linha 10 á 50) com curva de angulo 8 nas bordas
display.drawRoundRect(2, 12, 121, 46, 8, WHITE);// Retangulo (Coluna 0 á 125 / linha 10 á 50) com curva de angulo 8 nas bordas
// display.fillRect(60, 10, 3, 15, WHITE); // Coluna(inicio), Linha(inicio), Comprimento, Largura, Cor
//display.fillRect(60, 53, 3, 7, WHITE); // Coluna(inicio), Linha(inicio), Comprimento, Largura, Cor
}
if(alertaPausa == 1 ){
display.drawRoundRect(0, 10, 125, 50, 8, BLACK);// Retangulo (Coluna 0 á 125 / linha 10 á 50) com curva de angulo 8 nas bordas
display.drawRoundRect(1, 11, 123, 48, 8, BLACK);// Retangulo (Coluna 0 á 125 / linha 10 á 50) com curva de angulo 8 nas bordas
display.drawRoundRect(2, 12, 121, 46, 8, BLACK);// Retangulo (Coluna 0 á 125 / linha 10 á 50) com curva de angulo 8 nas bordas
delay(100);
}
if(ms > 9){ // de 10 pra cima
display.print(ms);
display.print(F(":"));
//LCD 16*4 NUMEROS GRANDES ___________________
pontilhado();
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ms / 10; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ms % 10; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
if(ss > 9){ // Segundos Acima de 10
display.print(ss);
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss / 10; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss % 10; //Informa o valor Numerico Grande a Ser Exibido
numeral();
}
if((ss < 10) && (ss >= 0)){ // Segundos 0 a 9
display.print(F("0"));
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss; //Informa o valor Numerico Grande a Ser Exibido
numeral();
display.print(ss);
}
}
if((ms >= 0) && (ms < 10)){ // Minutos 0 ate 9
display.print(F("0"));
display.print(ms);
display.print(F(":"));
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ms; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
if(ss > 9){ // Segundos Acima de 10
display.print(ss);
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss / 10; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss % 10; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
}
if((ss < 10) && (ss >= 0)){ // Segundos 0 a 9
display.print(F("0"));
display.print(ss);
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
}
}
//----------------------------------
if(ms <= 0){
if(ss > 9) { // acima de 10
display.print(F("00:"));
display.print(ss);
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss / 10; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss % 10; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
}
if(ss < 10){ // menor que 10
display.print(F("00:0"));
display.print(ss);
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = ss; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
}
}
display.display();
// -- CONTROLA A CONTAGEM REGRECIVA do TIMER
if(pausa == 0){
conometro--;
if(ss == 0){
ms--;
if(conometro > 60){
ss = 60;
}
}
if((ms == 0) && (conometro >= 59) && (ss < 61)){
ss = 60;
}
ss--;
}
}//**** Fim da contagem com Millis responsavel pelo tempo do Conometro
digito = keypad.getKey();
if(digito != 0){
digitalWrite(buzzer, HIGH);
delay(tempoBuzz);
digitalWrite(buzzer, LOW);
if(digito == '#'){ // AVALIA O ESTADO START OU PAUSA
inverter = !inverter; // Verificar se a contagem esta em pausa ou start e inverte a opção
if(inverter == 1){
pausa = 1;
digitalWrite(pinMotor, LOW);
digitalWrite(pinLuz, LOW);
digitalWrite(pinMagnetron, LOW);
}
if(inverter == 0){
pausa = 0;
digitalWrite(pinMotor, HIGH);
digitalWrite(pinLuz, HIGH);
digitalWrite(pinMagnetron, HIGH);
}
}
if(digito == '*'){ // Reseta o Forno pra estado inicial encerando o aquecimento
pausa = 0;
fimTempo = 1;
estadoInicial = 0;
break;
}
}
//-- Se ficar por um longo tempo em pausa Zera a programação e volta ao estado inicial
if(pausa == 1){
if(autoReset == tpReset){
pausa = 0;
fimTempo = 1;
estadoInicial = 0;
break;
}
}else{autoReset = 0;}
//****** MONITORA A ABERTURA DA PORTA E DURANTE O PRECESSO DE AQUECIMENTO ******
botaoPorta = digitalRead(pinBotao);
if (botaoPorta == 0){
digitalWrite(pinMotor, LOW);
digitalWrite(pinLuz, HIGH);
digitalWrite(pinMagnetron, LOW);
pausa = 1;
inverter = 1;
limpaLCD = 0;
while (botaoPorta == 0){
botaoPorta = digitalRead(pinBotao);
display.setTextSize(1); //Tamanho [1]Texto [0]Numeros
display.setFont(&FreeSerifBold12pt7b);
display.setTextColor(WHITE);
display.clearDisplay();
display.setCursor(15,30); //Coluna, Linha
display.print(F("PORTA"));
display.setCursor(10,50); //Coluna, Linha
display.print(F("ABERTA"));
display.display();
}
digitalWrite(pinLuz, LOW);
}
} // ******* FIM do while "conometro > -1"
// ------ ZERA A CONTAGEM dos ARREYS DESLIGA O RELE E LIMPA O LCD
for (int i=0; i<4; i++) {
digitado[i] = 0;
segundos[i] = 0;
minutos[i] = 0;
inverter = 0;
ss = 0;
ms = 0;
x = 0;
tocar = 1;
}
digitalWrite(pinMagnetron, LOW);
digitalWrite(pinLuz, LOW);
digitalWrite(pinMotor, LOW);
lcd.clear();
fim();
// ******** Mensagem de Aquecimento Concluido + Bips de Alertas de fim de tempo
while (fimTempo == 0){
display.clearDisplay();
display.drawBitmap(40, 0,sininho,48,48, 1);
display.setTextSize(1);
display.setFont(&FreeSerifBold9pt7b);
display.setCursor(5,60); //Coluna, Linha (NUMEROS)
display.print(F("CONCLUIDO!"));
display.display();
if(alertaBuzzer.repeat()){
tocar = 1;
}
if(tocar > 0){
digitalWrite(buzzer, HIGH);
//display.clearDisplay();
display.drawBitmap(40, 0,sininho,48,48, 0);
display.setTextSize(1);
display.setFont(&FreeSerifBold9pt7b);
display.setCursor(5,60); //Coluna, Linha (NUMEROS)
display.print(F("CONCLUIDO!"));
display.display();
delay(100);
digitalWrite(buzzer, LOW);
display.clearDisplay();
display.drawBitmap(40, 0,sininho,48,48, 1);
display.setTextSize(1);
display.setFont(&FreeSerifBold9pt7b);
display.setCursor(5,60); //Coluna, Linha (NUMEROS)
display.print(F("CONCLUIDO!"));
display.display();
display.display();
delay(100);
tocar++;
}
if(tocar == 4){
tocar = 0;
}
//MONITORA A ABERTURA DA PORTA E EXECUTA UMA AÇÃO CASO SEJA ABERTA
botaoPorta = digitalRead(pinBotao);
digito = keypad.getKey();
if(botaoPorta == 0){ // ENCERRA O BUZZER E VOLTA AO ESTADO INICIAL caso a porta seja aberta
estadoInicial = 0;
fimTempo = 1;
inverter = 1;
}
if(digito == '*'){ // ENCERRA o BUZZER E VOLTA AO ESTADO INICIAL
digitalWrite(buzzer, HIGH);
delay(tempoBuzz);
digitalWrite(buzzer, LOW);
estadoInicial = 0;
fimTempo = 1;
}
} // ******** FINAL do "WHILE" Mensagem de Aquecimento Concluido + Bips de Alertas de fim de tempo
}
void piscaLcd(){
// .... PISCA A TELA AGUARDANDO O TEMPO SER DIGITADO E INICIADO PELO BOTÃO START
if (piscaTela.repeat()){
pisca = !pisca;
}
if (pisca == 0){
display.clearDisplay();
display.setTextSize(1);
display.setFont(&FreeSerifBold9pt7b);
display.setTextColor(WHITE);
display.setCursor(25,20); //Coluna, Linha
display.print(F("DIGITE"));
display.setCursor(17,40); //Coluna, Linha
display.print(F("O TEMPO"));
display.setCursor(17,60); //Coluna, Linha
display.print(F("Press Start"));
display.display();
}
if (pisca == 1){
display.clearDisplay(); //limpa o display OLED
display.drawBitmap(0, 0, fornoM, 128, 64, WHITE);
display.display();
}
}
void conometroOled (){
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setFont(&FreeSansBold12pt7b);
display.setCursor(3,50);
if((digitado[3] == 0) && (digitado[2] == 0) && (digitado[1] == 0) && (digitado[0] != 0)){
display.print(F("00:0"));
display.print(digitado[0]);
}
if((digitado[3] == 0) && (digitado[2] == 0) && (digitado[1] != 0)){
display.print(F("00:"));
display.print(digitado[0]);
display.print(digitado[1]);
}
if((digitado[3] == 0) && (digitado[2] != 0)){
display.print(F("0"));
display.print(digitado[0]);
display.print(F(":"));
display.print(digitado[1]);
display.print(digitado[2]);
}
if((digitado[3] != 0)){
display.print(digitado[0]);
display.print(digitado[1]);
display.print(F(":"));
display.print(digitado[2]);
display.print(digitado[3]);
}
display.display();
}
void piscaLcd_Barra(){
// .... PISCA A TELA AGUARDANDO O TEMPO SER DIGITADO E INICIADO PELO BOTÃO START
if (piscaTela.repeat()){
pisca = !pisca;
}
if (pisca == 0){
if(limpaLCD == 0){
lcd.clear();
lcd.display();
limpaLCD = 1;
}
lcd.setCursor(3,1);
lcd.print("DIGITE O TEMPO");
lcd.setCursor(3,2);
lcd.print("PRECIONE START");
}
if (pisca == 1){
if(limpaLCD == 1){
lcd.clear();
lcd.display();
limpaLCD = 0;
}
lcd.setCursor(2,1);
lcd.print("FORNO MICROONDAS");
lcd.setCursor(6,2);
lcd.print("DESLIGADO");
}
}
void conometroOled_BARRA2 (){
if(limpaLCD == 0){
lcd.clear();
lcd.display();
limpaLCD = 1;
}
if((digitado[3] == 0) && (digitado[2] == 0) && (digitado[1] == 0) && (digitado[0] != 0)){
lcd.setCursor(2,1);
lcd.print("00:0");
lcd.print(digitado[0]);
}
if((digitado[3] == 0) && (digitado[2] == 0) && (digitado[1] != 0)){
lcd.setCursor(2,1);
lcd.print("00:");
lcd.print(digitado[0]);
lcd.print(digitado[1]);
}
if((digitado[3] == 0) && (digitado[2] != 0)){
lcd.setCursor(2,1);
lcd.print("0");
lcd.print(digitado[0]);
lcd.print(":");
lcd.print(digitado[1]);
lcd.print(digitado[2]);
}
if((digitado[3] != 0)){
lcd.setCursor(2,1);
lcd.print(digitado[0]);
lcd.print(digitado[1]);
lcd.print(":");
lcd.print(digitado[2]);
lcd.print(digitado[3]);
}
lcd.display();
}
void conometroOled_BARRA (){
if(limpaLCD == 0){
lcd.clear();
lcd.display();
limpaLCD = 1;
}
if((digitado[3] == 0) && (digitado[2] == 0) && (digitado[1] == 0) && (digitado[0] != 0)){
//LCD 16*4 NUMEROS GRANDES ___________________
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
pontilhado();
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[0];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
}
if((digitado[3] == 0) && (digitado[2] == 0) && (digitado[1] != 0)){
//LCD 16*4 NUMEROS GRANDES ___________________
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da dezena
numeral();
pontilhado();
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[0];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[1];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
}
if((digitado[3] == 0) && (digitado[2] != 0)){
//LCD 16*4 NUMEROS GRANDES ___________________
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
posicao = 0; //Informa a posição da Case de arcordo com a contagem da unidade
numeral();
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[0];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
pontilhado();
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[1];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[2];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
}
if((digitado[3] != 0)){
//LCD 16*4 NUMEROS GRANDES ___________________
colunaX = 0; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[0];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();;
colunaX = 4; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[1];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
pontilhado();
colunaX = 10; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[2];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
colunaX = 14; //Informa a Posição da Coluna onde sera exibido o Numeral
position [0] = digitado[3];
posicao = atoi(position); //Informa o valor Numerico Grande a Ser Exibido
numeral();
}
lcd.display();
}
void numeral() {
switch(posicao)
{
case 0: num_0(); break;
case 1: num_1(); break;
case 2: num_2(); break;
case 3: num_3(); break;
case 4: num_4(); break;
case 5: num_5(); break;
case 6: num_6(); break;
case 7: num_7(); break;
case 8: num_8(); break;
case 9: num_9(); break;
} //end switch
}