Talaan ng mga Nilalaman:

Isang Simple, Praktikal na Arduino Stopwatch: 4 na Hakbang
Isang Simple, Praktikal na Arduino Stopwatch: 4 na Hakbang

Video: Isang Simple, Praktikal na Arduino Stopwatch: 4 na Hakbang

Video: Isang Simple, Praktikal na Arduino Stopwatch: 4 na Hakbang
Video: CMOD S7 Tutorial: Learn to Make An Led Blink w/ A Digilent FPGA Board 2024, Hunyo
Anonim
Isang Simple, Praktikal na Arduino Stopwatch
Isang Simple, Praktikal na Arduino Stopwatch

Maghanap sa web para sa Arduino stopwatch. Malamang nagawa mo lang ito, kung nandito ka. Mula sa personal na karanasan, masasabi ko sa iyo na ang anumang stopwatch sa internet ay alinman sa pagiging kumplikado (sa code, para sa mga nagsisimula), o napakasimple, at hindi praktikal, tulad ng mga patuloy na nagbibilang ng mga segundo nang hindi na-reset.

Akala mo rin naman eh? Well hulaan kung ano. Ginawa ko ito, at kung ano ang higit pa, direkta kong kinukuha ang aking input mula sa pagpapaandar ng millis () - isang walang katapusang linya ng mga numero (hanggang 49 araw, o kung ano pa man). Ang pinakamagandang bahagi? Isa lang ang linya.

Ang pag-reset, ay ang tunay na mahirap na bahagi ng stopwatch. Para sa mga intermediate, programmer, kung hindi mo pa nagagawa, magpatuloy at subukang gawin ito sa iyong sarili, na magkakasama ang mga segundo, minuto, at oras. Makukuha mo ang sinasabi ko.

Para sa mga nagsisimula, basahin ang, at magsaya sa henyo ng aking isip.

Biruin mo, ngunit ang solusyon na naisip ko ay medyo malinis. Narito kung ano ito:

Hakbang 1: Ang Solusyon

Ang solusyon
Ang solusyon

Kaya't ang problema ay nagre-reset. Ang nais namin ay isang tuloy-tuloy, paulit-ulit na pag-ikot ng mga numero, mula sa isang walang katapusang output ng sunud-sunod na mga numero (millis () - karaniwang binibilang nito ang milliseconds, o talagang 1.024 milliseconds, ngunit anupaman).

Ang unang bagay na naisip ko ay ang paggamit ng pagkakaiba, tulad ng time1 -time2 at isang pagkaantala. Kalimutan mo na yan Tumatagal ng hindi bababa sa anim na linya ng code, at isang kung pahayag upang mag-boot.

Kaya narito kung paano ito gawin. Mayroon kaming isang limitasyon (59). Nais namin ang lahat mula 0 hanggang 59 na ulitin nang paulit-ulit. Paano?

Paano kung… kinuha namin ang natitira… ng pagpapaandar ng millis na hinati sa 59…. Bingo!

Kaya, dapat itong maging ganito:

(60 [bilang paunang halaga sapagkat ang limitasyon ay 59] + millis () / 1000 [1000 milliseconds ay isang segundo])% 60

Ok, magpaliwanag si lemme. (%) o modulus, karaniwang isang operator tulad ng (+) na nahahanap ang natitira. Tulad ng 9% 2 = 1.

Kaya:

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

Kita nyo!

Ngayon, para sa mga bahagi.

Hakbang 2: Ang Mga Bahagi

Ang Mga Bahagi
Ang Mga Bahagi

Hindi gaanong, lahat

  1. Kahit anong arduino
  2. Anumang display (ginamit ko ang 0.96 "OLED, ngunit maaari mong gamitin ang mayroon ka, siguraduhin lamang na ilagay ang tamang mga variable sa mga pagpapaandar ng display ng iyong display.)

Ayan yun.

Hakbang 3: Ang Code

Narito na Ito ay malinaw na malinaw na nagkomento, kaya dapat walang mga problema. Ang mga aklatan at init para sa 0.96 OLED ay nasa code. Palitan ito ng iyong sariling display kung naiiba ito.

// 0.96 OLED library

# isama

# isama

# isama

# isama

// 0.96 OLED Init

# tukuyin ang OLED_RESET 4

Display ng Adafruit_SSD1306 (OLED_RESET);

int segundo;

int minuto;

int oras;

walang bisa ang pag-setup () {

// Some more 0.96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

void loop () {

segundo = (60 + millis () / 1000)% 60;

minuto = (60 + millis () / 60000)% 60; oras = (25 + millis () / 3600000)% 25;

display.clearDisplay ();

display.setCursor (0, 22); // i-print ang bilang ng mga oras mula nang i-reset ang display.print (oras); display.print ("h:");

// print ang bilang ng mga miute mula nang ma-reset

display.print (minuto);

display.print ("m:");

// print ang bilang ng mga segundo mula nang i-reset ang display.print (segundo); display.print ("s");

display.setCursor (0, 0);

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

}

Hakbang 4: En Finalment…

En Finalment…
En Finalment…

Kaya ayun! Ngayon ay gawin mo ang nais mo dito. Oras ng ilang mga itlog, o sakupin ang iyong kapitbahayan.

Cheers, Aarush

Inirerekumendang: