植木算 -Wikipedia

 Arduino(ATmega328や32U4)のADCはAREFで与えられた基準電圧を0〜1023の値で取得できる。何も考えずに分解能10bit、1024で割っていたが本当は1024-1だった。
※追記:なんか考えてたら分解能による限界のような気もしてきましたがいちおうこのままで出しておきます
 
やばい。とある装置は今日持っていったばっかりで手元にないので検算してみる。ツッコミ大歓迎。

※追記 2021.9.5
23.7 ADC Conversion
Result "0x000 represents analog ground, and 0x3FF represents the selected reference voltage minus one"
10年誤解してた。÷1024でいいんだ。ォァー


AREFが1.1V(INTERNAL)、3.3V(EXTERNAL)、5V(EXTERNAL)の場合の1ステップあたりの電圧を計算した。有効数字は6桁で計算。

1.1V ÷ 1024 = 1.07422mV (誤り) ×1000すると1.07422V
1.1V ÷ 1023 = 1.07527mV (正しい) ×1000すると1.07527V
※1023が示す電圧の範囲は、1.07527V〜1.10000V

1.1Vで 1.05mVの差

3.3V ÷ 1024 = 3.22266mV (誤り) ×1000すると3.22266V
3.3V ÷ 1023 = 3.22581mV (正しい) ×1000すると3.22581V
※1023が示す電圧の範囲は、3.22581V〜3.30000V

3.3Vで 3.15mVの差

5.0V ÷ 1024 = 4.88281mV (誤り) ×1000すると4.88281V
5.0V ÷ 1023 = 5.00489mV (正しい) ×1000すると4.88759V
※1023が示す電圧の範囲は、4.88759V〜5.00000V

5.0Vで 4.78mVの差

今回はAREFで3.3Vを使用、LM35DZは1℃あたり10mV。
10〜50℃あたりで使用することを考えると、100mVから500mVを観測することになる。
値が大きいほど誤差は大きくなるので、500mVで考える。

誤ったプログラム 500mV ÷ 3.22266mV = 155.15.. 表示値は156 (切り上げだから)
正しいプログラム 500mV ÷ 3.22851mV = 154.87.. 表示値は155になるはず

 156(誤った値) × 3.22581mV(正しい1ステップあたりの電圧) = 503.226mV
その差 3.226mV → 間違ったプログラムでは50℃付近で約0.3℃高く表示される。

で、いま使ってるセンサLM35DZの誤差は25℃付近で±1.5℃、Typ±0.6℃。グレードが低いのは承知の上で使っているので±2℃程度は気にしない。

ということで室温の範囲内なら問題ないでしょう。