#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define BUTTON_1_PIN 2
#define BUTTON_2_PIN 3
#define BUTTON_3_PIN 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET, 0x3C);
bool buttonPressed1 = false;
bool buttonPressed2 = false;
bool buttonPressed3 = false;
int programIndex = 0; // 0: Welcome, 1: Sine Values, 2: Cosine Values, 3: Tangent Values
void displayWelcomeMessage() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(10, 20);
display.println("Welcome to our");
display.setCursor(20, 35);
display.println("Maths Expo");
display.display();
}
void displaySineValues() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 0);
display.println(" Sine Values ");
display.setTextSize(1);
display.setCursor(5, 10);
display.println("0 = 0.00");
display.setCursor(5, 20);
display.println("30 = 0.5");
display.setCursor(5, 30);
display.println("45 = 0.71");
display.setCursor(70, 10);
display.println("60 = 0.86");
display.setCursor(70, 20);
display.println("90 = 1.00");
display.setCursor(70, 30);
display.println("180 = 0");
display.display();
}
void displayCosineValues() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 0);
display.println(" Cosine Values ");
display.setTextSize(1);
display.setCursor(5, 10);
display.println("0 = 1.00");
display.setCursor(5, 20);
display.println("30 = 0.86");
display.setCursor(5, 30);
display.println("45 = 0.71");
display.setCursor(70, 10);
display.println("60 = 0.5");
display.setCursor(70, 20);
display.println("90 = 0.00");
display.setCursor(70, 30);
display.println("180 = -1");
display.display();
}
void displayTangentValues() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 0);
display.setTextSize(1);
display.println(" Tangent Values ");
display.setTextSize(1);
display.setCursor(5, 10);
display.println("0 = 0.00");
display.setCursor(5, 20);
display.println("30 = 0.57");
display.setCursor(5, 30);
display.println("45 = 1.00");
display.setCursor(70, 10);
display.println("60 = 1.73");
display.setCursor(70, 20);
display.println("90 = ND");
display.setCursor(70, 30);
display.println("180 = 0");
display.display();
}
void setup() {
pinMode(BUTTON_1_PIN, INPUT_PULLUP);
pinMode(BUTTON_2_PIN, INPUT_PULLUP);
pinMode(BUTTON_3_PIN, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
}
void loop() {
if (digitalRead(BUTTON_1_PIN) == LOW && !buttonPressed1) {
programIndex = 1;
buttonPressed1 = true;
buttonPressed2 = false;
buttonPressed3 = false;
delay(300); // Debounce delay
}
if (digitalRead(BUTTON_2_PIN) == LOW && !buttonPressed2) {
programIndex = 2;
buttonPressed1 = false;
buttonPressed2 = true;
buttonPressed3 = false;
delay(300); // Debounce delay
}
if (digitalRead(BUTTON_3_PIN) == LOW && !buttonPressed3) {
programIndex = 3;
buttonPressed1 = false;
buttonPressed2 = false;
buttonPressed3 = true;
delay(300); // Debounce delay
}
switch (programIndex) {
case 0:
displayWelcomeMessage();
break;
case 1:
displaySineValues();
break;
case 2:
displayCosineValues();
break;
case 3:
displayTangentValues();
break;
}
}