Hallo toraX,
wenn ich das richtig sehe, dann holst du in der Funktion get_key() ja den ADC-Wert in die Variable i.
Diese Variable hast du in der Funktion LOKAL definiert. So weit ist es noch OK.
In deiner main()-Funktion hast du eine WEITERE LOKALE i-Variable angelegt.
Es sieht so aus, dass du erwartest, dass i aus get_key() in main() den gleichen Inhalt hat.
In main() bekommst du aber den Wert, den du in get_key() über 'return taste' zurückgibst. Da taste in get_key() aber nur die Werte 0xff, 4, 3, 2, 1, und 0 annehmen kann, sollte dein write() immer nur diese Werte senden.
Um den ADC-Wert aus get_key() nach main() zu bekommen kannst du eine GLOBALE Variable ausserhalb aller Funktion anlegen.
Z.B.:
Code:unsigned int adc_wert; int main (void) { to was; atoi (adc_wert, buffer, 2); write (buffer); to was anderes; } unsigned int get_key(void) { tu hier auch was; adc_wert = ADCH; if (adc_wert < 36) taste = 4; ... return taste; }
Lesezeichen