Mundarija:

Oddiy, amaliy Arduino sekundomeri: 4 qadam
Oddiy, amaliy Arduino sekundomeri: 4 qadam

Video: Oddiy, amaliy Arduino sekundomeri: 4 qadam

Video: Oddiy, amaliy Arduino sekundomeri: 4 qadam
Video: How To Become a Real-Life Meme 💀 #electronics #arduino #engineering 2024, Sentyabr
Anonim
Oddiy, amaliy Arduino sekundomeri
Oddiy, amaliy Arduino sekundomeri

Arduino sekundomerini Internetda qidiring. Ehtimol, siz hozir qilgan bo'lsangiz, agar bu erda bo'lsangiz. Shaxsiy tajribamdan shuni aytishim mumkinki, Internetdagi har qanday soniya hisoblagichi juda murakkab (kodda, yangi boshlanuvchilar uchun), yoki juda soddalashtirilgan va amaliy emas, xuddi soniyalarini tiklamasdan sanashni davom ettiradiganlar kabi.

Siz ham shunday deb o'ylaysiz, to'g'rimi? Xo'sh, nima deb taxmin qiling. Men buni qildim va bundan tashqari, men o'zimni millis () funktsiyasidan to'g'ridan-to'g'ri qabul qilaman- cheksiz sonlar qatori (49 kungacha yoki har qanday). Eng yaxshi qismi? Bu faqat bitta qator.

Qayta tiklash - bu sekundomerning qiyin qismi. O'rta darajali dasturchilar uchun, agar siz hali buni qilmagan bo'lsangiz, davom eting va buni o'zingiz, soniyalar, daqiqalar va soatlarni birgalikda bajarishga harakat qiling. Siz nima haqida gapirayotganimni tushunasiz.

Yangi boshlanuvchilar uchun o'qishni davom ettiring va mening aql -idrokimdan zavqlaning.

Hazil, lekin men topgan yechim juda chiroyli. Mana bu nima:

1 -qadam: Yechim

Yechim
Yechim

Shunday qilib, muammo qayta o'rnatishdir. Biz xohlagan narsa - ketma -ket sonlarning (millis () - millisekundlarni yoki aslida 1,024 millisekundlarni, lekin nima bo'lishidan qat'i nazar) uzluksiz, takrorlanadigan raqamlar aylanishi.

Aqlga keladigan birinchi narsa -vaqt1 -vaqt2 va kechikish kabi farqni ishlatish. Buni unut. Yuklash uchun kamida olti qatorli kod va if iborasi kerak.

Shunday qilib, buni qanday qilish kerak. Bizda chegara bor (59). Biz 0 dan 59 gacha bo'lgan hamma narsani takrorlashini xohlaymiz. Qanaqasiga?

Agar biz … millis funktsiyasining qolgan qismini 59 ga bo'lsak… Bingo!

Shunday qilib, shunday bo'lishi kerak:

(60 [boshlang'ich qiymat sifatida, chunki chegara 59] + millis () / 1000 [1000 millisekund soniya]) % 60

OK, tushuntirib bering. (%) yoki modul, asosan, qolganini topadigan (+) kabi operator. Xuddi 9 % 2 = 1.

Shunday qilib:

  • qolgan qismi (60 + 0) % 60 = 0
  • qolgan qismi (60 + 1) % 60 = 1
  • qolgan qismi (60 + 58) % 60 = 58
  • qolgan qismi (60 + 59) % 60 = 59
  • qolgan qismi (60 + 60) % 60 = 60
  • qolgan qismi (60 + 61) % 60 = 1

Qarang!

Endi qismlar haqida.

2 -qadam: qismlar

Qismlar
Qismlar

Ko'p emas, umuman

  1. Har qanday arduino
  2. Har qanday displey (men 0,96 dyuymli OLED -dan foydalandim, lekin sizda bor narsadan foydalanishingiz mumkin, faqat displeyingizning ko'rsatish funktsiyalariga to'g'ri o'zgaruvchilarni qo'yganingizga ishonch hosil qiling.)

Bo'ldi shu.

3 -qadam: Kod

Mana, ketyapsiz. Bu juda aniq izohlangan, shuning uchun hech qanday muammo bo'lmasligi kerak. Kutubxonalar va 0.96 dyuymli OLED kodi kodda. Agar u boshqacha bo'lsa, uni o'z displeyingiz bilan almashtiring.

// 0,96 dyuymli OLED kutubxonalari

#qo'shing

#qo'shing

#qo'shing

#qo'shing

// 0,96 dyuymli OLED kirish

#OLED_RESETni belgilang 4

Adafruit_SSD1306 displeyi (OLED_RESET);

int soniyalar;

int daqiqa;

int soatlari;

bo'sh o'rnatish () {

// Yana 0,96 dyuymli OLED -init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay (); display.setTextSize (2); display.setTextColor (oq); }

void loop () {

soniya = (60 + millis () / 1000) % 60;

daqiqa = (60 + millis () / 60000) % 60; soat = (25 + millis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // displeyni tiklashdan keyin soat sonini chop eting.print (soat); display.print ("h:");

// qayta o'rnatilgandan so'ng, daqiqalar sonini chop eting

displey.print (daqiqa);

display.print ("m:");

// displeyni tiklashdan keyin soniya sonini chop eting.print (soniya); display.print ("s");

display.setCursor (0, 0);

display.print ("Sekundomer"); display.drawLine (0, 18, 128, 18, oq); display.display ();

}

4 -qadam: Yakuniy yakun …

Yakunlash…
Yakunlash…

Demak, hammasi shu! Endi u bilan xohlagan narsani qiling. Tuxumga vaqt bering yoki mahallangizni egallab oling.

Salom, Aarush

Tavsiya: