Давайте подумаем о том, что делают ваши функции.
Serial.available () возвращает количество байтов, доступных в буфере приема.
Serial.parseInt () читает любую цифру допринимается нецифровый символ или он истекает, если в течение 1 секунды не получено ни одной цифры (по умолчанию)В этом случае он возвращает 0.
Таким образом, в цикле while вы ждете, пока что-то окажется в приемном буфере, проверяя Serial.available() > 0.
Вы вводите 100 (без окончания строки). Теперь, когда что-то находится в приемном буфере, а varCounter равен 0, вы выполняете varX = Serial.parseInt();
parseInt через тайм-аут через 1 секунду и возвращает 100, которые были получены в течение этой 1 секунды.
100 сохраняется в varX, а varCounter увеличивается на 1.
Теперь вы выполняете varY = Serial.parseInt();
Поскольку вы, скорее всего, не ввели другой номер в течение секунды, это приведет к истечению времени ожидания, и вы 'сохранит 0 в переменной.
Завершите свой номер нецифровым символом. Например, выбрав конец строки в последовательном мониторе или отправив новую строку или возврат каретки из кода Python. Или любой другой нецифровый символ. Таким образом, Arduino узнает, что полное целое число получено, и ему не нужно ждать, пока не истечет время ожидания.
Если вы хотите, чтобы ваш код ожидал вашего следующего ввода вечно, отметьте Serial.available > 0
перед следующим вызовомдо parseInt
. Вы уже прочитали каждый номер из буфера приема, поэтому вызов parseInt
сразу не имеет смысла, если вы точно не знаете, что в течение секунды получите другой номер.