Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Teasüti

    nagyúr

    válasz Imy #10169 üzenetére

    Nyomógomb épp most volt terítéken nálam, itt egy konkrét példa. :)
    Az utolsó oldalon láthatod a teljes kódot, amiben benne hagytam egy már nem használatos részletet is, ami a nyomvatartást kezeli. ;)
    Ha további magyarázatra lesz szükséged, írj bátran!

    (#10176) Imy
    Itt némi zavart érzek az erőben. Miért szeretnéd leállítani a loop()-ot? Ha azt megállítod, akkor csak reset után fog újraindulni a program. Amúgy ki tudsz lépni belőle egy sima return; paranccsal, de innentől megáll működni a processzor. Ha egy feltételes várakozás kell (feltételes program stop, ha ez ismerős), akkor azt csinálhatod egy while ciklussal, ami végtelenül fut amíg nem teljesül a feltétele. De ezekre igazán semmi szükség, hisz maga a loop() is végtelenül ismétlődik, viszont ha a gombnyomásodtól függően indítasz el feltételeket, akkor megcsinálhatod úgy, hogy egész egyszerűen átugorja a parancsokat az if-ben egészen addig, amíg nem teljesül vmeyiknek a belépési feltétele. Ilyen formában nem áll meg a program működése, mégis kvázi üresen fut a loop().

    (#10170) ecaddsell
    Pulse counter kellene frekvencia méréshez. Hardveres lehetőleg. És Arduino IDE-ben. :)

    (#10171) vargalex
    Igen, természetesen. A működő példaprogramból emeltem át a szükséges sorokat egy az egyben, természetesen a helyüknek megfelelő sorrendben elhelyezve.
    A második fülön lévő header fájl hívja meg az MPU6050.h könyvtárat, amiben meg definiálva van az MPU6050 osztály. Ez így ebben a formában simán lefordul a párhuzamosan megnyitott példaprogramban. Ötletem sincs itt miért nem. :F

  • gyapo11

    őstag

    válasz Imy #10169 üzenetére

    Nálam úgy volt, hogy a gomb benyomására egy változóba került a millis() értéke, indult egy while ciklus, ami figyelte a gomb felengedését, amikor ez bekövetkezett, akkor a jelenlegi és eltárolt millis összehasonlításából kiderült a nyomvatartási idő. Hátránya ennek a megoldásnak, hogy amíg a while fut, addig a loopban levő többi teendő nem fut, de nálam ez nem volt gond.
    Ha fontos, hogy közben a loop pörögjön, akkor kicsit bonyolultabb.
    Gomb benyomása után változóba millis, ezután olvasgatni a millist meg a gomb állapotát, 50 ms-en belül nem kell nézni a gomb felengedését, az még prell idő, utána már igen, és a felengedéskor kiszámolni a jelenlegi és a tárolt millis értékéből a nyomvatartási időt.
    Hogy mikor mit csináljon a pörgő loopban, azt egy változóval lehet vezérelni, értékétől függően pl. egy switch egy-egy ága fut. Ha a változó 1, akkor mondjuk várja a gomb benyomását. Ha benyomódott a gomb, akkor a változóba 2, ekkor várja a felengedést. Ha felengedted, akkor változóba megint 1, és ismét várja a megnyomást.
    Vagy vannak időzítő libek is, amikkel talán egyszerűbb, még nem próbáltam ilyeneket.

Új hozzászólás Aktív témák