Hallo zusammen,
ich versuche eine String über die Serielle Schnittstelle an das Board zu senden und dort in ein integer zu wandeln. Das klappt auch einwandfrei, außer ich nehmn hohe Werte wie: 35800 (siehe Bild).
Leider habe ich keine Ahnung warum das so ist, manchmal kommt der "Fehler" bereits bei niederen Zahlen. Hoffe ihr könnt mir helfen
Mein Code:
void setup() {
Serial.begin(115200);
Serial.println("Arduino Nano Wavegen. v1.0 \n");
Serial.flush();
}
void loop() {
while (Serial.available() > 0) {
frequency = Serial.readStringUntil("\n");
Serial.print("Input: ");
Serial.print(frequency);
freq = frequency.toInt();
delay(50);
Serial.print("Frequenz: ");
Serial.println(freq);
Serial.println();
}
Moko
June 25, 2020, 2:09pm
3
Int ist definiert von −32.768 bis 32.767.
Bei Werten darüber und darunter dürften die Probleme auftreten, in diesem eigentlich Bereich nicht.
PS. Text bitte als Text posten, nicht als Bild
Die einfachsten Dinge vergisst man
Vielen Dank für die schnellen Antworten!
Habe nun als double konvertiert, um meinen Bereich abzudecken, und siehe da es funktioniert
BG,
dr_kimble
Das
dr_kimble:
Habe nun als double konvertiert,
Das ist Unsinn. Schau dir lieber mal toInt() genauer an:
The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.
Data type: long.
Außerdem gibt es auch die Standard C/C++ Konvertierungsfunktionen mit denen du viel mehr machen kannst
War nicht ganz verständlich ausgedrückt
Verwende nun diese Konversion:
The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.
Das ist mir schon klar. Da Gleitkommazahlen zu verwenden ist aber Unsinn. Es gibt auch Integer mit größeren Wertebereichen. Long und unsigned long.