Hallo,
ich bin gerade dabei einen Taschenrechner auf dem Arduino zu implementieren und habe folgendes Problem:
Wen ich 2 zahlen Addiere z.B. 1 + 2 kommt 99 heraus. Wo liegt der Fehler?
Quellcode:
Rechnet richtig, 49 +50 ist 99.
Du rechnest mit den Ashii-Werten der Zeichen "1" und "2" und nicht mit den Zahlen 1 und 2.
Informiere Dich mal über atoi()
Grüße Uwe
Funktioniert nicht. Es kommt folgende Fehlermeldung:
test.cpp: In function 'void loop()':
test:114: error: invalid conversion from 'int' to 'const char*'
test:114: error: initializing argument 1 of 'int atoi(const char*)'
test:122: error: invalid conversion from 'int' to 'const char*'
test:122: error: initializing argument 1 of 'int atoi(const char*)'
Soll dein "Arduino als Taschenrechner nur bis 9+9 rechnen können ?
( atoi arbeitet mit char* als Zeiger auf mehrere Buchstaben, du liest aber nur einzelne Zeichen )
Wenn du mehrere Buchstaben ( z.B. "12" ) als eine Zahl mit atoi lesen willst , musst du sie auch so speichern.
Wenn nicht, hilft dir schon int zahl1 = Serial.read() - '0'; // einfachste Umwandlung
anstelle von atoi()
hilft dir schon int zahl1 = Serial.read() - '0'; // einfachste Umwandlung
Das setzt natürlich "korrekte Eingaben" voraus.
Mit char Arrays solltest du dich langfristig trotzdem beschäftigen
Was ist der Unterschied zwischen 0 , '0' und "0" ?
Und was macht die '0' in der Zeile oben ?