Përmbajtje:

Një kronometër i thjeshtë, praktik Arduino: 4 hapa
Një kronometër i thjeshtë, praktik Arduino: 4 hapa

Video: Një kronometër i thjeshtë, praktik Arduino: 4 hapa

Video: Një kronometër i thjeshtë, praktik Arduino: 4 hapa
Video: Control Speed of Stepper Motor using L298N with Push Button Switches STLPB-01 2024, Qershor
Anonim
Një kronometër i thjeshtë, praktik Arduino
Një kronometër i thjeshtë, praktik Arduino

Kërkoni në ueb për kronometrin Arduino. Ju ndoshta e keni bërë atë, nëse jeni këtu. Nga përvoja personale, mund t'ju them se çdo kronometër në internet është ose shumë kompleks (në kod, për fillestarët), ose është shumë e thjeshtuar, dhe jo praktike, si ato që thjesht numërojnë sekonda pa u rivendosur.

Edhe ju mendoni kështu, apo jo? Epo merreni me mend se çfarë. Unë e bëra atë, dhe për më tepër, marr drejtpërdrejt kontributin tim nga funksioni millis ()- një linjë e pafund numrash (deri në 49 ditë, ose çfarëdo). Pjesa me e mire? Onlyshtë vetëm një rresht.

Rivendosja, është pjesa aktuale e vështirë e kronometrit. Për programuesit e ndërmjetëm, nëse nuk e keni bërë tashmë, shkoni përpara dhe përpiquni ta bëni këtë vetë, me sekonda, minuta dhe orë së bashku. Ju do të merrni atë për të cilën po flas.

Për fillestarët, lexoni dhe kënaquni me gjeniun e mendjes sime.

Po bëj shaka, por zgjidhja që kam gjetur është mjaft e zoti. Ja çfarë është ajo:

Hapi 1: Zgjidhja

Zgjidhja
Zgjidhja

Pra, problemi është rivendosja. Ajo që duam është një cikël numrash i vazhdueshëm, i përsëritur, nga një dalje e pafund e numrave vijues (milis () - në thelb numëron milisekonda, ose në fakt 1.024 milisekonda, por çfarëdo).

Gjëja e parë që vjen në mendje është përdorimi i diferencës, si koha1 -koha2 dhe një vonesë. Harrojeni atë. Duhen të paktën gjashtë rreshta të kodit dhe një deklaratë if për të nisur.

Pra, ja si ta bëni. Ne kemi një kufi (59). Ne duam që gjithçka nga 0 në 59 të përsëritet pa pushim. Si?

Po sikur… të marrim pjesën e mbetur… të funksionit millis të ndarë me 59…. Bingo!

Pra, duhet të jetë kështu:

(60 [si vlerë fillestare sepse kufiri është 59] + milis () / 1000 [1000 milisekonda është një sekondë]) % 60

Mirë, më shpjegoni. (%) ose moduli, në thelb është një operator si (+) që gjen pjesën e mbetur. Ashtu si 9 % 2 = 1.

Kështu që:

  • pjesa e mbetur (60 + 0) % 60 = 0
  • pjesa e mbetur e (60 + 1) % 60 = 1
  • pjesa e mbetur (60 + 58) % 60 = 58
  • pjesa e mbetur (60 + 59) % 60 = 59
  • pjesa e mbetur (60 + 60) % 60 = 60
  • pjesa e mbetur (60 + 61) % 60 = 1

Shiko!

Tani, për pjesët.

Hapi 2: Pjesët

Pjesët
Pjesët

Jo shumë, aspak

  1. Çdo arduino
  2. Çdo ekran (kam përdorur OLED 0.96 ", por ju mund të përdorni gjithçka që keni, vetëm sigurohuni që të vendosni variablat e duhur në funksionet e ekranit të ekranit tuaj.)

Kjo eshte.

Hapi 3: Kodi

Ja ku shkoni Commentedshtë komentuar mjaft qartë, kështu që nuk duhet të ketë probleme. Bibliotekat dhe init për 0.96 OLED janë në kod. Zëvendësojeni me ekranet tuaja nëse është ndryshe.

// Bibliotekat 0.96 OLED

#përfshi

#përfshi

#përfshi

#përfshi

// 0.96 Inlet OLED

#përcaktoni OLED_RESET 4

Ekrani Adafruit_SSD1306 (OLED_RESET);

sekonda int;

int minuta;

orë int;

void setup () {

// Disa më shumë 0.96 Inlet OLED

shfaqje.fillo (SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay (); display.setTextSize (2); display.setTextColor (E BARDH); }

lak void () {

sekonda = (60 + milis () / 1000) % 60;

minuta = (60 + milis () / 60000) % 60; orë = (25 + milis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // printoni numrin e orëve që nga rivendosja e ekranit.print (orë); display.print ("h:");

// printoni numrin e minutave që nga rivendosja

ekran.print (minuta);

ekran.print ("m:");

// printoni numrin e sekondave që nga rivendosja e ekranit.print (sekonda); display.print ("s");

display.setCursor (0, 0);

display.print ("Kronometër"); display.drawLine (0, 18, 128, 18, WHITE); display.display ();

}

Hapi 4: Përfundimi…

Në përfundim…
Në përfundim…

Pra, kjo është ajo! Tani shkoni të bëni atë që dëshironi me të. Koha disa vezë, ose të marrë mbi lagjen tuaj.

Urime, Aarush

Recommended: