Orodha ya maudhui:

Saa Saa rahisi ya Vitendo ya Arduino: Hatua 4
Saa Saa rahisi ya Vitendo ya Arduino: Hatua 4

Video: Saa Saa rahisi ya Vitendo ya Arduino: Hatua 4

Video: Saa Saa rahisi ya Vitendo ya Arduino: Hatua 4
Video: Сервомотор управления с нажимом 2 кнопки с Arduino 2024, Novemba
Anonim
Saa Saa rahisi ya Vitendo ya Arduino
Saa Saa rahisi ya Vitendo ya Arduino

Tafuta wavuti kwa saa ya saa ya Arduino. Labda umeifanya tu, ikiwa uko hapa. Kutoka kwa uzoefu wa kibinafsi, ninaweza kukuambia kuwa saa yoyote ya wavuti kwenye mtandao ni ngumu sana (kwa kificho, kwa Kompyuta), au ni njia rahisi sana, na sio ya vitendo, kama zile ambazo zinaendelea kuhesabu sekunde bila kuweka tena.

Unafikiria hivyo pia, eh? Vizuri nadhani nini. Nilifanya, na ni nini zaidi, mimi huchukua maoni yangu kutoka kwa millis () kazi- safu isiyo na mwisho ya nambari (hadi siku 49, au chochote). Sehemu bora? Ni mstari mmoja tu.

Kuweka upya, ndio sehemu ngumu ya saa ya saa. Kwa wa kati, waandaaji programu, ikiwa haujafanya hivyo, endelea na jaribu kufanya hii mwenyewe, kwa sekunde, dakika, na masaa pamoja. Utapata kile ninachozungumza.

Kwa Kompyuta, soma, na ufurahie akili ya akili yangu.

Ninatania tu, lakini suluhisho nililokuja nalo ni nadhifu sana. Hivi ndivyo ilivyo:

Hatua ya 1: Suluhisho

Suluhisho
Suluhisho

Kwa hivyo shida ni kuweka upya. Tunachotaka ni mzunguko unaoendelea, wa kurudia wa nambari, kutoka kwa pato lisilo na mwisho la nambari mfululizo (millis () - kimsingi inahesabu milliseconds, au kwa kweli millisecond 1.024, lakini chochote).

Jambo la kwanza linalokujia akilini ni kutumia tofauti, kama time1 -time2 na kuchelewesha. Sahau hiyo. Inachukua angalau mistari sita ya nambari, na taarifa ikiwa boot.

Kwa hivyo hapa ni jinsi ya kuifanya. Tuna kikomo (59). Tunataka kila kitu kutoka 0 hadi 59 kurudia tena na tena. Vipi?

Je! Ikiwa … tulichukua salio… ya kazi ya millis imegawanywa na 59…. Bingo!

Kwa hivyo, inapaswa kuwa kama hivyo:

(60 [kama thamani ya awali kwa sababu kikomo ni 59] + millis () / 1000 [milisekunde 1000 ni ya pili])% 60

Ok, lemme eleza. (%) au moduli, kimsingi ni mwendeshaji kama (+) anayepata salio. Kama 9% 2 = 1.

Kwa hivyo:

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

Tazama!

Sasa, kwa sehemu.

Hatua ya 2: Sehemu

Sehemu
Sehemu

Sio mengi, hata kidogo

  1. Arduino yoyote
  2. Onyesho lolote (nilitumia 0.96 OLED, lakini unaweza kutumia chochote ulicho nacho, hakikisha tu kuweka vigeuzi sahihi katika kazi za onyesho la onyesho lako.)

Hiyo ndio.

Hatua ya 3: Kanuni

Hapa kuna kwenda. Imetolewa maoni wazi, kwa hivyo haipaswi kuwa na shida. Maktaba na init ya 0.96 OLED iko kwenye nambari hiyo. Badilisha na maonyesho yako mwenyewe ikiwa ni tofauti.

// 0.96 maktaba ya OLED

# pamoja

# pamoja

# pamoja

# pamoja

// 0.96 OLED Init

#fafanua OLED_RESET 4

Maonyesho ya Adafruit_SSD1306 (OLED_RESET);

sekunde int;

dakika;

masaa kadhaa;

usanidi batili () {

// Baadhi ya 0.96 OLED Init

onyesha. kuanza (SSD1306_SWITCHCAPVCC, 0x3C);

onyesha wazi Cleplay (); onyesha.setTextSize (2); onyesha.setTextColor (NYEUPE); }

kitanzi batili () {

sekunde = (milimita 60 + () / 1000)% 60;

dakika = (milimita 60 + () / 60000)% 60; masaa = (25 + millis () / 3600000)% 25;

onyesha wazi Cleplay ();

Kuweka Mshale (0, 22); // chapisha idadi ya masaa tangu onyesha upya.print (masaa); onyesho.print ("h:");

// chapisha idadi ya miuti tangu upya

onyesho.print (dakika);

onyesho.print ("m:");

// chapisha idadi ya sekunde tangu onyesha upya.print (sekunde); onyesho.print ("s");

onyesha.setCursor (0, 0);

onyesho.print ("Stopwatch"); onyesha.drawLine (0, 18, 128, 18, WHITE); onyesha.display ();

}

Hatua ya 4: Kumaliza…

Kukamilisha…
Kukamilisha…

Kwa hivyo ndivyo ilivyo! Sasa nenda fanya unachotaka nayo. Wakati mayai, au chukua eneo lako.

Heri, Aarush

Ilipendekeza: