Мерцание у схемы подключения 7-сегментных индикаторов

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Mik, 28 фев 2012.

  1. Mik

    Mik Нуб

    Доброго времени суток. Я прочёл вики. Собрал, всё работает. Добавил ещё два индикатора (получился 4-х разрядный индикатор), работает, но одна проблема в том что мерцает при быстром изменении цифр, особенно у больших чисел, например с 1000, даже с 10 заметно, но не критично.
    Код (Text):
    int clock_pin = 6; // тактовая частота
    int reset_pin = 7; // сброс счетчика

    void setup(){
      pinMode(clock_pin, OUTPUT);
      pinMode(reset_pin, OUTPUT);
    }

    void shownumber(int num){
      digitalWrite(reset_pin, HIGH);
      digitalWrite(reset_pin, LOW);
      while(num--){
        digitalWrite(clock_pin, HIGH);
        digitalWrite(clock_pin, LOW);
      }
    }

    void loop(){
      for(int i=1000; i<9999; i++){
        shownumber(i);
        delay(100);
      }
     
    От 1000 очень заметно сильное мерцание у цифр которые не насчитываются, например, самый левый индикатор, который начинается с 1, почти превращается в ноль из-за мерцания и глаза режет. Помогите как устранить эту проблему? может конденсатор куда добавить? или есть возможность увеличить тактовую частоту контроллера?
    p.s. я в курсе, что это мерцание из-за цикла while(num--){...}
     
  2. Корней

    Корней Гик

    Мерцание у вас из-за delay(100). Вы каждые 100 миллисекунд сбрасываете счетчики на 0. Самый левый индикатор толком не успевает вам ничего другого показать.
     
  3. Mik

    Mik Нуб

    спасибо за помощь, я разобрался )