Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Надежные LCD-секундомер на Arduino Nano — без потенциометра

Компоненты и материалы

О проекте

Этот учебный проект демонстрирует работу с LCD-дисплеем на базе Arduino Nano. Секундомер отсчитывает часы, минуты и секунды, а также позволяет регулировать яркость дисплея. В коде заложена возможность отсчёта сотых долей секунды, однако из-за ограничений частоты обновления экрана эта функция может работать нестабильно.

Автор подобрал временные константы так, что погодность составляет около 15% (на реальных 10 минут секундомер покажет 10 минут 2 секунды). При изменении кода тайминга в подпрограмме stopwatch необходимо скорректировать задержки, учитывающие время выполнения инструкций микроконтроллера.

Шаг 1: Сборка схемы

Соедините компоненты согласно принципиальной схеме (см. раздел «Схемы»). Подключение LCD выполняется в 4-битном режиме: пины RS, E, D4–D7 к выводам 12, 11, 5, 4, 3, 2 Arduino соответственно. Кнопки «Старт», «Стоп», «Сброс» подключены к пинам 8, 9, 10 через подтягивающие резисторы 10 кОм. Яркость подсветки управляется через PWM-пин 6 (резистор 221 Ом на аноде подсветки).

Шаг 2: Загрузка кода

Скопируйте приведённый ниже скетч в Arduino IDE, подключите плату через USB и нажмите «Загрузить».

Шаг 3: Использование

После загрузки устройство готово к работе. Нажмите «Старт» для начала отсчёта, «Стоп» — для паузы, «Сброс» — для обнуления. Яркость задаётся константой brightness (0–255) в начале скетча.

Код

Библиотека LiquidCrystal входит в стандартный набор Arduino IDE. Если её нет, установите через менеджер библиотек или скачайте с GitHub.

/* Простой LCD-секундомер с кнопками старт, стоп, сброс */
#include <LiquidCrystal.h>

// Пины LCD: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int h = 0, m = 0, s = 0, ms = 0;

const int start_pin = 8;
const int stop_pin  = 9;
const int reset_pin = 10;
const int brightness_pin = 6;
int brightness = 100; // 0–255

void setup() {
  analogWrite(brightness_pin, brightness);
  lcd.begin(16, 2);
  pinMode(start_pin, INPUT);
  pinMode(stop_pin, INPUT);
  pinMode(reset_pin, INPUT);
  pinMode(brightness_pin, OUTPUT);
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print("STOPWATCH");
  lcd.setCursor(0, 0);
  lcd.print("TIME:");
  lcd.print(h); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s);

  if (digitalRead(start_pin) == HIGH) {
    stopwatch();
  }
}

// --- Подпрограммы ---
void stopwatch() {
  lcd.setCursor(0, 0);
  lcd.print("TIME:");
  lcd.print(h); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s);

  ms += 10;
  delay(10);

  if (ms == 590) lcd.clear();

  if (ms == 590) { ms = 0; s++; }
  if (s == 60) { s = 0; m++; }
  if (m == 60) { m = 0; h++; }

  lcd.setCursor(0, 1);
  lcd.print("STOPWATCH");

  if (digitalRead(stop_pin) == HIGH) {
    stopwatch_stop();
  } else {
    stopwatch(); // рекурсивный вызов для непрерывного отсчёта
  }
}

void stopwatch_stop() {
  lcd.setCursor(0, 0);
  lcd.print("TIME:");
  lcd.print(h); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s);
  lcd.setCursor(0, 1);
  lcd.print("STOPWATCH");

  if (digitalRead(start_pin) == HIGH) {
    stopwatch();
  }
  if (digitalRead(reset_pin) == HIGH) {
    stopwatch_reset();
  } else {
    stopwatch_stop();
  }
}

void stopwatch_reset() {
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.print("STOPWATCH");
  h = m = s = 0;
  return;
}

Схемы

Принципиальная схема подключения приведена на изображении ниже. Обратите внимание на полярность подсветки LCD и подтягивающие резисторы на кнопках.

Надежные LCD-секундомер на Arduino Nano — без потенциометра

Производственный процесс

  1. Создание осциллографа на Arduino Nano с дисплеем Nokia 5110 (20 кГц): простое DIY-руководство
  2. Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
  3. Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
  4. Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
  5. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  6. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  7. Самодельный осциллограф на Arduino Nano (10 Гц – 50 кГц) с ЖК-дисплеем 128×64
  8. Своё рулевое управление (джойстик) для игр на Arduino
  9. Arduino 101: Пedometer с датчиком DHT11 и LCD-дисплеем
  10. Сборка RGB-микшера цветов на Arduino — пошаговое руководство