#include <fDigitsSegtPin.h> // Подключаем библиотеку fDigitsSegtPin
#include <Bounce2.h>;
// Инициализируем объект-4-х разрядный индикатор, передаём использованные
// для подключения контакты на:
fDigitsSegtPin Display(6, 5, 9, 4, 8, 13, 3, 12, 11, 7, 2, 10);
const int button1 = 12;
const int button2 = 0;
// Создаем объект
Bounce debouncer1 = Bounce();
// Создаем объект
Bounce debouncer2 = Bounce();
void setup()
{
Serial.begin(9600);
Display.begin();
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
// Даем бибилотеке знать, к какому пину мы подключили кнопку
debouncer1.attach(button1);
debouncer1.interval(5); // Интервал, в течение которого мы не буем получать значения с пина
// Даем бибилотеке знать, к какому пину мы подключили кнопку
debouncer2.attach(button2);
debouncer2.interval(5); // Интервал, в течение которого мы не буем получать значения с пина
}
int curButton1 = LOW;
int lastButton1 = LOW;
int curButton2 = LOW;
int lastButton2 = LOW;
int countPressButton1 = 0;
int countPressButton2 = 0;
static float deciSeconds = 0; //время, отображаемое на индикаторе
static unsigned long timer = 0; //текущее время
void loop()
{
// Даем объекту бибилотеки знать, что надо обновить состояние - мы вошли в новый цкил loop
debouncer1.update();
// Получаем значение кнопки
int curButton1 = debouncer1.read();
// Даем объекту бибилотеки знать, что надо обновить состояние - мы вошли в новый цкил loop
debouncer2.update();
// Получаем значение кнопки
int curButton2 = debouncer2.read();
if (countPressButton2 == 0)
{
if (curButton1 == LOW && lastButton1 == HIGH)
{
++countPressButton1;
if (countPressButton1 == 2)
{
countPressButton1 = 0;
}
}
lastButton1 = curButton1;
}
if (countPressButton1 == 0)
{
if (curButton2 == LOW && lastButton2 == HIGH)
{
++countPressButton2;
if (countPressButton2 == 2)
{
countPressButton2 = 0;
}
}
lastButton2 = curButton2;
}
if (countPressButton1 == 1)
{
if (millis() - timer >= 100) //прошло 100 мс
{
timer += 100;
deciSeconds += 0.1; // 100 мс = 0,1 сек
if (deciSeconds >= 1000) // выход из диапазона
{
deciSeconds = 0;
}
}
}
else
{
timer = millis();
}
if (countPressButton2 == 1)
{
deciSeconds = 0;
}
Serial.println(countPressButton1);
Display.print(deciSeconds); //периодический вызов функции в основном цикле
}