Turinys:

Paprastas, praktiškas „Arduino“chronometras: 4 žingsniai
Paprastas, praktiškas „Arduino“chronometras: 4 žingsniai

Video: Paprastas, praktiškas „Arduino“chronometras: 4 žingsniai

Video: Paprastas, praktiškas „Arduino“chronometras: 4 žingsniai
Video: Why is it Not Patented? Amazing Invention From LED Bulb ! 2024, Lapkritis
Anonim
Paprastas, praktiškas „Arduino“chronometras
Paprastas, praktiškas „Arduino“chronometras

Ieškokite žiniatinklyje „Arduino“chronometro. Tikriausiai tai padarėte, jei esate čia. Iš asmeninės patirties galiu pasakyti, kad bet koks chronometras internete yra per daug sudėtingas (pagal kodą, pradedantiesiems), arba yra pernelyg supaprastintas ir nepraktiškas, kaip tie, kurie tik skaičiuoja sekundes nenustatydami iš naujo.

Tu irgi taip galvoji, ane? Na atspėk ką. Aš tai padariau, ir dar daugiau, aš tiesiogiai perimu savo funkciją iš milis () funkcijos- begalinės skaičių eilutės (iki 49 dienų ar bet ko). Geriausia dalis? Tai tik viena eilutė.

Iš naujo nustatyti yra tikroji chronometro dalis. Tarpiniai programuotojai, jei to dar nepadarėte, pabandykite tai padaryti patys, kartu su sekundėmis, minutėmis ir valandomis. Jūs suprasite, apie ką aš kalbu.

Pradedantiesiems skaitykite toliau ir mėgaukitės mano proto genijumi.

Tik juokauju, bet mano sugalvotas sprendimas yra gana tvarkingas. Štai kas tai yra:

1 žingsnis: sprendimas

Sprendimas
Sprendimas

Taigi problema atstatoma. Mes norime nenutrūkstamo, besikartojančio skaičių ciklo iš nesibaigiančio nuoseklių skaičių išėjimo (milis () - tai iš esmės skaičiuoja milisekundes arba iš tikrųjų 1,024 milisekundes, bet ką).

Pirmas dalykas, kuris ateina į galvą, yra skirtumo naudojimas, pvz., Laiko1 laikas2 ir vėlavimas. Pamiršk tai. Norint paleisti, reikia mažiausiai šešių kodo eilučių ir „if“pareiškimo.

Taigi štai kaip tai padaryti. Mes turime ribą (59). Norime, kad viskas nuo 0 iki 59 kartotųsi vėl ir vėl. Kaip?

Kas būtų, jei … mes paimtume likusią milisų funkcijos dalį, padalytą iš 59 … Bingo!

Taigi, turėtų būti taip:

(60 [kaip pradinė vertė, nes riba yra 59] + milis () / 1000 [1000 milisekundžių yra sekundė]) % 60

Gerai, paaiškinkime. (%) arba modulis, iš esmės yra toks operatorius kaip (+), kuris suranda likusią dalį. Kaip 9 % 2 = 1.

Taigi:

  • likusi dalis (60 + 0) % 60 = 0
  • likusi dalis (60 + 1) % 60 = 1
  • likusi dalis (60 + 58) % 60 = 58
  • likusi dalis (60 + 59) % 60 = 59
  • likusi dalis (60 + 60) % 60 = 60
  • likusi dalis (60 + 61) % 60 = 1

Pamatyti!

Dabar dėl dalių.

2 žingsnis: dalys

Dalys
Dalys

Nelabai, visai

  1. Bet koks arduino
  2. Bet koks ekranas (aš naudojau 0,96 colio OLED, bet galite naudoti viską, ką turite, tiesiog įsitikinkite, kad į ekrano rodymo funkcijas įtraukėte reikiamus kintamuosius.)

Viskas.

3 žingsnis: Kodas

Štai eik. Tai gana aiškiai komentuojama, todėl problemų neturėtų kilti. Bibliotekos ir 0,96 colio OLED inicialas yra kode. Pakeiskite jį savo ekranu, jei jis skiriasi.

// 0.96 OLED bibliotekos

#įtraukti

#įtraukti

#įtraukti

#įtraukti

// 0,96 OLED inic

#define OLED_RESET 4

„Adafruit_SSD1306“ekranas (OLED_RESET);

int sekundės;

int minutes;

int valandos;

void setup () {

// Dar šiek tiek 0,96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

void loop () {

sekundės = (60 + milis () / 1000) % 60;

minutės = (60 + milis () / 60000) % 60; valandos = (25 + milis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // atspausdinti valandų skaičių nuo ekrano iš naujo nustatymo.print (valandos); display.print ("h:");

// spausdinti minučių skaičių nuo atstatymo

display.print (minutės);

display.print ("m:");

// atspausdinti sekundžių skaičių nuo ekrano iš naujo nustatymo.print (sekundės); display.print („s“);

display.setCursor (0, 0);

display.print („Chronometras“); display.drawLine (0, 18, 128, 18, BALTA); display.display ();

}

4 žingsnis: baigimas …

Baigimas…
Baigimas…

Taigi viskas! Dabar eik su juo daryti, ką nori. Skirkite laiko kiaušiniams arba perimkite savo kaimynystę.

Sveikinu, Aarush

Rekomenduojamas: