Indholdsfortegnelse:

Et enkelt, praktisk Arduino stopur: 4 trin
Et enkelt, praktisk Arduino stopur: 4 trin

Video: Et enkelt, praktisk Arduino stopur: 4 trin

Video: Et enkelt, praktisk Arduino stopur: 4 trin
Video: How to use Prototyping Shield with breadboard for Arduino 2024, November
Anonim
Et enkelt, praktisk Arduino stopur
Et enkelt, praktisk Arduino stopur

Søg på internettet efter Arduino stopur. Du har sikkert bare gjort det, hvis du er her. Fra personlig erfaring kan jeg fortælle dig, at ethvert stopur på internettet enten er for komplekst (i kode, for begyndere), eller er alt for forenklet og ikke praktisk, som dem, der bare bliver ved med at tælle sekunder uden at nulstille.

Det tror du også, ikke? Tænk hvad. Jeg gjorde det, og hvad mere er, jeg tager direkte mit input fra millis () -funktionen- en endeløs række af tal (indtil 49 dage eller hvad som helst). Den bedste del? Det er kun en linje.

Nulstilling er den egentlige hårde del af stopuret. For mellemliggende programmerere, hvis du ikke allerede har gjort det, kan du prøve at gøre dette selv med sekunder, minutter og timer sammen. Du får hvad jeg taler om.

For begyndere, læs videre og svæl i mit sinds geni.

Bare sjov, men den løsning jeg fandt på er ret pæn. Her er hvad det er:

Trin 1: Løsningen

Løsningen
Løsningen

Så problemet er nulstilling. Det, vi ønsker, er en kontinuerlig, gentagende cyklus af tal, fra en endeløs produktion af sekventielle tal (millis () - det tæller dybest set millisekunder eller faktisk 1.024 millisekunder, men uanset hvad).

Den første ting, der kommer til at tænke på, er at bruge forskel, som time1 -time2 og en forsinkelse. Glem det. Det tager mindst seks linjer med kode og en if -sætning for at starte.

Så her er hvordan man gør det. Vi har en grænse (59). Vi vil have alt fra 0 til 59 til at gentage igen og igen. Hvordan?

Hvad hvis … vi tog resten… af millis -funktionen divideret med 59…. Bingo!

Så det burde være sådan:

(60 [som startværdien, fordi grænsen er 59] + millis () / 1000 [1000 millisekunder er et sekund]) % 60

Ok, lad os forklare. (%) eller modul, er dybest set en operator som (+), der finder resten. Ligesom 9 % 2 = 1.

Så:

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

Se!

Nu til delene.

Trin 2: Delene

Dele
Dele

Ikke meget, overhovedet

  1. Enhver arduino
  2. Enhver skærm (jeg brugte 0,96 OLED, men du kan bruge hvad du end har, bare sørg for at sætte de rigtige variabler i displayets funktioner.)

Det er det.

Trin 3: Koden

Her går du. Det er ret klart kommenteret, så der burde ikke være problemer. Bibliotekerne og init til 0,96 OLED er i koden. Udskift den med din egen skærm, hvis den er anderledes.

// 0,96 OLED -biblioteker

#omfatte

#omfatte

#omfatte

#omfatte

// 0,96 OLED Init

#define OLED_RESET 4

Adafruit_SSD1306 display (OLED_RESET);

int sekunder;

int minutter;

int timer;

ugyldig opsætning () {

// Noget mere 0,96 OLED Init

display.begynder (SSD1306_SWITCHCAPVCC, 0x3C);

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

void loop () {

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

minutter = (60 + millis () / 60000) % 60; timer = (25 + millis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // udskriv antallet af timer siden nulstilling display.print (timer); display.print ("h:");

// udskriv antallet af minutter siden nulstilling

display.print (minutter);

display.print ("m:");

// udskriv antallet af sekunder siden nulstilling display.print (sekunder); display.print ("s");

display.setCursor (0, 0);

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

}

Trin 4: Afslutning …

Da afslutning…
Da afslutning…

Så det er det! Gå nu og gør hvad du vil med det. Brug nogle æg, eller overtag dit kvarter.

Skål, Aarush

Anbefalede: