2016-09-28 1934 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());