Pepa z depa píše:Za A je správně. Prostě při zmačknutí na libovolnou dobu to "přeřadí" (asi bych spíš měl psát "zrychlí") o jeden stupeň (změní PWMduty) a program bude čekat na puštění tlačítka, (samozřejmě počítám s tím, že pokud se vysílač ve chvíli řazení "odkloní" mimo vyzařovací úhel a pak se zase vrátí tak to bude jako kdyby se tlačítko zmačklo 2x). Po puštění tlačítka motor pojede dál zvolenou rychlostí.
Aby to řadilo "samo" nahoru, nebo dolů bych řešil časovou smyčkou s přičítáním nebo odečítáním do proměnné, ale to nechci. Na zastavení bude samostatné tlačítko.
Jenom tak pro informaci - dálkové ovladače používají takovou malou fintu: máme tlačítka, která se neopakují - třeba tlačítka pro přepínání programů a tlačítka, která se opakují - třeba tlačítka pro hlasitost (čím déle držím, tím více to řve)
Ovladače mají na konci kódu vyhrazeny dva bity - první je příznak pro opakování (pokud je zde 1, pak při každém přijetí kódu inkrementuj hlasitost bez ohledu na to co bylo předtím), druhý je debouncer nebo jak to nazvat. Při prvním stisku je v něm 0 a při druhém stisku je v něm 1. Informace se udržuje ve statické paměti často držené kondenzátorem jen krátkou dobu. V praxi to znamená že se přijímač podívá, jestli stejný kód přijal i předtím a pokud ano, tak kód ignoruje, jinak jej použije. Po nějakém timeoutu kdy přijímač nepřijal žádný kód, tak smaže registr předchozího přijatého znaku.
Tím se tak jako samo od sebe vyřeší to odklonění a přiklonění ovladače.
... ale vyžaduje to, aby vysílač měl k dispozici nějakou paměť, která přežije alespoň pár sekund bez napájení. Možná jestli picaxe v deep sleep módu??
Za pravopisné chyby v této zprávě může moje učitelka češtiny.