Мазмұны:

Қарапайым, практикалық Arduino секундомері: 4 қадам
Қарапайым, практикалық Arduino секундомері: 4 қадам

Бейне: Қарапайым, практикалық Arduino секундомері: 4 қадам

Бейне: Қарапайым, практикалық Arduino секундомері: 4 қадам
Бейне: Arduino ҚАЗАҚША [1] Тинкеркадпен танысу 2024, Қыркүйек
Anonim
Қарапайым, практикалық Arduino секундомері
Қарапайым, практикалық Arduino секундомері

Arduino секундомерін интернеттен іздеңіз. Егер сіз осында болсаңыз, сіз жай ғана жасаған шығарсыз. Жеке тәжірибеден айта аламын, интернетте кез келген секундомер тым күрделі (кодта, жаңадан бастаушыларға арналған), немесе тым жеңілдетілген және практикалық емес.

Сіз де солай ойлайсыз, иә? Жақсы, не екенін біліңіз. Мен мұны істедім, және мен миллис () функциясынан өзімнің кірісімді аламын- шексіз сандар сызығы (49 күнге дейін немесе кез келгенге дейін). Ең жақсы бөлігі? Бұл тек бір сызық.

Қалпына келтіру - секундомердің нақты бөлігі. Орта деңгейдегі бағдарламашылар үшін, егер сізде әлі жоқ болса, жалғастырып, секундтар, минуттар мен сағаттарды бірге өзіңіз орындауға тырысыңыз. Сіз менің айтқанымды түсінесіз.

Жаңадан бастаушылар үшін оқыңыз және менің ақыл -ойымның данышпанымен рахаттаныңыз.

Мен әзілдеймін, бірақ мен тапқан шешім өте ұқыпты. Міне, бұл:

1 -қадам: Шешім

Шешім
Шешім

Мәселен, мәселе қалпына келтіру. Біз қалайтын нәрсе - тізбектелген сандардың (миллис () - бұл миллисекундтарды немесе шын мәнінде 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. Кез келген ардуино
  2. Кез келген дисплей (мен 0,96 дюймдік OLED қолдандым, бірақ сізде бар нәрсені қолдана аласыз, дисплейдің дисплей функцияларына дұрыс айнымалыларды енгізіңіз.)

Міне бітті.

3 -қадам: Кодекс

Міне кеттік. Бұл өте түсінікті, сондықтан ешқандай проблемалар болмауы керек. 0,96 дюймдік OLED үшін кітапханалар мен init кодта. Егер ол басқаша болса, оны өзіңіздің дисплейіңізбен ауыстырыңыз.

// 0,96 «OLED кітапханалары

#қосу

#қосу

#қосу

#қосу

// 0,96 дюймдік OLED кіріс

#OLED_RESET параметрін анықтаңыз 4

Adafruit_SSD1306 дисплейі (OLED_RESET);

int секунд;

int минуттары;

int сағаты;

жарамсыз орнату () {

// Тағы 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 («h:»);

// қалпына келтірілгеннен кейінгі минуттар санын басып шығарыңыз

көрсету.баспа (минут);

display.print («m:»);

// дисплейді қалпына келтіргеннен кейінгі секундтардың санын басып шығарыңыз. басып шығару (секунд); display.print («s»);

display.setCursor (0, 0);

display.print («Секундомер»); display.drawLine (0, 18, 128, 18, АҚ); display.display ();

}

4 -қадам: Қорытындылауды аяқтаңыз …

Қорытындылау…
Қорытындылау…

Міне, осымен! Енді онымен қалағаныңызды жасаңыз. Жұмыртқаға уақыт бөліңіз немесе айналаңызды басып алыңыз.

Сәлем, Аруш

Ұсынылған: