belgarat píše:S prominutim, ten program je napsany dost zvlastne, mam-li byt kulantni. Vsimni si, ze mas pouze 2 stavy. V jednom jsou serva 40/45, v druhem 20/30. Kdyby puvodni autor zvolil pro zapis do EEPROM cislo stavu, a pozadovane pozice serv zapsal do nejake konfigurace nebo - kdyz uz musi copy-pastovat radky pouzival konstanty, stacilo by zmenit definice poloh na jednom miste. A navic by informace v EEPROM (stav #1, stav #2) platila pro jakekoliv prirazeni poloh.
No tak on ten soft nebyl puvodne urcen ke zverejneni a nebyl ani duvod ho nijakym zpusobem ladit, tak jak je, funguje, byt to neni zadna programatorska krasa, to uznavam. Vznikl prostym zkopirovanim funkcniho kusu pro jedno servo pro vsechna dalsi (to je, myslim, dost videt
). Zapis do EEPROM je udelany tak, jak je, protoze kazde servo ma svou vlastni dvojici stavu, ktera neni pouzitelna pro ostatni (kvuli ruznemu umisteni serva pod vymenou, podle ruzneho uchyceni ramene na ose apod.), a jak jsem je nastavil v te male casti, tak jsme to pastnul do vysledneho kodu. A ano, slo by to udelat polem promennych, ale proc? Za dobu provozu (asi 2 roky, pokud se nemylim), jsem je nemenil...
belgarat píše:Nesouvisi s nefunkcnosti serva, ale ten komentar u "delay" je hloupost. Servo1.write(45) posle instrukci "postav se na uhel 45" a servo tam dojede jak muze nejrychleji, jinak to jaksi neumi. Ten delay zvysuje prodlevu mezi posunem serva1 a serva2, rozhodne nemeni RYCHLOST POSUNU serva1. To bys musel jinak - vystavit o par stupnu jinak nez ted - pockat - zas o par stupnu jinam - pockat. Az bys dosahl koncove pozice.
Ja uz si to presne nepamatuju, ale mam pocit, ze ten koment tam je jeste z varianty, ve ktere se servo prestavovalo cyklem, nez mi doslo, ze rizeni rychlosti prestavovani vymeny je pro me zbytecny luxus.
belgarat píše:Dal bych se zamyslel nad moznymi prekmity tlacitka Button1State. A naposledy, behem prestavovani serv (2x delay) je arduino mrtve - nereaguje na pripadne rozpojeni/sepnuti tlacitka. Ver mi, ze za provozu te bude 0,6sec mrtvola opravdu dost otravovat
Prekmity ma cenu resit v momente, kdy tam neni delay, pokud tam delay je, tak arduino zareaguje na prvni stisk, prekmity by mu dorazily az behem delaye, kdy je, jak pises, mrtve; to jsem resil u Freduina. Prehozeni vymeny za 200 ms mi nepripada zadna katastrofa, pri ovladani tlacitky ti normalne 200 ms ani nestaci k tomu, abys presunul prst z jednoho na druhe.
amirinda píše:tak zas problém s nastavením serv, pokud v codu pohnu hodnotama abych nastavil serva jak potřebuji, tak přestanou fungovat a nevím proč
Když místo hodnot 45 a 25 dám třeba 40 a 20 tak už se serva nehýbou...
Pro tenhle ucel je na zacatku setupu podminka pro zapis novych hodnot do eeprom. Kdyz zmenim krajni hodnotu pro servo (nebo serva), zmenim i hodnotu na adrese 1024 tak, aby vyhovela podmince, pak se pri startu programu cely list nejdrive zapise do eeprom.
JP