Zitat Zitat von Micro5
result = readADC(0)*2,56/1024;

Was könnte daran falsch sein?
Hallo Micro5,

ich glaube, Du hast hier ein klassisches C-Problem. Dein Compiler rechnet in unsigned int mit 16 bit. 2,56 ist in uint16 nunmal 2 und nicht 2,56. Daraus ergibt sich ein Rechenfehler von 28%. D.h. Dein Ergebnis liegt grundsätzlich 28% niedriger als das erwartetet Ergebnis. Das wären dann bei 1,4V etwa 0,392V Fehler und ergibt eine Spannung von 1,008 V.

Es gibt drei Möglichkeiten:
1. verwende Float zum berechnen, was allerdings ein Speicheroverkill ist, oder
2. Berechne im integer Wertebereich
result = readADC(0) / 4;
3. berechen im 32 bit Wertebereich
result = (unsigned int) ((unsigned long)readADC(0) * 256/102400);

Grüsse,
Schimmi