Tartalomjegyzék:

Egyszerű, praktikus Arduino stopper: 4 lépés
Egyszerű, praktikus Arduino stopper: 4 lépés

Videó: Egyszerű, praktikus Arduino stopper: 4 lépés

Videó: Egyszerű, praktikus Arduino stopper: 4 lépés
Videó: Осветите свой мир (с помощью лампочек Hue), Дэн Брэдли 2024, November
Anonim
Egyszerű, praktikus Arduino stopper
Egyszerű, praktikus Arduino stopper

Keressen a weben az Arduino stopperóra. Valószínűleg csak akkor tetted, ha itt vagy. Személyes tapasztalatból elmondhatom, hogy az interneten található bármely stopper túl bonyolult (kódban, kezdőknek), vagy túl leegyszerűsített és nem praktikus, mint azok, amelyek csak másodperceket számolnak visszaállítás nélkül.

Te is így gondolod, mi? Hát találd ki mit. Megtettem, és mi több, közvetlenül a millis () függvényből veszem az inputomat- a számok végtelen sora (49 napig, vagy bármi más). A legjobb rész? Ez csak egy sor.

Az alaphelyzetbe állítás a stopper tényleges kemény része. Középhaladó, programozók számára, ha még nem tette meg, menjen előre, és próbálja meg ezt megtenni, másodpercekkel, percekkel és órákkal együtt. Megérted, amiről beszélek.

Kezdőknek olvassanak tovább, és élvezzék elmém zsenialitását.

Csak viccelek, de a megoldás, amit találtam, elég ügyes. Íme, mi ez:

1. lépés: A megoldás

A megoldás
A megoldás

Tehát a probléma az alaphelyzetbe állítás. Folyamatos, ismétlődő számciklusra vágyunk, a sorozatos számok végtelen kimenetéből (millis () - alapvetően ezredmásodperceket számol, vagy valójában 1,024 ezredmásodpercet, de mindegy).

Az első dolog, ami eszünkbe jut, a különbség használata, például az idő1 -idő2 és a késleltetés. Felejtsd el. A rendszerindításhoz legalább hat sornyi kód és egy if utasítás szükséges.

Tehát itt van, hogyan kell csinálni. Van egy korlátunk (59). Azt akarjuk, hogy minden 0 és 59 között ismétlődjön újra és újra. Hogyan?

Mi lenne, ha… a millis függvény fennmaradó részét elvonnánk osztva 59 -tel…. Bingó!

Tehát így kell lennie:

(60 [kezdeti értékként, mert a határ 59] + millis () / 1000 [1000 ezredmásodperc másodperc]) % 60

Ok, magyarázzuk el. (%) vagy modulus, alapvetően olyan operátor, mint a (+), amely megtalálja a maradékot. Mint 9 % 2 = 1.

Így:

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

Lát!

Most az alkatrészekről.

2. lépés: Az alkatrészek

A részek
A részek

Nem sokat, egyáltalán

  1. Bármilyen arduino
  2. Bármilyen kijelző (0,96 -os OLED -et használtam, de bármit használhat, csak győződjön meg arról, hogy a megfelelő változókat a kijelző megjelenítési funkcióiba helyezi.)

Ez az.

3. lépés: A kód

Tessék. Elég egyértelműen kommentált, így nem lehet probléma. A könyvtárak és az init a 0,96 -os OLED -hez a kódban vannak. Cserélje ki saját kijelzőjére, ha más.

// 0,96 OLED könyvtárak

#befoglalni

#befoglalni

#befoglalni

#befoglalni

// 0,96 OLED Init

#define OLED_RESET 4

Adafruit_SSD1306 kijelző (OLED_RESET);

int másodperc;

int perc;

int óra;

void setup () {

// Még néhány 0,96 -os OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay (); display.setTextSize (2); display.setTextColor (FEHÉR); }

void loop () {

másodperc = (60 + millis () / 1000) % 60;

perc = (60 + millis () / 60000) % 60; óra = (25 + millis () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // a kijelző visszaállítása óta eltelt órák számának nyomtatása.print (óra); display.print ("h:");

// kinyomtatja a visszaállítás óta eltelt percek számát

display.print (perc);

display.print ("m:");

// a kijelző visszaállítása óta eltelt másodpercek számának nyomtatása.print (másodperc); display.print ("s");

display.setCursor (0, 0);

display.print ("Stopper"); display.drawLine (0, 18, 128, 18, FEHÉR); display.display ();

}

4. lépés: A véglegesítés…

Befejezés…
Befejezés…

Szóval ennyi! Most pedig csinálj vele, amit akarsz. Időt egy kis tojást, vagy átveszi a környéken.

Üdv, Aarush

Ajánlott: