Satura rādītājs:

Vienkāršs, praktisks Arduino hronometrs: 4 soļi
Vienkāršs, praktisks Arduino hronometrs: 4 soļi

Video: Vienkāršs, praktisks Arduino hronometrs: 4 soļi

Video: Vienkāršs, praktisks Arduino hronometrs: 4 soļi
Video: How to use Mosfet Optocoupled HW-532 to control up to 30V DC Motor Speed or load using Arduino 2024, Novembris
Anonim
Vienkāršs, praktisks Arduino hronometrs
Vienkāršs, praktisks Arduino hronometrs

Meklējiet tīmeklī Arduino hronometru. Jūs droši vien to izdarījāt, ja esat šeit. No personīgās pieredzes varu pateikt, ka jebkurš hronometrs internetā ir vai nu pārāk sarežģīts (ar kodu, iesācējiem), vai arī ir pārāk vienkāršots un nav praktisks, piemēram, tie, kas tikai turpina skaitīt sekundes bez atiestatīšanas.

Tu arī tā domā, eh? Nu uzmini ko. Es to izdarīju, un vēl vairāk, es tieši ņemu savu ieguldījumu no milis () funkcijas- nebeidzamas skaitļu rindas (līdz 49 dienām vai vienalga). Labākā daļa? Tā ir tikai viena rinda.

Atiestatīšana ir hronometra faktiskā cietā daļa. Starpposma programmētājiem, ja vēl neesat to izdarījis, dodieties uz priekšu un mēģiniet to izdarīt pats, kopā ar sekundēm, minūtēm un stundām. Jūs sapratīsit, par ko es runāju.

Iesācējiem, lasiet tālāk un izbaudiet mana prāta ģēniju.

Tikai jokoju, bet risinājums, ko es izdomāju, ir diezgan glīts. Lūk, kas tas ir:

1. solis: risinājums

Atrisinājums
Atrisinājums

Tātad problēma ir atiestatīšana. Mēs vēlamies nepārtrauktu, atkārtotu skaitļu ciklu no bezgalīgas secīgu skaitļu izvades (milis () - tas pamatā skaita milisekundes vai faktiski 1,024 milisekundes, bet neatkarīgi).

Pirmā lieta, kas nāk prātā, ir izmantot atšķirību, piemēram, laiks1 -laiks2 un kavēšanās. Aizmirsti to. Lai sāktu, ir nepieciešamas vismaz sešas koda rindas un paziņojums if.

Lūk, kā to izdarīt. Mums ir ierobežojums (59). Mēs vēlamies, lai viss no 0 līdz 59 atkārtotos atkal un atkal. Kā?

Ko darīt, ja… mēs paņemtu milisa funkcijas atlikušo daļu dalot ar 59…. Bingo!

Tātad, tam vajadzētu būt šādam:

(60 [kā sākotnējā vērtība, jo ierobežojums ir 59] + milis () / 1000 [1000 milisekundes ir sekunde]) % 60

Labi, paskaidrosim. (%) vai modulis, būtībā ir tāds operators kā (+), kurš atrod atlikušo. Tāpat kā 9 % 2 = 1.

Tātad:

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

Redzi!

Tagad par detaļām.

2. solis: daļas

Daļas
Daļas

Nav daudz, vispār

  1. Jebkurš arduino
  2. Jebkurš displejs (es izmantoju 0,96 collu OLED, bet jūs varat izmantot visu, kas jums ir, tikai pārliecinieties, ka displeja displeja funkcijās ir ievietoti pareizie mainīgie.)

Tieši tā.

3. darbība: kods

Lūk, ej. Tas ir diezgan skaidri komentēts, tāpēc problēmām nevajadzētu būt. Kodā ir bibliotēkas un iniciāļi 0,96 collu OLED. Nomainiet to ar savu displeju, ja tas atšķiras.

// 0.96 OLED bibliotēkas

#iekļaut

#iekļaut

#iekļaut

#iekļaut

// 0,96 OLED inic

#define OLED_RESET 4

Adafruit_SSD1306 displejs (OLED_RESET);

int sekundes;

int minūtes;

int stundas;

void setup () {

// Vēl daži 0,96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

void loop () {

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

minūtes = (60 + milis () / 60000) % 60; stundas = (25 + milis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // izdrukāt stundu skaitu kopš displeja atiestatīšanas.print (stundas); display.print ("h:");

// izdrukāt miitu skaitu kopš atiestatīšanas

displejs.druka (minūtes);

display.print ("m:");

// izdrukāt sekunžu skaitu kopš displeja atiestatīšanas.print (sekundes); display.print ("s");

display.setCursor (0, 0);

display.print ("Hronometrs"); display.drawLine (0, 18, 128, 18, BALTS); display.display ();

}

4. darbība: pabeigšana…

Noslēgumā…
Noslēgumā…

Tātad tas ir viss! Tagad ejiet ar to, ko vēlaties. Laiks dažas olas, vai pārņemt savu apkārtni.

Sveiks, Aarush

Ieteicams: