Обратный отсчёт на Ардуино нано

Не могу написать программу тк недавно на Ардуино
Суть
3 кнопки
Функции
1 кнопка ок
2кн -60сек
3кн +60сек
После нажатия “ок”
Идет обратный отсчёт

таки программы тут не пишут.

Алиса сможет бесплатно написать если ее хорошенько попросить, а я за денежку могу с ней договориться:smiley_cat::smiley_cat:

И что же в конце? Бах?

1 лайк

С такими вопросами можно и к нейронкам сходить. Это бесплатно.

Вот, например, ответ DeepSeek.


Для реализации программы на Arduino, которая будет управлять обратным таймером с использованием трех кнопок, можно использовать следующий код:

// Определяем пины для кнопок
const int buttonPlusPin = 2;
const int buttonMinusPin = 3;
const int buttonStartPin = 4;

// Переменные для хранения состояния кнопок
int buttonPlusState = 0;
int buttonMinusState = 0;
int buttonStartState = 0;

// Переменная для хранения заданного времени
unsigned long interval = 0;

// Флаг для отслеживания состояния таймера
bool timerRunning = false;

void setup() {
  // Настраиваем пины кнопок как входы
  pinMode(buttonPlusPin, INPUT);
  pinMode(buttonMinusPin, INPUT);
  pinMode(buttonStartPin, INPUT);

  // Инициализируем последовательный порт для отладки
  Serial.begin(9600);
}

void loop() {
  // Считываем состояние кнопок
  buttonPlusState = digitalRead(buttonPlusPin);
  buttonMinusState = digitalRead(buttonMinusPin);
  buttonStartState = digitalRead(buttonStartPin);

  // Если таймер не запущен, обрабатываем нажатия кнопок
  if (!timerRunning) {
    if (buttonPlusState == HIGH) {
      interval += 60; // Увеличиваем интервал на 60 секунд
      Serial.print("Интервал увеличен: ");
      Serial.println(interval);
      delay(200); // Задержка для предотвращения множественных срабатываний
    }

    if (buttonMinusState == HIGH) {
      if (interval >= 60) {
        interval -= 60; // Уменьшаем интервал на 60 секунд
        Serial.print("Интервал уменьшен: ");
        Serial.println(interval);
      } else {
        interval = 0; // Не даем интервалу стать отрицательным
      }
      delay(200); // Задержка для предотвращения множественных срабатываний
    }

    if (buttonStartState == HIGH) {
      if (interval > 0) {
        timerRunning = true; // Запускаем таймер
        Serial.println("Таймер запущен!");
      }
      delay(200); // Задержка для предотвращения множественных срабатываний
    }
  }

  // Если таймер запущен, начинаем обратный отсчет
  if (timerRunning) {
    while (interval > 0) {
      Serial.print("Осталось времени: ");
      Serial.println(interval);
      delay(1000); // Ждем 1 секунду
      interval--; // Уменьшаем интервал на 1 секунду
    }

    // Когда таймер завершился
    Serial.println("Время вышло!");
    timerRunning = false; // Останавливаем таймер
  }
}

Описание программы:

  1. Кнопки:

    • Кнопка на пине 2 увеличивает интервал на 60 секунд.
    • Кнопка на пине 3 уменьшает интервал на 60 секунд.
    • Кнопка на пине 4 запускает обратный отсчет.
  2. Таймер:

    • После нажатия кнопки “Пуск” начинается обратный отсчет от заданного интервала.
    • Каждую секунду интервал уменьшается на 1 секунду.
    • Когда интервал достигает 0, таймер останавливается, и выводится сообщение “Время вышло!”.
  3. Защита от дребезга:

    • Добавлены задержки (delay(200)) после нажатия кнопок для предотвращения множественных срабатываний.

Подключение:

  • Подключите кнопки к пинам 2, 3 и 4 на Arduino.
  • Подключите другой конец каждой кнопки к земле (GND).
  • Используйте подтягивающие резисторы (внутренние или внешние) для стабилизации сигнала.

Примечание:

  • Программа использует последовательный порт для вывода отладочной информации. Вы можете открыть монитор порта в Arduino IDE для просмотра сообщений.

Этот код можно адаптировать под конкретные требования, например, добавить индикацию на дисплее или звуковой сигнал по окончании таймера.

Товарищ майор уже выехал ))

2 лайка

А ТС-у больше не наливать. Уже начал буровить в соседней теме.(