Cuprins:

Un cronometru Arduino simplu, practic: 4 pași
Un cronometru Arduino simplu, practic: 4 pași

Video: Un cronometru Arduino simplu, practic: 4 pași

Video: Un cronometru Arduino simplu, practic: 4 pași
Video: 4 Digit 7 segment display using Arduino 2024, Noiembrie
Anonim
Un cronometru simplu, practic Arduino
Un cronometru simplu, practic Arduino

Căutați pe web cronometrul Arduino. Probabil că tocmai ai făcut-o, dacă ești aici. Din experiența personală, vă pot spune că orice cronometru de pe internet este prea complex (în cod, pentru începători), sau este mult prea simplificat și nu este practic, precum cele care continuă să numere secunde fără resetare.

Și tu crezi așa, nu? Ei bine, ghici ce. Am făcut-o și, în plus, îmi iau direct inputul din funcția millis () - o linie nesfârșită de numere (până la 49 de zile sau orice altceva). Cea mai bună parte? Este doar o singură linie.

Resetarea este partea reală a cronometruului. Pentru programatorii intermediari, dacă nu ați făcut-o deja, continuați și încercați să faceți acest lucru singur, cu secunde, minute și ore împreună. Vei primi despre ce vorbesc.

Pentru începători, citiți mai departe și bucurați-vă de geniul minții mele.

Glumesc, dar soluția cu care am venit este destul de îngrijită. Iată ce este:

Pasul 1: Soluția

Soluția
Soluția

Deci problema este resetarea. Ceea ce ne dorim este un ciclu continuu, care se repetă de numere, dintr-o ieșire nesfârșită de numere secvențiale (milis () - contează practic milisecunde, sau de fapt 1.024 milisecunde, dar orice).

Primul lucru care îmi vine în minte este utilizarea diferenței, cum ar fi time1 -time2 și o întârziere. Uită asta. Este nevoie de cel puțin șase linii de cod și o declarație if pentru a porni.

Deci, iată cum să o faceți. Avem o limită (59). Vrem ca totul de la 0 la 59 să se repete mereu. Cum?

Ce se întâmplă dacă … am prelua restul … din funcția de milis împărțit la 59 … Bingo!

Deci, ar trebui să fie așa:

(60 [ca valoare inițială deoarece limita este 59] + milis () / 1000 [1000 milisecunde este o secundă])% 60

Bine, explică-mă. (%) sau modul, este practic un operator ca (+) care găsește restul. Ca 9% 2 = 1.

Asa de:

  • restul de (60 + 0)% 60 = 0
  • restul de (60 + 1)% 60 = 1
  • restul de (60 + 58)% 60 = 58
  • restul de (60 + 59)% 60 = 59
  • restul de (60 + 60)% 60 = 60
  • restul de (60 + 61)% 60 = 1

Vedea!

Acum, pentru piese.

Pasul 2: piesele

Părțile
Părțile

Nu mult, deloc

  1. Orice arduino
  2. Orice afișaj (am folosit OLED de 0,96 , dar puteți utiliza orice aveți, asigurați-vă că introduceți variabilele potrivite în funcțiile de afișare ale afișajului dvs.)

Asta e.

Pasul 3: Codul

Iată-te. Este destul de clar comentat, deci nu ar trebui să existe probleme. Bibliotecile și init pentru OLED de 0,96 se află în cod. Înlocuiți-l cu ecranul dvs., dacă este diferit.

// Biblioteci OLED de 0,96"

#include

#include

#include

#include

// 0,96 OLED Init

#define OLED_RESET 4

Display Adafruit_SSD1306 (OLED_RESET);

secunde int;

minute int;

orele int;

configurare nulă () {

// Unele mai mult 0,96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

bucla nulă () {

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

minute = (60 + milis () / 60000)% 60; ore = (25 + milis () / 3600000)% 25;

display.clearDisplay ();

display.setCursor (0, 22); // imprimați numărul de ore de la resetare display.print (ore); display.print ("h:");

// tipăriți numărul de minute de la resetare

display.print (minute);

display.print ("m:");

// imprimați numărul de secunde de la resetarea display.print (secunde); display.print ("s");

display.setCursor (0, 0);

display.print ("Cronometru"); display.drawLine (0, 18, 128, 18, WHITE); display.display ();

}

Pasul 4: În finalizare …

În finalizare …
În finalizare …

Deci asta este! Acum du-te să faci ce vrei cu el. Cronometrează câteva ouă sau preia cartierul tău.

Noroc, Aarush

Recomandat: