Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Arduino Nano: počítadlo otáček s děličkou
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Celeron



Založen: Apr 02, 2011
Příspěvky: 19737
Bydliště: Nový Bydžov

PříspěvekZaslal: st červenec 23 2025, 19:41    Předmět: Citovat

Nejspíš jsi zapomněl, že sprintf () , tak jak jsi to napsal nepočítá s nulami vlevo, takže třeba číslo 42 zobrazí jen dvě číslice na desítkách a jednotkách a zbytek na displeji ve vyšších řádech zůstane nezměněný z předchozího čísla. O pomalosti a zabrání mnohem větší paměti se u tyhle jednoduchosti bavit nemá cenu ale u složitějších projektů se s tím může narazit.
_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
samec



Založen: Dec 19, 2017
Příspěvky: 5550

PříspěvekZaslal: čt červenec 24 2025, 13:56    Předmět: Citovat

pardon
kód:
char dekadicky[8];

sprintf(dekadicky,"%08d",value");
for(char i=0; i <=8; i++) sendToMAX7219(i, dekadicky[i] - '0');  // ;-)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 2620
Bydliště: Česká Lípa

PříspěvekZaslal: čt červenec 24 2025, 14:49    Předmět: Citovat

Máte tam chybu tzv. "přetečení bafru" jako vyšitou.

// 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[i] - '0');

Takže správně by to mělo být takto
kód:
char dekadicky[9];
sprintf(dekadicky,"%08d",value);
for (char i=0; i<8; i++) sendToMAX7219(i, dekadicky[i] - '0');
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 19737
Bydliště: Nový Bydžov

PříspěvekZaslal: pá červenec 25 2025, 22:50    Předmět: Citovat

No jestli není pro číslice lepší ten způsob, co jsem našel na netu.
Sprintf na texty budiž ale to není tazatelův problém.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Roman-W



Založen: May 29, 2013
Příspěvky: 50

PříspěvekZaslal: so červenec 26 2025, 18:44    Předmět: Citovat

Celeron napsal(a):
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.


Děkuji funguje to Smile

prozatím to mam zapojeno viz obrázek https://ibb.co/Z5kK4BB
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
samec



Založen: Dec 19, 2017
Příspěvky: 5550

PříspěvekZaslal: so červenec 26 2025, 20:31    Předmět: Citovat

Roman-W napsal(a):
Děkuji funguje to Smile
Isto?
A jak rýchlo to funguje?
Si si istý, že pri vysokých otáčkach to zaráta všetky pulzy? Question Exclamation
Celeron napsal(a):
kód:
...
  delay(5); // stabilizace
...
Právník Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 19737
Bydliště: Nový Bydžov

PříspěvekZaslal: ne červenec 27 2025, 16:59    Předmět: Citovat

Samec, Roman se nezmínil, jestli použil ten svůj prvotní FW, co napodobuje mechanický počítadlo a co jsem mu k tomu připsal předděličku osmi a nebo jestli ten zgruntu nově napsaný FW, co jsem mu poslal, kde je jen jeden počítací registr a je tam použit ten delay 5.
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.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.23 sekund