Sisällysluettelo:

Yksinkertainen, käytännöllinen Arduino -sekuntikello: 4 vaihetta
Yksinkertainen, käytännöllinen Arduino -sekuntikello: 4 vaihetta

Video: Yksinkertainen, käytännöllinen Arduino -sekuntikello: 4 vaihetta

Video: Yksinkertainen, käytännöllinen Arduino -sekuntikello: 4 vaihetta
Video: How to use TM1637 4 digits seven segment display with Arduino 2024, Syyskuu
Anonim
Yksinkertainen, käytännöllinen Arduino -sekuntikello
Yksinkertainen, käytännöllinen Arduino -sekuntikello

Hae verkosta Arduino -sekuntikello. Luultavasti juuri teit sen, jos olet täällä. Henkilökohtaisesta kokemuksesta voin kertoa, että mikä tahansa Internetissä oleva sekuntikello on joko liian monimutkainen (koodilla aloittelijoille) tai liian yksinkertaistettu eikä käytännöllinen, kuten ne, jotka vain laskevat sekunteja ilman nollausta.

Sinäkin luulet niin, vai mitä? No arvaa mitä. Tein sen, ja lisäksi otan suoraan panokseni millis () -funktiosta- loputtomasta numerorivistä (49 päivään asti tai mitä tahansa). Paras osa? Se on vain yksi rivi.

Nollaaminen on sekuntikellon todellinen kova osa. Välitason ohjelmoijat, jos et ole jo tehnyt sitä, yritä tehdä tämä itse sekuntien, minuuttien ja tuntien kanssa. Ymmärrät mistä puhun.

Aloittelijoille, lue ja nauti mieleni nerokkuudesta.

Vitsi, mutta ratkaisu, jonka keksin, on aika siisti. Tässä on se:

Vaihe 1: Ratkaisu

Ratkaisu
Ratkaisu

Ongelma on siis nollaus. Haluamme jatkuvan, toistuvan numerosyklin loputtomasta peräkkäisten numeroiden tuotoksesta (millis () - se laskee pohjimmiltaan millisekuntia tai oikeastaan 1,024 millisekuntia, mutta mikä tahansa).

Ensimmäinen asia, joka tulee mieleen, on käyttää eroa, kuten aika1 -aika2 ja viive. Unohda. Käynnistämiseen tarvitaan vähintään kuusi riviä koodia ja if -lause.

Joten miten se tehdään. Meillä on raja (59). Haluamme, että kaikki 0-59 toistuu yhä uudelleen. Miten?

Mitä jos… ottaisimme loput… millisysteemistä jaettuna 59…. Bingo!

Pitäisi siis olla näin:

(60 [alkuarvona, koska raja on 59] + millis () / 1000 [1000 millisekuntia on sekunti]) % 60

Ok, selitetään. (%) tai moduuli, on pohjimmiltaan operaattori (+), joka löytää loput. Kuten 9 % 2 = 1.

Niin:

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

Katso!

Nyt osiin.

Vaihe 2: Osat

Osat
Osat

Ei juurikaan

  1. Mikä tahansa arduino
  2. Mikä tahansa näyttö (käytin 0,96 tuuman OLED -näyttöä, mutta voit käyttää mitä tahansa, vain varmista, että asetat oikeat muuttujat näytön näyttötoimintoihin.)

Se siitä.

Vaihe 3: Koodi

Tässä mennään. Se on selkeästi kommentoitu, joten ongelmia ei pitäisi olla. Kirjastot ja init 0,96 OLED -koodissa ovat koodissa. Korvaa se omalla näytölläsi, jos se on erilainen.

// 0,96 OLED -kirjastot

#sisältää

#sisältää

#sisältää

#sisältää

// 0,96 OLED Init

#define OLED_RESET 4

Adafruit_SSD1306 -näyttö (OLED_RESET);

int sekuntia;

int minuuttia;

int tuntia;

void setup () {

// Vielä 0,96 OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

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

void loop () {

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

minuuttia = (60 + millis () / 60000) % 60; tuntia = (25 + millis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // tulosta tuntimäärä nollausnäytöstä. print (hours); display.print ("h:");

// tulosta nollauksen jälkeen kuluneiden minuuttien määrä

näyttö. tulostus (minuuttia);

display.print ("m:");

// tulosta sekuntien määrä näytön nollaamisesta. print (sekuntia); display.print ("s");

display.setCursor (0, 0);

display.print ("Sekuntikello"); display.drawLine (0, 18, 128, 18, VALKOINEN); display.display ();

}

Vaihe 4: Viimeistely…

Viimeistely…
Viimeistely…

Joten se siitä! Mene nyt tekemään mitä haluat sen kanssa. Varaa munia tai nauti naapurustostasi.

Terveisin, Aarush

Suositeltava: