Разница между однократным и бесконечным

const int ledPin = 12;

void setup(){
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
}

void loop(){
    if (Serial.available()) {
        light(Serial.read() – '0');
    }
    delay(500);
}

void light(int n){
    for (int i = 0; i < n; i++) {
        digitalWrite(ledPin, HIGH);
        delay(100);
        digitalWrite(ledPin, LOW);
        delay(100);
    }
}

Оскар Лян

удивительный маленький фрагмент кода, который научил меня настраивать соединение по серийному номеру. но одна часть я не понимаю полностью. Почему эта строка:

  

light (Serial.read () - '0');

сделать код запустившимся один раз, и эта линия бесконечна.

  

свет (Serial.read ());

имеет ли это что-то общее с бинарным? Я не понимаю, почему вычитание строки 0 запускает код один раз.

Спасибо в Advance!

2 голоса | спросил Anton van der Wel 15 J0000006Europe/Moscow 2017, 10:12:22

1 ответ


3

Serial.read () -'0 '

Такой код часто используется для преобразования символа в цифру (например, int).

Как если бы символ был «2», чем «2» - «0» = ascii 50 - ascii 48 = 2

Однако, если вы используете

Serial.read()

значение будет равно 50 вместо 2 .... возможно, цикл 50 раз (или от 48 до 58, для значений от 0 до 9) даст вам впечатление, что он бежит бесконечно?

ответил Michel Keijzers 15 J0000006Europe/Moscow 2017, 12:04:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132