Есть 4-разрядный 7-сегментный индикатор и 4 кнопки. Каждая кнопка меняет свой разряд. Т.е. при нажатии на кнопку происходит суммирование ++ в определённом разряде от 0 до 9. Нужно сделать так, чтобы при нажатии на определённую кнопку полученная цифра отличалась от цифр других разрядов, т.е.: while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++; } if (цифра[1разряда] > 9) цифра[1разряда] = 0; Всё бы хорошо - цифры не совпадают, кроме нулей. Нули только в разрядах совпадают. Просьба помочь правильно написать условие!
while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++; if (цифра[1разряда] > 9) цифра[1разряда] = 0; }
Спасибо, но снова есть проблема - нуль пропускается: if (!digitalRead(BUTTON_PIN1)) цифра[1разряда] ++; while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++; if (цифра[1разряда] > 9) цифра[1разряда] = 0; } Это происходит из-за первой строчки: цифра[1разряда] ++; , но если её убрать, нажатие на кнопку не происходит.
if (!digitalRead(BUTTON_PIN1)){ цифра[1разряда] ++; if (цифра[1разряда] > 9) цифра[1разряда] = 0; } while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++; if (цифра[1разряда] > 9) цифра[1разряда] = 0; }