Съдържание:

Прост, практичен хронометър Arduino: 4 стъпки
Прост, практичен хронометър Arduino: 4 стъпки

Видео: Прост, практичен хронометър Arduino: 4 стъпки

Видео: Прост, практичен хронометър Arduino: 4 стъпки
Видео: RobotDyn Control AC bulb with Arduino AC Dimmer 2024, Ноември
Anonim
Прост, практичен хронометър Arduino
Прост, практичен хронометър Arduino

Потърсете в мрежата хронометър Arduino. Вероятно току -що сте го направили, ако сте тук. От личен опит мога да ви кажа, че всеки хронометър в интернет е или твърде сложен (в кода, за начинаещи), или е твърде опростен и непрактичен, като тези, които просто броят секунди без нулиране.

И ти така мислиш, а? Ами познайте какво. Направих го и нещо повече, директно вземам въвеждането си от функцията millis ()- безкраен ред от числа (до 49 дни или каквото и да е друго). Най-добрата част? Това е само един ред.

Нулирането е действителната твърда част на хронометъра. За междинни програмисти, ако все още не сте, продължете и се опитайте да направите това сами, със секунди, минути и часове заедно. Ще разберете за какво говоря.

За начинаещи, прочетете и се насладете на гения на ума ми.

Шегувам се, но решението, което измислих, е доста кокетно. Ето какво е:

Стъпка 1: Решението

Решението
Решението

Така че проблемът е нулирането. Това, което искаме, е непрекъснат, повтарящ се цикъл от числа, от безкраен изход от последователни числа (millis () - той основно брои милисекунди, или всъщност 1.024 милисекунди, но каквото и да е).

Първото нещо, което идва на ум, е използването на разлика, като time1 -time2 и забавяне. Забравете това. Необходими са поне шест реда код и оператор 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. Всяко arduino
  2. Всеки дисплей (използвах 0,96 OLED, но можете да използвате каквото имате, просто не забравяйте да поставите правилните променливи във функциите на дисплея на вашия дисплей.)

Това е.

Стъпка 3: Кодът

Ето. Това е доста ясно коментирано, така че не би трябвало да има проблеми. Библиотеките и init за 0.96 OLED са в кода. Заменете го със собствения си дисплей, ако е различен.

// 0.96 OLED библиотеки

#включва

#включва

#включва

#включва

// 0.96 OLED Init

#дефинирайте 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 (часове); display.print ("h:");

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

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

display.print ("m:");

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

display.setCursor (0, 0);

display.print ("Хронометър"); display.drawLine (0, 18, 128, 18, БЯЛ); display.display ();

}

Стъпка 4: En Финал …

En Финал…
En Финал…

Значи това е! Сега вървете с него каквото искате. Отделете време за яйца или превземете квартала си.

Наздраве, Aarush

Препоръчано: