Почему эти два значения не равны на Arduino?

Я делаю маленький Arduino двоичный калькулятор.

У меня есть код запустить небольшую математическую задачу: ✓

Я преобразовываю ответ из десятичной в двоичную: ✓

Я перебираю двоичный ответ с помощью цикла for и включаю светодиоды на макете, чтобы отобразить ответ: ✗

//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]);
}
2

Другие решения

Вы должны учесть, что в C char — это не что иное, как псевдоним int, поэтому приведение char к int является неоправданным. Таким образом, проблема в том, что вы приводите символ «1» или «0» к его эквиваленту int (на самом деле это код ascii). Вы должны преобразовать символ в действительное целое число (вычитая 48 в символ в диапазоне 48 — 57, вы получите десятичное преобразование символа) или просто сравнив его со значением символа (так myStr[i-2] == '1')

0

По вопросам рекламы [email protected]