Arduino Nano: počítadlo otáček s děličkou
Moderátor: Moderátoři
Proč mi nemůže všechno chodit hned ?!!
Kód: Vybrat vše
char dekadicky[8];
sprintf(dekadicky,"%08d",value");
for(char i=0; i <=8; i++) sendToMAX7219(i, dekadicky[i] - '0'); // ;-)// Tady máte definovaný bafr jen pro 8 bajtů, platné indexy bafru jsou od 0 do 7.
char dekadicky[8];
// Tady do něj zapisujete 9 bajtů, protože sprintf automaticky za 8 znaků čísla
// doplňuje devátý bajt což je zakončení řetězce (bajt s hodnotou 0) a ten bajt s hodnotou 0
// se zapisuje za konec bafru. Záleží na tom co bude ležet v paměti za koncem bafru.
// V závislosti na tom co tam bude se to nemusí projevit a nebo to může hrábnout
// do zásobníku a způsobit paseku v nepředvídatelném chování programu třeba na jiném místě.
sprintf(dekadicky,"%08d",value);
// Cifry posíláte po znacích tj. mělo by to být bez zakončení.
// Takže namísto i<=8 by mělo být i<8, protože 8 znaků
// je v bafru na indexech od 0 do 7.
for (char i=0; i<=8; i++) sendToMAX7219(i, dekadicky - '0');
Takže správně by to mělo být takto
Kód: Vybrat vše
char dekadicky[9];
sprintf(dekadicky,"%08d",value);
for (char i=0; i<8; i++) sendToMAX7219(i, dekadicky[i] - '0');Děkuji funguje toCeleron píše:Hodně tady mudrujte, tazatel chtěl upravit původní program aby jen dělil osmi.
Samo že se to dá napsat elegantněji, jeden kotouček 8 výřezů, dva fototrandy.
To načítání pulzů mám v počítadle odzkoušený s magnetickým n-codérem 100 pulzů na otáčku. U magneťáku se nemusí vůbec řešit zákmity co mají fototranzistory.
U tohodle je jen 8 zářezů co generují kvadraturní signál (A, B, 90° fázový posun). Rozklad registru counter na řády jsem nikdy nezkoušel ale našel jsem to na netu. Zapojení stejný jako původní. Bez záruky, nemám moc času se v tom rejpat. Asi by bylo lepší přepojit to na využití přerušení a došlechtit tam ochranu proti zákmitům.
prozatím to mam zapojeno viz obrázek https://ibb.co/Z5kK4BB
Isto?Roman-W píše:Děkuji funguje to
A jak rýchlo to funguje?
Si si istý, že pri vysokých otáčkach to zaráta všetky pulzy?
Celeron píše:Kód: Vybrat vše
... delay(5); // stabilizace ...
Kolik asi tak zvládne obsluha navíječky s ručním vedením drátu tedy bez šnekovýho vedení a reverzací na konci cívky? Odhaduju že tak maximálně 100-120 RPM. Zanalyzuj si časy trvání loop a zjistíš, že s těma osmi výřezy by počítadlo zvládlo 10 - 12 x tolik.
Proč mi nemůže všechno chodit hned ?!!