Mündəricat:

Sadə, Praktiki Arduino Saniyəölçən: 4 Addım
Sadə, Praktiki Arduino Saniyəölçən: 4 Addım

Video: Sadə, Praktiki Arduino Saniyəölçən: 4 Addım

Video: Sadə, Praktiki Arduino Saniyəölçən: 4 Addım
Video: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, Noyabr
Anonim
Sadə, Praktiki Arduino Saniyəölçən
Sadə, Praktiki Arduino Saniyəölçən

Arduino saniyəölçənini İnternetdə axtarın. Burda olsanız, yəqin ki, bunu etmisiniz. Şəxsi təcrübəmdən deyə bilərəm ki, İnternetdəki hər hansı bir saniyəölçən ya sıfırlamadan saniyələri saymağa davam edənlər kimi ya çox mürəkkəbdir (kodda, yeni başlayanlar üçün), ya da çox sadələşdirilmiş və praktik deyil.

Siz də belə düşünürsünüz, hə? Yaxşı, nə olduğunu təxmin et. Mən bunu etdim və bundan əlavə, daxil olduğumu millis () funksiyasından alıram- sonsuz bir sıra xətti (49 günə qədər və ya hər hansı bir şeyə qədər). Ən yaxşı hissəsi? Yalnız bir sətirdir.

Sıfırlama, saniyəölçənin əsl çətin hissəsidir. Orta səviyyəli proqramçılar üçün, hələ etməmisinizsə, davam edin və bunu saniyələr, dəqiqə və saatlarla birlikdə özünüz etməyə çalışın. Nə dediyimi anlayacaqsınız.

Yeni başlayanlar üçün oxuyun və zehnimin dahiyindən zövq alın.

Yalnız zarafat edirəm, amma gəldiyim həll olduqca səliqəlidir. İşdə budur:

Addım 1: Həll

Həll
Həll

Beləliklə, problem sıfırlanır. İstədiyimiz, ardıcıl ədədlərin sonsuz bir çıxışından (millis () - əsasən milisaniyələri və ya əslində 1.024 millisaniyəni sayır, amma hər nə olursa olsun) davamlı, təkrarlanan ədəd dövrüdür.

Ağla gələn ilk şey zaman1 -zaman2 və gecikmə kimi fərqdən istifadə etməkdir. Bunu unut. Yükləmək üçün ən azı altı sətir kod və if ifadəsi lazımdır.

Budur, bunu necə edəcəyiniz. Bir məhdudiyyətimiz var (59). 0 -dan 59 -a qədər hər şeyin təkrarlanmasını istəyirik. Necə?

Bəs… millis funksiyasının qalan hissəsini 59 -a bölsək… Bingo!

Beləliklə, belə olmalıdır:

(60 [limit 59 olduğu üçün ilkin dəyər kimi] + millis () / 1000 [1000 milisaniyə saniyədir]) % 60

Tamam, izah edim. (%) və ya modul, əsasən qalanını tapan (+) kimi bir operatordur. Eynilə 9 % 2 = 1.

Belə ki:

  • qalıq (60 + 0) % 60 = 0
  • qalıq (60 + 1) % 60 = 1
  • qalıq (60 + 58) % 60 = 58
  • qalıq (60 + 59) % 60 = 59
  • qalıq (60 + 60) % 60 = 60
  • qalıq (60 + 61) % 60 = 1

Görmək!

İndi hissələr üçün.

Addım 2: Parçalar

Parçalar
Parçalar

Çox deyil, ümumiyyətlə

  1. İstənilən arduino
  2. Hər hansı bir ekran (0.96 OLED istifadə etdim, amma nə varsa istifadə edə bilərsiniz, sadəcə ekranınızın ekran funksiyalarına doğru dəyişənləri qoyduğunuzdan əmin olun.)

Bu belədir.

Addım 3: Kod

Buyurun. Çox açıq şəkildə şərh edilmişdir, buna görə heç bir problem olmamalıdır. 0.96 OLED üçün kitabxanalar və init koddadır. Fərqlidirsə onu öz ekranınızla əvəz edin.

// 0.96 OLED kitabxanaları

#daxil edin

#daxil edin

#daxil edin

#daxil edin

// 0.96 OLED Giriş

#OLED_RESETini təyin edin 4

Adafruit_SSD1306 ekranı (OLED_RESET);

int saniyə;

int dəqiqə;

int saat;

boş quraşdırma () {

// Biraz daha 0.96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

boşluq döngəsi () {

saniyə = (60 + millis () / 1000) % 60;

dəqiqə = (60 + millis () / 60000) % 60; saat = (25 + millis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // ekranı sıfırladıqdan sonra saat sayını çap edin. çap (saat); display.print ("h:");

// sıfırlandıqdan sonra dəqiqə sayını çap edin

ekran. çap (dəqiqə);

display.print ("m:");

// ekran sıfırlanandan bəri saniyə sayını yazdırın. çap (saniyə); display.print ("s");

display.setCursor (0, 0);

display.print ("Saniyəölçən"); display.drawLine (0, 18, 128, 18, BEYAZ); display.display ();

}

Addım 4: Sonu bitirin…

Sonda…
Sonda…

Deməli budur! İndi gedin onunla istədiyinizi edin. Bir az yumurta hazırlayın və ya məhəllənizi ələ keçirin.

Sağol Aarush

Tövsiyə: