#include <ezButton.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
ezButton button1(5);
ezButton button2(2);
ezButton button3(15);
unsigned long ultimotempo = millis();
int fatias, tipo = 0;
int estado = 0, potValue = 0;
String molho, sabor, algoMais, entrega;
float valoranalogico, ml;
const int potPin = 34;
#define LED_AZUL 13
#define LED_ROSA 12
#define LED_AGUA 14
void setup() {
pinMode(LED_AZUL, OUTPUT);
pinMode(LED_ROSA, OUTPUT);
pinMode(LED_AGUA, OUTPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 10);
display.println("BISTROH");
display.setTextColor(WHITE);
display.startscrollright(0x00, 0x0f);
display.setCursor(10, 50);
display.println("Boas vindas!");
display.display();
Serial.begin(9600);
delay(10000);
display.stopscroll();
display.clearDisplay();
}
void loop() {
button1.loop();
button2.loop();
button3.loop();
switch (estado) {
case 0: perguntaInicial(); break;
case 1: pergunta1(); break;
case 2: pergunta2(); break;
case 3: pergunta3(); break;
case 4: pergunta4(); break;
case 5: pergunta5(); break;
case 6: pergunta6(); break;
case 7: operacao(); break;
case 8: operacao1(); break;
case 9: operacao3(); break;
}
}
void perguntaInicial() {
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 0);
display.println("BISTROH");
display.setCursor(10, 20);
display.setTextColor(WHITE);
display.println("LASANHA; BOLONHESA OU FRANGO");
display.setCursor(10, 40);
display.println("VERMELHO: BOLONHESA");
display.setCursor(10, 50);
display.println("AZUL: FRANGO");
display.display();
if (button1.isReleased()) { // vermelho
display.clearDisplay();
tipo = 0; // frango
estado=1;
}
if (button3.isReleased()) { // azul
display.clearDisplay();
tipo = 1; // bolonhesa
estado = 1;
}
}
void pergunta1() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 0);
display.println("BISTROH");
display.setCursor(10, 200);
display.setTextColor(WHITE);
display.println("Quantas fatias");
display.setCursor(50, 40);
display.println(fatias);
display.display();
if (button1.isReleased()) {
fatias += 1;
}
if (button2.isReleased()) {
fatias -= 1;
if(fatias<1)fatias=1;
}
if (button3.isReleased()) {
estado = 3;
}
display.clearDisplay();
}
void pergunta2() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 0);
display.println("BISTROH");
display.setCursor(10, 10);
display.setTextColor(WHITE);
display.setCursor(10, 30);
display.println("Sabor? Aperte:");
display.setCursor(10, 30);
display.println("Vermelho: FRANGO");
display.setCursor(10, 40);
display.println("Azul: BOLONHESA");
display.display();
if (button2.isReleased()){
sabor = "frango";
estado = 4;
}
if (button3.isReleased()) {
sabor = "bolonhesa";
estado = 4;
}
}
void pergunta3() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 0);
display.println("BISTROH");
display.setCursor(10, 10);
display.setTextColor(WHITE);
display.setCursor(10, 20);
display.println("Molho? Aperte");
display.setCursor(10, 30);
display.println("Cinza: Branco");
display.setCursor(10, 40);
display.println("Vermelho: Vermelho");
display.setCursor(10, 50);
display.println("Azul: rose");
display.setCursor(50, 50);
display.display();
if (button1.isReleased()) {
molho = "Branco";
estado = 5;
}
if (button2.isReleased()) {
molho = "Vermelho";
estado = 5;
}
if (button3.isReleased()) {
molho = "Rose";
estado = 5;
}
}
void pergunta4() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 0);
display.println("BISTROH");
display.setCursor(10, 10);
display.setTextColor(WHITE);
display.setCursor(10, 20);
display.println("Algo mais? ");
display.setCursor(10, 30);
display.println("Cinza: Guarana");
display.setCursor(10, 40);
display.println("Vermelho: Coca-Cola");
display.setCursor(10, 50);
display.println("Azul: Agua");
display.display();
if (button1.isReleased()) {
algoMais = "Guaraná";
estado = 6;
}
if (button2.isReleased()) {
algoMais = "Coca";
estado = 6;
}
if (button3.isReleased()) {
algoMais = "Água";
estado = 6;
}
}
void pergunta5() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(10, 0);
display.println("BISTROH");
display.setCursor(10, 10);
display.setTextColor(WHITE);
display.setCursor(10, 20);
display.println("Entrega?");
display.setCursor(10, 30);
display.println("Cinza: Em casa");
display.setCursor(10, 40);
display.println("Azul: Retirar no local");
display.display();
if (button1.isReleased()) {
entrega = "Em casa";
estado = 6;
}
if (button2.isReleased()) {
entrega = "Retirar no local";
estado = 6;
}
}
void pergunta6 (){
potValue = analogRead(potPin);
ml= valoranalogico=((float)potValue/409)*100;
ml=valoranalogico;
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(10, 15);
display.println("Ml do refri:");
display.setTextSize(2);
display.setCursor(50, 25);
display.println(ml);
display.setTextSize(1);
display.setCursor(10, 40);
display.println("Pressione o botao azul");
display.display();
if (button3.isReleased()) {
estado = 9;
}
display.clearDisplay();
}
void operacao() {
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(10, 10);
display.println("BISTROH");
display.setCursor(0, 30);
String frase2;
if (tipo == 0) {
frase2 = "Preparando a marmita...";
} else {
String frase = "Colocando ";
frase2 = frase + String(fatias) + "fatias....";
}
display.println(frase2);
display.setCursor(50, 50);
display.display();
analogWrite(LED_AGUA, HIGH);
ultimotempo = millis();
estado++;
}
void operacao1(){
//if(tipo==0){ tempotipo=5000; }
// if(tipo==1){ tempotipo=10000; }
if((millis() - ultimotempo) > 5000){
ultimotempo = millis();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(10, 10);
display.println("BISTROH");
display.setCursor(0, 30);
String frase3 = "Adicionando Molho " + String(molho) + "...";
display.println(frase3);
display.setCursor(50,50);
display.display();
analogWrite(LED_AGUA, LOW);
analogWrite(LED_ROSA, HIGH);
ultimotempo = millis();
estado++;
}
}
void operacao3(){
if((millis() - ultimotempo) > 5000){
ultimotempo = millis();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(10, 10);
display.println("BISTROH");
display.setCursor(0, 30);
display.println("Seu pedido esta pronto!");
display.setCursor(50, 50);
display.display();
analogWrite(LED_AZUL, LOW);
estado = 0;
}
display.clearDisplay();
}