Оглавление:

Простой и практичный секундомер Arduino: 4 шага
Простой и практичный секундомер Arduino: 4 шага

Видео: Простой и практичный секундомер Arduino: 4 шага

Видео: Простой и практичный секундомер Arduino: 4 шага
Видео: Простая система старт финиш. Не дорогой спортивный хронометраж. 2024, Июнь
Anonim
Простой и практичный секундомер Arduino
Простой и практичный секундомер Arduino

Найдите в Интернете секундомер Arduino. Вы, наверное, только что это сделали, если вы здесь. По личному опыту могу сказать, что любой секундомер в Интернете либо слишком сложен (код для начинающих), либо слишком упрощен и непрактичен, как те, которые просто продолжают отсчитывать секунды без сброса.

Вы тоже так думаете, а? Ну угадайте, что. Я сделал это, и более того, я напрямую получаю данные от функции millis () - бесконечной строки чисел (до 49 дней или чего-то еще). Лучшая часть? Это всего одна строчка.

Сброс - это самая сложная часть секундомера. Для программистов среднего уровня, если вы еще этого не сделали, попробуйте сделать это самостоятельно, используя секунды, минуты и часы вместе. Вы поймете, о чем я говорю.

Для новичков читайте дальше и наслаждайтесь гениальностью моего ума.

Шучу, но решение, которое я придумал, довольно изящное. Вот что это такое:

Шаг 1: решение

Решение
Решение

Так что проблема в сбросе. Нам нужен непрерывный, повторяющийся цикл чисел из бесконечного вывода последовательных чисел (millis () - он в основном считает миллисекунды, или на самом деле 1,024 миллисекунды, но что угодно).

Первое, что приходит в голову, это использование разницы, например time1 -time2 и delay. Забудь это. Для загрузки требуется не менее шести строк кода и оператор if.

Итак, вот как это сделать. У нас есть предел (59). Мы хотим, чтобы все от 0 до 59 повторялось снова и снова. Как?

Что, если… мы возьмем остаток… миллис-функции, разделенный на 59…. Бинго!

Итак, должно быть так:

(60 [в качестве начального значения, так как ограничение составляет 59] + миллис () / 1000 [1000 миллисекунд - секунда])% 60

Хорошо, позволь мне объяснить. (%) или модуль - это, по сути, оператор типа (+), который находит остаток. Вроде 9% 2 = 1.

Так:

  • остаток от (60 + 0)% 60 = 0
  • остаток от (60 + 1)% 60 = 1
  • остаток от (60 + 58)% 60 = 58
  • остаток от (60 + 59)% 60 = 59
  • остаток от (60 + 60)% 60 = 60
  • остаток от (60 + 61)% 60 = 1

Видеть!

Теперь по частям.

Шаг 2: Детали

Части
Части

Совсем немного

  1. Любой ардуино
  2. Любой дисплей (я использовал 0,96-дюймовый OLED-экран, но вы можете использовать все, что у вас есть, просто убедитесь, что вы указали правильные переменные в функциях отображения вашего дисплея).

Вот и все.

Шаг 3: Код

Вот и все. Он довольно четко прокомментирован, так что проблем возникнуть не должно. Библиотеки и init для 0,96-дюймового OLED находятся в коде. Замените его собственным дисплеем, если он другой.

// 0,96-дюймовые библиотеки OLED

#включают

#включают

#включают

#включают

// 0,96-дюймовый OLED-экран

#define OLED_RESET 4

Дисплей Adafruit_SSD1306 (OLED_RESET);

int секунды;

int минут;

int часы;

void setup () {

// Еще 0,96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay (); display.setTextSize (2); display.setTextColor (БЕЛЫЙ); }

void loop () {

секунды = (60 + миллис () / 1000)% 60;

минут = (60 + миллис () / 60000)% 60; часы = (25 + миллис () / 3600000)% 25;

display.clearDisplay ();

display.setCursor (0, 22); // выводим количество часов с момента сброса display.print (hours); display.print ("ч:");

// выводим количество минут с момента сброса

display.print (минуты);

display.print ("м:");

// выводим количество секунд с момента сброса display.print (seconds); display.print ("s");

display.setCursor (0, 0);

display.print («Секундомер»); display.drawLine (0, 18, 128, 18, БЕЛЫЙ); display.display ();

}

Шаг 4: Завершение…

En Finalment…
En Finalment…

Итак, это все! А теперь иди делай с ним, что хочешь. Приготовьте яйца или займите свой район.

Привет, Аруш

Рекомендуемые: