2016-09-28 8 views
0

Ich versuche, Benutzereingabe vom seriellen Monitor zu erhalten, um einen Schrittmotor entsprechend der Eingabe zu drehen. Mein Code gibt jedoch den ASCII-Wert und nicht die ursprüngliche Eingabe zurück.Konvertieren von ASCII in Int in Arduino

#include <Stepper.h> 

Stepper small_stepper(steps_per_motor_revolution, 8, 10, 9, 11); 

void setup() { 
    // Put your setup code here, to run once: 
    Serial.begin(9600); 
    Serial.println("Ready"); 
} 


void loop() { 

    // Put your main code here, to run repeatedly: 
    int Steps2Take = Serial.read(); 
    Serial.println(Steps2Take); // Printing 
    if (Steps2Take == -1) 
    Steps2Take = 0; 
    else { 
    small_stepper.setSpeed(1000); // Setting speed 
    if (Steps2Take > 0) 
     small_stepper.step(Steps2Take * 32); 
    else 
     small_stepper.step(-Steps2Take * 32); 
    delay(2); 
    } 
} 
+2

https://www.arduino.cc/en/Serial/Read –

+1

https://www.arduino.cc/en/Serial/ParseInt Blöcke, die einfach schön in Ihrem Demo Fall ist, wird aber stören in echten Szenarien ... – datafiddler

+0

Weil du neu bist möchte ich anmerken, dass es möglich ist, wenn du willst, die Antwort zu akzeptieren. Es gibt einen kleinen "Tipp", der grün wird :) – Leos313

Antwort

-1

Wenn es nur ein "Typ-Konvertierung" Problem ist, können Sie so etwas wie folgt verwenden:

int a_as_int = (int)'a'; 

oder

#include <stdlib.h> 

int num = atoi("23"); //atoi = ascii to integer 

wie es war here hinweisen.

Löst es das Problem?

0

Verwenden Sie einfach die .toInt() - Funktion.

Sie sollten die Zeichenfolge aus Ihrer seriellen lesen und danach in Ganzzahl konvertieren.

Serial.print(Serial.readString().toInt());