Innholdsfortegnelse:

En enkel, praktisk Arduino stoppeklokke: 4 trinn
En enkel, praktisk Arduino stoppeklokke: 4 trinn

Video: En enkel, praktisk Arduino stoppeklokke: 4 trinn

Video: En enkel, praktisk Arduino stoppeklokke: 4 trinn
Video: Как прошить Arduino Pro Mini / Как прошить pro mini через arduino uno 2024, November
Anonim
En enkel, praktisk Arduino stoppeklokke
En enkel, praktisk Arduino stoppeklokke

Søk på nettet etter Arduino stoppeklokke. Du har sannsynligvis nettopp gjort det hvis du er her. Av personlig erfaring kan jeg fortelle deg at enhver stoppeklokke på internett enten er for kompleks (i kode, for nybegynnere), eller er altfor forenklet og ikke praktisk, som de som bare fortsetter å telle sekunder uten å tilbakestille.

Det tror du også, ikke sant? Vel, gjett hva. Jeg gjorde det, og dessuten tar jeg mine innspill direkte fra millis () -funksjonen- en endeløs linje med tall (til 49 dager, eller hva som helst). Den beste delen? Det er bare en linje.

Tilbakestilling er den faktiske vanskelige delen av stoppeklokken. For mellomliggende programmerere, hvis du ikke allerede har gjort det, kan du prøve å gjøre dette selv, med sekunder, minutter og timer sammen. Du skjønner hva jeg snakker om.

For nybegynnere, les videre og nyt deg i tankene mine.

Bare tuller, men løsningen jeg kom på er ganske pen. Her er hva det er:

Trinn 1: Løsningen

Løsningen
Løsningen

Så problemet er å tilbakestille. Det vi ønsker er en kontinuerlig, gjentakende syklus med tall, fra en endeløs utgang av sekvensielle tall (millis () - den teller i utgangspunktet millisekunder, eller faktisk 1.024 millisekunder, men uansett).

Det første du tenker på er å bruke forskjell, som time1 -time2 og en forsinkelse. Glem det. Det krever minst seks linjer med kode og en if -setning for å starte opp.

Så her er hvordan du gjør det. Vi har en grense (59). Vi vil at alt fra 0 til 59 skal gjentas om og om igjen. Hvordan?

Hva om … vi tok resten … av millisfunksjonen delt på 59…. Bingo!

Så det burde være slik:

(60 [som startverdi fordi grensen er 59] + millis () / 1000 [1000 millisekunder er et sekund]) % 60

Ok, la oss forklare. (%) eller modul, er i utgangspunktet en operator som (+) som finner resten. Som 9 % 2 = 1.

Så:

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

Se!

Nå, for delene.

Trinn 2: Delene

Delene
Delene

Ikke mye, i det hele tatt

  1. Enhver arduino
  2. Enhver skjerm (jeg brukte 0,96 OLED, men du kan bruke det du har, bare sørg for å sette de riktige variablene i skjermfunksjonene på skjermen.)

Det er det.

Trinn 3: Koden

Her går du. Det er ganske tydelig kommentert, så det burde ikke være noen problemer. Bibliotekene og init for 0,96 OLED er i koden. Bytt den ut med din egen skjerm hvis den er annerledes.

// 0,96 OLED -biblioteker

#inkludere

#inkludere

#inkludere

#inkludere

// 0,96 OLED Init

#define OLED_RESET 4

Adafruit_SSD1306 -skjerm (OLED_RESET);

int sekunder;

int minutter;

int timer;

ugyldig oppsett () {

// Noen flere 0,96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

void loop () {

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

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

display.clearDisplay ();

display.setCursor (0, 22); // skriv ut antall timer siden reset display.print (timer); display.print ("h:");

// skriv ut antall minutter siden tilbakestilling

display.print (minutter);

display.print ("m:");

// skriv ut antall sekunder siden tilbakestilling av display.print (sekunder); display.print ("s");

display.setCursor (0, 0);

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

}

Trinn 4: Etterbehandling …

En avslutning…
En avslutning…

Så det er det! Gjør nå hva du vil med det. Bruk noen egg, eller ta over nabolaget ditt.

Skål, Aarush

Anbefalt: