#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <stdio.h>
#include <time.h>
#include <sntp.h>
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
int menuOption = 0;
const int numMenuOptions = 3;
const int buttonUpPin = 4; // Пин для кнопки "Вверх"
const int buttonDownPin = 5; // Пин для кнопки "Вниз"
const int buttonEnterPin = 2;
const char* programNames[] = {"The first program", "The second program", "Clock"};
void setup() {
Serial.begin(115200);
Serial.println("Hello");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setCursor(0, 0);
display.println("HELLO");
pinMode(buttonUpPin, INPUT_PULLUP);
pinMode(buttonDownPin, INPUT_PULLUP);
pinMode(buttonEnterPin, INPUT_PULLUP);
display.display();
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, "pool.ntp.org");
sntp_init();
}
void loop() {
if (digitalRead(buttonUpPin) == LOW) {
menuOption = (menuOption - 1 + numMenuOptions) % numMenuOptions;
delay(200); // Для сглаживания дребезга
}
if (digitalRead(buttonDownPin) == LOW) {
menuOption = (menuOption + 1) % numMenuOptions;
delay(200); // Для сглаживания дребезга
}
if (digitalRead(buttonEnterPin) == LOW) {
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setCursor(0, 0);
if (menuOption == 0) {
display.println("Hi!");
delay(200);
} else if (menuOption == 1) {
display.println("fdfsdfs");
} else if (menuOption == 2) {
Clock();
}
display.display();
}
// Обновление экрана меню на основе текущей menuOption
display.clearDisplay();
display.setCursor(0, 0);
for (int i = 0; i < numMenuOptions; i++) {
if (i == menuOption) {
display.print("> ");
} else {
display.print(" ");
}
display.println(programNames[i]); // Выводим название программы из массива
}
display.display();
}
void executeMenuOption() {
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setCursor(0, 0);
if (menuOption == 0) {
display.println("Hi!");
delay(200);
} else if (menuOption == 1) {
display.println("fdfsdfs");
}
display.display();
}
void Clock() {
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setCursor(0, 0);
if (sntp_enabled() && sntp_get_sync_status() == SNTP_SYNC_STATUS_COMPLETED) {
time_t now;
struct tm timeinfo;
time(&now);
localtime_r(&now, &timeinfo);
char timeStr[20];
strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", &timeinfo);
display.println("Clock:");
display.println(timeStr);
} else {
display.println("Syncing time...");
}
display.display();
}