Помогите правильно написать условие

Тема в разделе "Arduino & Shields", создана пользователем AmadeusEvg, 26 дек 2021.

  1. AmadeusEvg

    AmadeusEvg Нуб

    Есть 4-разрядный 7-сегментный индикатор и 4 кнопки. Каждая кнопка меняет свой разряд. Т.е. при нажатии на кнопку происходит суммирование ++ в определённом разряде от 0 до 9. Нужно сделать так, чтобы при нажатии на определённую кнопку полученная цифра отличалась от цифр других разрядов, т.е.:

    while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++; }

    if (цифра[1разряда] > 9) цифра[1разряда] = 0;

    Всё бы хорошо - цифры не совпадают, кроме нулей. Нули только в разрядах совпадают. Просьба помочь правильно написать условие!
     
  2. akl

    akl Гуру

    while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++;
    if (цифра[1разряда] > 9) цифра[1разряда] = 0;
    }
     
    AmadeusEvg нравится это.
  3. AmadeusEvg

    AmadeusEvg Нуб

    Спасибо, но снова есть проблема - нуль пропускается:

    if (!digitalRead(BUTTON_PIN1))
    цифра[1разряда] ++;
    while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++;
    if (цифра[1разряда] > 9) цифра[1разряда] = 0;
    }

    Это происходит из-за первой строчки: цифра[1разряда] ++; , но если её убрать, нажатие на кнопку не происходит.
     
  4. akl

    akl Гуру

    if (!digitalRead(BUTTON_PIN1)){
    цифра[1разряда] ++;
    if (цифра[1разряда] > 9) цифра[1разряда] = 0;
    }
    while(цифра[1разряда] == цифре [2разряда] || цифра[1разряда]== цифре [3разряда] || цифра[1разряда] == цифре [4разряда]) { цифра[1разряда] ++;
    if (цифра[1разряда] > 9) цифра[1разряда] = 0;
    }
     
    AmadeusEvg нравится это.
  5. AmadeusEvg

    AmadeusEvg Нуб

    akl, огромнейшее спасибо! Всё работает как надо!