#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Настройка ЖК-дисплея
LiquidCrystal_I2C lcd(0x27, 16, 2); // Адрес I2C, количество столбцов и строк
// Пины для кнопок
const int button1Pin = 2;
const int button2Pin = 3;
// Пин для GM-счетчика
const int gmCounterPin = 4; // Используйте цифровой пин
// Переменные для хранения значений
volatile int count = 0;
unsigned long lastReadTime = 0;
void setup() {
// Настройка ЖК-дисплея
lcd.begin(16, 2); // Указываем количество столбцов и строк
lcd.backlight();
// Настройка пинов кнопок
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
// Настройка пина GM-счетчика
pinMode(gmCounterPin, INPUT);
// Настройка прерывания для GM-счетчика
attachInterrupt(digitalPinToInterrupt(gmCounterPin), countPulse, RISING);
}
void loop() {
// Обновление дисплея каждые 1000 мс
if (millis() - lastReadTime >= 1000) {
lastReadTime = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Count: ");
lcd.print(count);
count = 0; // Сбрасываем счетчик после отображения
}
// Проверка состояния кнопок
if (digitalRead(button1Pin) == LOW) {
// Действие для кнопки 1 (например, включение/выключение)
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Button 1 Pressed");
delay(500); // Задержка для предотвращения дребезга
}
if (digitalRead(button2Pin) == LOW) {
// Действие для кнопки 2 (например, смена режима)
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Button 2 Pressed");
delay(500); // Задержка для предотвращения дребезга
}
}
void countPulse() {
count++;
}