Vzhledem ke skutečnosti, že Arduino umí pracovat s real čísly stačí u děliče použít libovolné dva odpory tak, aby při maximálním vstupním napětí nepřesáhlo napětí za děličem referenční napětí převodníku a výsledek z převodníku vynásobit kalibrační konstantou zjištěnou experimentálně. Doporučuji nastavit interní referenci - analogReference(INTERNAL), ta je u Atmega 328P cca. 1,1V - je tedy potřeba počítat s jiným dělícím poměrem děliče. Pro ještě vyšší stabilitu lze použít externí zdroj referenčního napětí (1,25V) - analogReference(EXTERNAL). Toto nelze jednoduše použít pro Arduino mini, kde není pin vyveden na konektor a musí se opatrně připájet přímo na vývod procesoru.
"stačí u děliče použít libovolné dva odpory"
To rozhodně není pravda. Je třeba taky vzít v úvahu proud jimi protékající, obzvlášť v případě napájení z baterie. Na jedné straně řeší v článku úsporné režimy a baterii mu mezitím může snadno vybít napěťový dělič pro zjišťování stavu baterie. :-) Ono vůbec v případě, že to chci napájet z baterie a zároveň baterii šetřit, není dobrý konstruktérský přístup mít tam natvrdo připojený odporový dělič.
Reálný čísla jsou stejně pitomý nápad, jak tam dynamicky alokovat RAMku nebo používat printf(). Že něco podporuje kompilátor a knihovna ještě neznamená, že to můžu vesele používat.
Jednou jsem opravoval nějaký cizí program na AVR a jeden task trval moc dlouho. Začal jsem do toho vrtat a ono tam bylo zpracování hodnoty z ADC přes float (tuším nějaký násobení intu zlomkem a pak převod na int), naprosto primitivní věc. Zasekalo se to tam na cca 12ms. Přepsáním na práci s intem byl najenouu čas celýho tasku 0,5us a program se zmenšil o 1200B. A to byl jeden jediný řádek...
Připomínám, že u low power se hraje o rychlost, zhoršuje to dost podstatně poměr spí/bdí a FLASH je lepší využít jinak.
Mne občas překvapí, že někteří mladší kolegové neumí počítat s pevnou řádovou čárkou. V dávných dobách to byl zcela běžný postup. Ale dnes jak vidí int tak si myslí, že to nutně jsou celá čísla. Když potřebují počítat na dvě desetinná místa, tak prostě použijí float. Zrovna u napětí baterie bude stačit i pitomý byte se 4 bity před a 4 za desetinou tečkou. Ta atmega má int 16 bitů, takže dostatečná přesnost i na násobení.
A potvrzuji i vaše tvrzení: setkávám se s tím, že někteří lidé nevidí rozdíl v tom, zda danou věc podporuje procesor, nebo jen překladač.