#include <Keypad.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Tone.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
const byte ROW_NUM = 4; //four rows
const byte COL_NUM = 4; //four columns
char keys[ROW_NUM][COL_NUM] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte pin_column[COL_NUM] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COL_NUM);
Tone buzzer;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(2); // Increase text size for better visibility
display.setTextColor(WHITE);
buzzer.begin(10);
}
void loop() {
static int countUp = 0;
char key = keypad.getKey();
if (key) {
if (key == '1') {
if (countUp < 500) {
countUp++;
display.clearDisplay(); // Clear display before updating
display.setCursor(0,0);
display.println("Count Up: " + String(countUp));
display.display();
buzzer.play(NOTE_A4);
delay(100);
buzzer.stop();
} else {
buzzer.play(NOTE_A4);
}
} else if (key == '2') {
if (countUp > 0) {
countUp--;
display.clearDisplay(); // Clear display before updating
display.setCursor(0,0);
display.println("Count Down: " + String(countUp));
display.display();
buzzer.play(NOTE_A4);
delay(100);
buzzer.stop();
} else {
buzzer.play(NOTE_A4);
}
} else if (key == '0') {
countUp = 0;
display.clearDisplay();
display.setCursor(0,0);
display.println("Count Up: 0");
display.display();
buzzer.stop();
}
}
}