Osztás

Már említettem, hogy azért szeretek mikrokontrollert programozni, mert kihívás. Bele kell férnie a lefordított programnak mondjuk 2kB-ba. A létező legköltségesebb művelet mikrokontrolleren az osztás, és a törtszámok (float, hát még a double). És akkor jön a következő probléma: Van egy ultrahangos távolságmérőm, azt méri hány us-en belül ér vissza belé a hang. Ehhez ugye hangsebességgel kell számolni, ami az adatlap szerint 340 m/s. Na most így távolság = us-ok száma / 58.82. Ezzel egy kis baj van, a hang sebessége 20 Celsius fokos levegőben 343,2 m/s. Sőt, igazából erősen hőmérsékletfüggő, de ez most lényegtelen. Ez így viszont 58,275. Tudom nem sok eltérés, de kis távolságoknál kifejezetten kemény %-os eltérés. Na és most jön a feketeleves, az osztás. Egy kis osztás, egy kis átalakítás szöveggé, és máris 162%-ban van tele a 2kB. Ciki. Egyetlen kerülőpont a két egész szám osztása, ezt az általános iskolából ismert módon csinálja meg, a végén lesz egy hányados, és egy maradék. Vagyis egy egészrész és egy törtrész a kimeneten, két darab int. Viszont így ugye 58-al kötelező számolni, ami hangsebességre vetítve 344,8 m/s. Ciki, de nincs más lehetőség, úgy néztem. Szóval kicsit pontatlan, de lineáris távolságmérés.

Comments (2) -

  • Ezért tanultál numerikus matekot, nem? LaughingLaughingLaughing
  • Pontosan Smile

Add comment

Loading