Помогите со скетчем(опыт 13 из матрешки)

Тема в разделе "Arduino & Shields", создана пользователем AvalonE2010, 28 авг 2014.

  1. AvalonE2010

    AvalonE2010 Нуб

    Здравствуйте, помогите пожалуйста найти ошибку в коде. Опыты из набора матрешки в начале делаю сам, потом смотрю как сделано в описании разарботчиками, поэтому у меня немного не похоже на то что в методичке. Суть проблемы в том что спустя некоторое время после запуска программы 7-и сегментный индикатор перестает отображать корректно цифры. Выглядит это так - некоторое время цифры показываются как надо(до 160 примерно), потом все элементы начинают гореть в половину силы и с равным интервалом времени загорается ярким светом то верхний правый диод, то все диоды вместе.
    Скетч:
    Код (Text):
    //=============================================
    //ПРОГРАММА СЕКУНДОМЕР
    //=============================================
    #define FERST_SEGMENT_PIN  2 //Начальный пин
    #define PINS              7 //Всего пинов

    //=============================================
    byte NumberSegments[] = {
      0b01110111,
      0b01000100,
      0b01101011,
      0b01101110,
      0b01011100,
      0b00111110,
      0b00111111,
      0b01100100,
      0b01111111,
      0b01111110}; //Массив в котором содержатся числа в битовом представлении. В каждом
    //читсле закодирован номер светодиода - пин который мы либо включаем либо выключаем

    int LastTime = millis();  //Предыдущее время
    int value    = 0;        //Число которое выводим
    //=============================================

    void setup()
    {

      //Инициализация выходов микроконтролера
      for(int i = FERST_SEGMENT_PIN; i<=PINS + FERST_SEGMENT_PIN; i++)
      {
        pinMode(i, OUTPUT);
      }
    }

    void loop()
    {

      if(millis()-LastTime>=1000) //Если прошло более 1 секунду
      {
        LastTime      = millis();
        byte  Segments = NumberSegments[value++%10];

        for(int i = 0; i<PINS; i++)                    //Перебираем биты данных числа
        {
          int bitValye = bitRead(Segments, i);          //Получаем значение бита(0 или 1)
          digitalWrite(i + FERST_SEGMENT_PIN, bitValye);//Выводим значение этого бита с свой светодиод
        }
      }
    }
     
     
  2. altex

    altex Гик

    int LastTime нужно заменить на unsigned long