INHOUDSOPGAWE:

N Eenvoudige, praktiese Arduino -stophorlosie: 4 stappe
N Eenvoudige, praktiese Arduino -stophorlosie: 4 stappe

Video: N Eenvoudige, praktiese Arduino -stophorlosie: 4 stappe

Video: N Eenvoudige, praktiese Arduino -stophorlosie: 4 stappe
Video: Arduino simuleren met Tinkercad - 2022 2024, September
Anonim
'N Eenvoudige, praktiese Arduino -stophorlosie
'N Eenvoudige, praktiese Arduino -stophorlosie

Soek op die internet na Arduino stophorlosie. U het dit waarskynlik net gedoen as u hier is. Uit persoonlike ervaring kan ek u vertel dat enige stophorlosie op die internet te kompleks is (in kode, vir beginners), of te veel vereenvoudig en nie prakties is nie, soos dié wat net sekondes tel sonder om terug te stel.

Jy dink ook so, nè? Wel, raai wat. Ek het dit gedoen, en wat meer is, ek neem direk my insette uit die millis () -funksie- 'n eindelose getalreël (tot 49 dae, of wat ook al). Die beste deel? Dit is net een reël.

Herstel is die eintlike moeilike deel van die stophorlosie. Vir programmeerders, as u dit nog nie gedoen het nie, probeer dit self, met sekondes, minute en ure saam. U sal verstaan waarvan ek praat.

Vir beginners, lees verder en geniet die genialiteit van my gedagtes.

Ek maak net 'n grap, maar die oplossing waarmee ek vorendag gekom het, is redelik netjies. Hier is wat dit is:

Stap 1: Die oplossing

Die oplossing
Die oplossing

Die probleem is dus om terug te stel. Wat ons wil hê, is 'n deurlopende, herhalende siklus, van 'n eindelose uitset van opeenvolgende getalle (millis () - dit tel basies millisekondes, of eintlik 1.024 millisekondes, maar wat ook al).

Die eerste ding wat u in gedagte hou, is om verskil te gebruik, soos time1 -time2 en 'n vertraging. Vergeet dit. Dit neem ten minste ses reëls kode en 'n if -verklaring om op te laai.

Hier is hoe u dit moet doen. Ons het 'n beperking (59). Ons wil hê dat alles van 0 tot 59 oor en oor herhaal word. Hoe?

Wat as ons die res van die millis -funksie gedeel deur 59 neem … Bingo!

Dus, dit moet so wees:

(60 [as die aanvanklike waarde omdat die limiet 59] + millis () / 1000 [1000 millisekondes 'n sekonde is]) % 60

Ok, laat ons verduidelik. (%) of modulus, is basies 'n operator soos (+) wat die res vind. Soos 9 % 2 = 1.

Dus:

  • die res van (60 + 0) % 60 = 0
  • die res van (60 + 1) % 60 = 1
  • die res van (60 + 58) % 60 = 58
  • die res van (60 + 59) % 60 = 59
  • die res van (60 + 60) % 60 = 60
  • die res van (60 + 61) % 60 = 1

Sien!

Nou, vir die dele.

Stap 2: Die onderdele

Die onderdele
Die onderdele

Glad nie veel nie

  1. Enige arduino
  2. Enige skerm (ek het die 0,96 "OLED gebruik, maar u kan alles gebruik wat u het, maak seker dat u die regte veranderlikes in die skermfunksies van u skerm plaas.)

Dis dit.

Stap 3: Die kode

Hier gaan jy. Daar word redelik duidelik kommentaar gelewer, so daar behoort geen probleme te wees nie. Die biblioteke en init vir 0,96 OLED is in die kode. Vervang dit met u eie skerms as dit anders is.

// 0,96 OLED -biblioteke

#insluit

#insluit

#insluit

#insluit

// 0,96 OLED Init

#defineer OLED_RESET 4

Adafruit_SSD1306 vertoon (OLED_RESET);

int sekondes;

int minute;

int ure;

ongeldige opstelling () {

// Nog 'n 0.96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

leemte -lus () {

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

minute = (60 + millis () / 60000) % 60; ure = (25 + millis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // druk die aantal ure sedert die terugstelling van die display.print (uur) af; display.print ("h:");

// druk die aantal minute sedert herstel

vertoon.afdruk (minute);

display.print ("m:");

// druk die aantal sekondes sedert die terugstelling van display.print (sekondes) af; display.print ("s");

display.setCursor (0, 0);

display.print ("stophorlosie"); display.drawLine (0, 18, 128, 18, WIT); vertoon.display ();

}

Stap 4: Afwerking …

Afwerking …
Afwerking …

So dit is dit! Gaan doen daarmee wat u wil. Neem 'n paar eiers, of neem jou omgewing oor.

Groete, Aarush

Aanbeveel: