2014-01-09 77 views
2

我正在製作一個小型的arduino二進制計算器。爲什麼這兩個值在Arduino上不相等?

我有代碼運行一些小數學問題:✓

我將答案從十進制轉換爲二進制:✓

我通過for循環循環二進制答案,並打開面包板上的LED指示燈以顯示答案:✗

//First led in pin 2 
void setup() 
{ 
    Serial.begin(9600); 
} 
//I have the code run some little math problem:Check 
int a=2; 
int b=5; 
int answer=b-a; 


int myNum = answer; 
void loop(){ 
//I convert the answer from decimal to binary:Check 
int zeros = 8 - String(myNum,BIN).length(); 
String myStr; 
for (int i=0; i<zeros; i++) { 
    myStr = myStr + "0"; 
} 
myStr = myStr + String(myNum,BIN);   
Serial.println(myStr); 

//I loop through the binary answer with a for loop 
//and power on LEDs on a bread board to display the answer:Not check 

for(int i=2;i<=9;i=i+1){ 

//This part doesn't work 

if(int(myStr[i-2])==1){ 
     digitalWrite(int(i), HIGH); 
    }else{Serial.println(myStr[i-2]);} 
} 
while(true){} 
} 

由於某種原因,它說INT(myStr的[I-2)是在您的幫助絕不等於1

感謝。

回答

2

int()轉換很可能不會做你認爲的事情。它不會將數值字符串的值轉換爲二進制值。相反,您可能需要檢查字符串中的值是否爲ASCII數字。

if(myStr[i - 2] == '1') 
//     ^^^ single quotes to specify character value. 
{ 
    digitalWrite(int(i), HIGH); 
} 
else 
{ 
    Serial.println(myStr[i - 2]); 
} 
0

你應該考慮在C中,char只不過是一個int的別名,所以將一個char轉換爲int是一個無操作。所以問題在於你正在將字符'1'或'0'轉換爲其等價的int(其實際上是ASCII代碼)。您應該將char轉換爲有效的int(通過將48減去48到48-57範圍內的char來獲得char的十進制轉換),或者僅對char值進行檢查(所以myStr[i-2] == '1'

相關問題