#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#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 -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
long countdownTime = 300; // 5 minutes in seconds
int ledpin =19;// define pin 10 for LED
int button =18;// define pin 5 for Push Button
int val;// Define the variable value
void setup() {
Serial.begin(115200);
pinMode(ledpin, OUTPUT);// define LED as output
pinMode(button, INPUT);// define button as input
// Initialize OLED display with I2C address 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.display();
delay(2000); // Pause for 2 seconds
display.clearDisplay();
// Display initial countdown time
displayCountdown(countdownTime);
}
//Medicion de boton
void loop()
{
if (countdownTime > 0) {
delay(1000); // Wait for 1 second
countdownTime--; // Decrease the countdown time
displayCountdown(countdownTime);
}
val = digitalRead(button);//Read digital pin 5 level value assign
if (val==1)// Test button is pressed
{
digitalWrite(ledpin, HIGH);
}
else
{
digitalWrite(ledpin, LOW);
}
}
void displayCountdown(long seconds) {
int minutes = seconds / 60;
int remainingSeconds = seconds % 60;
display.clearDisplay();
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 20);
if (minutes < 10) {
display.print("0");
}
display.print(minutes);
display.print(":");
if (remainingSeconds < 10) {
display.print("0");
}
display.print(remainingSeconds);
display.display();
}