ARDUINO Странности поведения переменной при выходе из цикла

ruri

✩✩✩✩✩✩✩
4 Апр 2026
4
0
Добрый день.
Работаю с ARDUIN UNO, подключил "многофункциональный модуль" (4 семисегментных индикатора и три кнопки).
Вот кусок кода.

while (k2==1) //кнопка ВВОД
{
writeNumber(b1); //вывод цифры на индикатор
if (millis () - z >= 500) //цифры перебираются при удержании к1, поэтому задержка нужна
{
z= millis();
k1 = digitalRead(BTN_PIN1); //Кнопка перебора цифр
if (b1<=4) //переменная сохраняет выбранную цифру от 0 до 5
{if (k1==0) b1++;} //цифры перебираются циклично пока не нажмётся кнопка к2
else
{ (b1=0);}
}
k2 = digitalRead(BTN_PIN2); //чтение кнопки 2 ВВОД
Serial.println(b1); //вывод в монитор порта
}
Serial.println(b1); //повторный вывод

При переборе b1 выводится и в монитор и на индикатор правильной цифрой, а при нажатии к2 и выходе из whele - b2 выводится в монитор порта квадратиками.
 

VictorArx

★★★✩✩✩✩
22 Мар 2021
680
106
Нет. </> так правильно кода оформление. Есть ли в нём ошибки укажут знатоки.

C++:
while (k2==1)
{
writeNumber(b1, b2, b3); //вывод цыфры на индикатор
if (millis () - z >= 500)
{
z= millis();
k1 = digitalRead(BTN_PIN1);
if (b1<=4)
{
if (k1==0) b1++;
}
else
{
(b1=0);
}
}
k2 = digitalRead(BTN_PIN2); //чтение кнопки 2 ВВОД
Serial.println(b1);
}
Serial.println(b1);
 
Изменено:

ruri

✩✩✩✩✩✩✩
4 Апр 2026
4
0
while (k2 == 1) {
writeNumber(b1, b2, b3); //вывод цифры на индикатор
if (millis() - z >= 500) {
z = millis();
k1 = digitalRead(BTN_PIN1);
if (b1 <= 4) {
if (k1 == 0) b1++;
} else {
(b1 = 0);
}
}
k2 = digitalRead(BTN_PIN2); //чтение кнопки 2 ВВОД
Serial.println(b1);
}
Serial.println(b1);

автоформатирование IDE вообще в 15 строк всё сделал.
я тут недавно. ткните носом как паравильно
 

ruri

✩✩✩✩✩✩✩
4 Апр 2026
4
0
мы, видимо, в разных средах пишем. поэтому и оформление разное
 

Мишутк

★✩✩✩✩✩✩
29 Мар 2025
93
38
мы, видимо, в разных средах пишем. поэтому и оформление разное
Ваш код должен компилироваться. По приведенному огрызку кода можно сделать кучу предположений. А компилирующийся пример можно вставить в WokWi и проверить. Ваш кусок - нельзя.