Keresés

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

  • zka67

    őstag

    válasz dave0825 #1243 üzenetére

    Szia, a 2. esetben, a case-s megoldásodnál kimaradtak a break; -ek :)

    A switch utasítás csak elugrik a megfelelő case ágra, és onnan folytatja a program futását. Azaz, miután lefutott a case 1 ág, mivel nincs break, ezért a case 2 ágon folytatja a futást.

    Az infrád ismétlését pedig a következőképpen tudod megszüntetni:

    Amikor jön az adat, megnézed, hogy az előző adattal megegyezik-e? Ha nem, akkor új kód, feldolgozod, ha igen, megnézed, hogy mennyi idő telt el az előző adat óta. Ha több, mint 250ms, akkor új adatként feldolgozod, ha kevesebb, akkor figyelmen kívül hagyod.

    Ezután az utolsó kódot elmented, és törlöd az eltelt időt.

  • softguner

    csendes tag

    válasz dave0825 #1243 üzenetére

    Mi lenne ha így csinálnád?

    if (irrecv.decode(&results))
    {
    irrecv.resume();
    }

    switch (results.value)
    {
    case 0x7A6E10BA:
    // lefut az utasítás sorozat amit akarsz lehet egy függvény is XY()
    results.value=0;
    break;

    case "másik gomb"
    // lefut az utasítás sorozat amit akarsz lehet egy függvény is XY()
    results.value=0;
    break;
    }

    Vagy ha csak 1 gombot akarsz használni módok változtatására, akkor ez okés, de a resuls.value változót, akkor is le kell nullázni, mert ha nem akkor folyamatosan változtatni fogja az üzemmódot, vagy teljesen fals lesz a megjelenített információ.

    Méghozzá azért, mert ez a rész.

    if(results.value == 0x7A6E10BA)
    {
    Mode++;
    }

    Ez mindig igaz lesz.

    Nagyon jó cucc amit csinálsz, remélem sikerülni fog. Amikor a ledmátrixról beszéltél bevallom őszintén nem érdekelt annyira, de ez a megjelenítő ez nagyon ötletes, és baromi jó lesz ha sikerül :)

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

Hirdetés