2016-09-28 855 views
0

我正在尝试从串行监视器获取用户输入,以根据输入来转换步进电机。但是,我的代码返回ASCII值而不是原始输入。在Arduino中将ASCII转换为int

#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块,这是在您的演示情况刚刚好,但会在真实情况下的干扰... – datafiddler

+0

因为你是新的,我想说,如果你愿意,可以接受的话,答案是可以接受的。有一点“小费”会变成绿色:) – Leos313

回答

-1

如果它仅仅是一个 “类型转换” 的问题,你可以使用这样的事情:

int a_as_int = (int)'a'; 

#include <stdlib.h> 

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

,因为它指出here

它解决了问题吗?

0

只需使用.toInt()函数。

您应该从串口读取字符串,然后将其转换为整数。

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