#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int pinRed = 14;
const int pinYellow = 12;
const int pinGreen = 13;
const int buttonPin = 23;
int etapa = -1;
bool oldState = HIGH;
void setup() {
Serial.begin(115200);
pinMode(pinRed, OUTPUT);
pinMode(pinYellow, OUTPUT);
pinMode(pinGreen, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
while (true);
}
oled.clearDisplay();
}
void loop() {
bool buttonState = digitalRead(buttonPin);
if (buttonState == LOW && oldState == HIGH){
etapa++;
oledClearRow();
switch(etapa){
case 0:
oledPronto();
digitalWrite(pinGreen, HIGH);
break;
case 1:
oledEmOperacao();
digitalWrite(pinGreen, LOW);
digitalWrite(pinYellow, HIGH);
break;
case 2:
oledAlerta();
digitalWrite(pinYellow, LOW);
digitalWrite(pinRed, HIGH);
break;
case 3:
oled.clearDisplay();
digitalWrite(pinRed, LOW);
etapa = -1;
break;
}
}
oldState = buttonState;
delay(50);
}
void oledClearRow(){
oled.fillRect(0, 0, 128, 16, BLACK);
oled.display();
}
void oledPronto(){
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.println("Pronto");
oled.display();
}
void oledEmOperacao(){
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.println("Em Operacao");
oled.display();
}
void oledAlerta(){
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.println("Alerta");
oled.display();
}