ARDUINO Простое хоккейное табло WS2812 (дневник проекта)

MrPrivet

★✩✩✩✩✩✩
1 Дек 2018
14
17
Всем привет. Появилась потребность разработки и изготовления табло, которая будет устанавливаться на хоккейном катке. Здесь буду вести дневник общей концепцией, как это все будет выглядеть, из чего состоит, идеи и последующая реализация.

Сразу хочу сказать что этот проект не коммерческий и выполняется мною по на добровольной основе без финансовой выгоды, так сказать бесплатно.
Хочу успеть к зиме, хотя если затяну то тоже будет приемлемо. Так как делаю это по своей инициативе не обременен какими либо сроками по этому. Делаю это как подарок инициативному человеку, который своим энтузиазмом меня заразил.

Сначала хочу сделать самый простой функционал, с последующей его доработкой и обрастанием дополнительных функцией. Программа минимум - табло со счетом, периодом и таймером до конца игры, управляемое ИК пультом.

Основные моменты:
  • основу для табло хочу сделать из щита ДСП размером 1.5 на 1.2 метров.
  • В щите будут фрезерованные пазы для установки светодиодных лент в световодах.
  • хочу использовать светодиодную ленту с пиксельной адресацией WS2813 упрощения электронной начинки c концентрацией 144 пикс./м. для хорошей яркости
  • управление с маленького ИК пульта
  • так как это уличное устройство максимально все загерметизировать
Теперь перейдем к исполнению. лист ДСП будет обычный, с покраской в белый цвет и покрытием лаком от внешних осадков. У меня нет опыта в выборе материалов, но если он прослужит хотя бы сезон то на следующий можно изготовить новый щит, с учетом полевых испытаний. В белый цвет хочу покрасить его для того чтобы не было сильного контраста со световодами, которые тоже будут белого цвета.

Фрезеровать буду вручную, попробую сделать достаточно ровно, хотя опыта опять же нет, но буду стараться так сказать.
Была мысль сделать щит из нескольких слоев тонкой фанеры, в одних слоях выпиливать отверстия под световоды, в других сделать отверстия под провода, скрепить все это как сэндвич. Пока решил отказаться от нее и оставить как резервный вариант
Световоды хочу использовать такие;

https://aliexpress.ru/item/40000772...store_pc_allProduct.8148356.21.5e287ae7SFrNO9 буду зафрезеровывать в поверхность щита на 10мм в глубину, 4 мм будут выступать снаружи. Надписи напечатаю чёрным пластиком буквы или любым и покрашу черной краской из баллончика

диодные ленты ws2813 c 144 пикселями на метр.

Сегменты будут выстраиваться как семисегментные

Большой сегмент на индикаторе такого размера

Маленький такого

Размер сегментов рассчитан так чтобы там аккуратно помещались пиксели

Компоновка сегментов на табло будет такой

Черновые расчеты сведены в таблицу

ЛЕНТАДЛИНАРАЗМЕР С 1 ПИКСРАССТОЯНИЕ МЕЖДУ ПИКСПОТРЕБЛЕНИЕ В/МОБЩЕЕ ПОТРЕБЛЕНИЕНАПРЯЖЕНИЕАМПЕРЫ
144998,086,931,9343,20321,581376564,32
БОЛЬШАЯ СЕКЦИЯДЛИНАКОЛИЧЕСТВОПОТРЕБНОЕ КОЛИЧЕСТВОКОЛИЧЕСТВО ПИКСЕЛЕЙРЕАЛЬНАЯ ДЛИНАОБЩАЯ ДЛИНАОБЩЕЕ КОЛ-ВО ПИКС
ГОРИЗОНТАЛЬНАЯ120336018124,76374,2854,00
ВЕРТИКАЛЬНАЯ300260044304,97609,9488,00
СУММА984,22142,00
МАЛАЯ СЕКЦИЯ
ГОРИЗОНТАЛЬНАЯ7032101176,24228,7333,00
ВЕРТИКАЛЬНАЯ200240029201,00402,0058,00
СУММА630,7391,00
КОЛИЧЕСТВО ЛЕНТЫКОЛИЧЕСТВОКОЛИЧЕСТВО ПИКСЕЛЕЙДЛИНА
БОЛЬШИЕ СЕКЦИИ5,007104921,09
МАЛЕНЬКИЕ СЕКЦИИ4,003642522,92
СУММА10747444,01
ЦЕНА ЗА МЕТР1014,00ОБЩАЯ ЦЕНА8112,00

Получается, что будет использовано 8 метров ленты, чуть больше 1000 диодов общим мощностью около 60 ампер. Также в процессе написания появилась мысль также использовать ленту ws2815 на 12 вольт, она позволит использовать блок питания меньшей мощности и будет меньше просадок. Хотя просадок особо не боюсь, потому что участки достаточно короткие, а питание можно подводить где угодно. В общем рассматриваю как вариант пока, потому что с 5 вольтовой лентой я уже работал а с 12 вольтовой нет.

Я прекрасно понимаю что схема на адресных диодах будет намного дороже чем например обычная лента RGB или даже одноцветная, но она будет не такая эффектная, ведь таких табло полно, а на адресных диодах мало. Когда будет выполнена программа минимум и табло запустится в работу, можно будет допиливать ее, обновляя прошивку и добавляя новые функции и эффекты. Подробнее обо всех возможных мыслях по доработке я расскажу позднее.

Мозгом системы будет скорее всего esp32, или esp8266 из-за того, что необходимо контролировать такое большое количество светодиодов, хоть и у меня нет опыта написания под них прошивки, но думаю что справлюсь. До этого писал только под ардуино, но с адресными лентами работал, так что должен справиться. Тем более что в первоначальной версии не требуется ничего сверхсложного: это чтение ИК сигнала и загорание определенными цветами определенных участков ленты, для начала без эффектов.
Если времени «на подумать» как написать скетч не останется буду делать в лоб : минимум функций и эффектов, потом как все заработает буду допиливать, в любом случае все буду выкладывать сюда.

Ну и ИК пульт пока такой.


Мои опасения и возможные проблемы, а также возможные способы их разрешения:
  • часы на морозе могут работать некорректно (использовать DS 3221)
  • снег и влага могут проникнуть внутрь устройства (загерметизировать все возможное)
  • промерзание / перегрев диодов (подстройка яркости под освещение, снижение яркости при перегреве, возможно датчик движения для определения соглядатых)
  • пульт может не добивать до табло на удалении (другой пульт, больше диодов на прием, переход на радиосигнал)
  • прочие непредвиденные обстоятельства

Мечты на будущее:

Моему проекту есть куда расти, вот первое что пришло на ум:
  • Отображение температуры
  • Отображение времени
  • перелистывание на “игровой” и “обычный” режим, в обычном отображается время и температура.
  • автоподстройка яркости под освещение
  • Эффекты для перелистывания счета и времени
  • Мерцание вспышками во время работы
  • Управление с более удобного пульта, предположительно по радиосвязи
  • Управление со специальной перчатки (если кому интересно расскажу идею подробнее)
  • Звуковые эффекты через встроенный плеер, усилитель, динамики

Если у Вас есть какие то замечания, идеи, вопросы, прошу обращаться, по возможности буду учитывать и отвечать.
 
  • Лойс +1
Реакции: Lumenjer

Lumenjer

★★★✩✩✩✩
10 Дек 2020
220
112
@MrPrivet, для такого количества советую именно ESP32, управлять можно не только пультом, а и по WiFi с телефона, есть хороший фреймворк для этого дела (синхронизация времени по NTP, менеджмент WiFi сетей и веб интерфейс).
Также можете обратить внимание на эту прошивку для лампы, она реализована на этом фреймворке, там уже добавлена библиотека FastLed, а с ней много чего интересного и полезного, например температурный датчик и поддержка модулей RTC (но если устройство будет подключено к инету то особого смысла в этом модуле нет, т.к. синхронизация времени происходит по NTP).
Также надо рассматривать вариант распараллеливания выводов для диодов (например по 1 на две цифры), в соседней теме обсуждалось, как за счет этого можно добиться лучшего быстродействия на большом количестве диодов.
 

MrPrivet

★✩✩✩✩✩✩
1 Дек 2018
14
17
@MrPrivet, для такого количества советую именно ESP32, управлять можно не только пультом, а и по WiFi с телефона, есть хороший фреймворк для этого дела (синхронизация времени по NTP, менеджмент WiFi сетей и веб интерфейс).
Также можете обратить внимание на эту прошивку для лампы, она реализована на этом фреймворке, там уже добавлена библиотека FastLed, а с ней много чего интересного и полезного, например температурный датчик и поддержка модулей RTC (но если устройство будет подключено к инету то особого смысла в этом модуле нет, т.к. синхронизация времени происходит по NTP).
Также надо рассматривать вариант распараллеливания выводов для диодов (например по 1 на две цифры), в соседней теме обсуждалось, как за счет этого можно добиться лучшего быстродействия на большом количестве диодов.
Взял на вооружение ваши Советы по часам, управлению с телефона И так далее, но сперва все таки сделаю минимум. Тоже думал распараллелить потоки, тем более выбрал esp32 как раз из за большого количества диодов. В принципе и на одном порту потянет, быстрых эффектов не предвидится, по крайней мере пока. С вайфаем пока не работал, так что попридержу коней, у меня всегда много мыслей, потом за все хватаюсь и не получается все и сразу, так что буду действовать от работающего минимума пока. Сегодня пол дня потратил на изучение сдвиговых регистров и мосфетов, рисовал схему но потом понял что лучше сделать как умею на адресных…
 

Lumenjer

★★★✩✩✩✩
10 Дек 2020
220
112
@MrPrivet, в основном проще писать проект сразу ориентируясь на фреймворк, чем потом переносить его (это уже по своему личному опыту говорю).

С вайфаем пока не работал, так что попридержу коней
Одна из основных фишек фреймворка - забрать на себя менеджмент WiFi. Логика работы там очень проста, при первой перепрошивке устройство появится в качестве точки доступа (с названием EmbUI-******). Подключаетесь, переходите по адресу 192.168.4.1, попадаете в настройки WiFi и можете выбрать свою сеть из списка, ввести пароль и подключиться.
Если устройство не смогло подключиться к WiFi, то спустя минуту (или меньше, точно не помню), оно автоматически вернется в режим точки доступа и вы сможете снова подключиться к нему. Также можно выбрать настройку "Только точка доступа" и задать свой пароль.
Ну и опять же, автоматическая настройка времени, достаточно только подключиться к WiFi с доступом в интернет и выбрать часовой пояс.

Захотите свой интерфейс сделать - тоже запросто, есть примеры, на которые можно опереться, или спросить в теме, там всегда подскажут, как лучше сделать.


*** Самое важное забыл, у фреймворк дает возможность обновления прошивки по воздуху
 
Изменено:

MrPrivet

★✩✩✩✩✩✩
1 Дек 2018
14
17
Написал функцию которая определяет какие диоды нужно зажигать на определенные цифры, написал тестовый скетч с работой этой функции в TinkerCad. пока нет возможности проверить в железе, но в онлайн все работает, по крайней мере с кратными значениями длинны и ширины. Принцип работы функции такой, через девайны определяем длинные и короткие участки, то есть вертикальные и горизонтальные на сегменте, затем по дефайнам идет расчет "ключевых" точек, разделяющие сегменты, а потом по пробегаемся по всей ленте и функция показывает, при какой цифре какой пиксель нужно зажигать а какой нет. в последствии функции будет скармливаться каждая цифра по очереди.
C++:
/*
               ┌─────┐┌─────┐┌─┐┌─┐   ┌─┐┌─────┐┌─────┐
               │ ┌─┐ ││ ┌─┐ ││ ││ │   │ ││ ┌───┘└─┐ ┌─┘
┌──┬──┐┌───┐   │ │ │ ││ │ │ ││ │└┐└┐ ┌┘┌┘│ └───┐  │ │
│  │  ││ ┌─┘   │ └─┘ ││ └─┘┌┘│ │ └┐└┬┘┌┘ │ ┌───┘  │ │
│ │ │ ││ │  ┌─┐│ ┌───┘│ ┌─┐└┐│ │  └┐ ┌┘  │ └───┐  │ │
└─┴─┴─┘└─┘    └─┘└─┘    └─┘ └─┘└─┘   └─┘   └─────┘  └─┘
*/

#include <Adafruit_NeoPixel.h>
#define PIN             2     // input pin Neopixel is attached to
#define NUMPIXELS      32   // number of neopixels in strip
/* Segment settings                   
           4┌───◄───┐3
            │       │
            ▼        ▲  l
            │       7│  o
           5├───►───┤2 n -->
            │        │  g
            ▼        ▲
               │        │
        -->6└───►───┘1
              short 
*/
#define LONGLINE         8 //Number of pixels in long line
#define SHORTLINE         4 //Number of pixels in short line


#define SEGPIXNUM LONGLINE*2+SHORTLINE*3
#define SEG1 SHORTLINE
#define SEG2 SHORTLINE + LONGLINE/2
#define SEG3 SHORTLINE + LONGLINE
#define SEG4 SHORTLINE*2 + LONGLINE
#define SEG5 SHORTLINE*2 + LONGLINE*1.5
#define SEG6 SHORTLINE*2 + LONGLINE*2
#define SEG7 SHORTLINE*3 + LONGLINE*2

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 1000;
int indNum = 0;
int seg = 0;
bool col = false;

void setup() {
  pixels.begin();
  Serial.begin(9600);
}

void loop() {
  delay(delayval);
  serialCheck();
  for (int i = 0 ; i < SEGPIXNUM; i++){
    if (indicateNumber(indNum,i)) {pixels.setPixelColor(i, pixels.Color(255,0,0));}
    else {pixels.setPixelColor(i, pixels.Color(0,0,0));}
    }
  pixels.show();
}
void serialCheck(){
  if (Serial.available()>0) {
    indNum = Serial.parseInt();
    Serial.print("Number to indicate ");
    Serial.println(indNum);}
}

int segmentNum(int pixNum){
  int i = 0;
    while (pixNum > SEGPIXNUM){
    i++;
      pixNum -= SEGPIXNUM;
    }
  return i;
}
bool indicateNumber (int val, int pixNum){
  switch (val){
    case 1:
          if (pixNum >= SEG1 && pixNum < SEG3) {return 1;}
        else {return 0;}
    break;
    case 2:
          if (pixNum < SEG1 || pixNum >= SEG2 && pixNum < SEG4 || pixNum >= SEG5) {return 1;}
        else {return 0;}
    break;
    case 3:
          if (pixNum < SEG4 || pixNum >= SEG6){return 1;}
        else {return 0;}
    break;
    case 4:
          if (pixNum >= SEG1 && pixNum < SEG3 || pixNum >= SEG4 && pixNum < SEG5 || pixNum >= SEG6){return 1;}
        else {return 0;}
    break;
    case 5:
          if (pixNum < SEG2 || pixNum >= SEG3 && pixNum < SEG5 || pixNum >= SEG6){return 1;}
        else {return 0;}
    break;
      case 6:
          if (pixNum < SEG2 || pixNum >= SEG3){return 1;}
        else {return 0;}
    break;
      case 7:
          if (pixNum >= SEG1 && pixNum < SEG4){return 1;}
        else {return 0;}
    break;
      case 8:
          return 1;
    break;
    case 9:
          if (pixNum < SEG5 || pixNum >= SEG6){return 1;}
        else {return 0;}
    break;
    case 0:
        if (pixNum < SEG6) {return 1;}
        else {return 0;}
    break;
    case 10:
        if (pixNum >= SEG6) {return 1;}
        else {return 0;}
    break;
    case 11:
        if (pixNum >= SEG2 && pixNum < SEG5 || pixNum >= SEG6) {return 1;}
        else {return 0;}
    break;
    default:
        if(pixNum < SEG1 || pixNum >= SEG3) {return 1;}
    else {return 0;}
    break;
  }
}
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
Алгоритм был бы значительно проще, если бы вы не обьединяли 2 вертикальных сегмента в один "длинный", а строили бы цифру из семи одинаковых сегментов, как это принято в таких табло. А засветка пикселей... через массивы это пишется куда короче...
Ну что написали - то и написали...
 

hi_amigo

✩✩✩✩✩✩✩
18 Апр 2021
3
0
Здравствуйте, первое что хочу сказать что я уже проделал ваш путь , получил огромный опыт: Программирование, травление, пайка, настройка. Вроде и табло симпатичное вышло( даже с таймерами штрафного времени) но на корте его ни разу не использовали. Наверное это лишний девайс для дворовой хоккейной коробки. Но если исходить из опыта то наверное стоит все продумывать на готовых модулях. Это очень упростит и сборку и ремонт в будущем. Я долго мучился с помехами. Пока все не защитил емкостями.
Жаль что не проверил в зимних условиях но внутрь табло( где схемы и прочее ставил обогрев с регулятором ), наверное это актуально когда холодно. Управление по проводам тоже ещё тот +, скорее минус. Радио канал на 4 реле 433мгц себя не оправдало на открытой площадке. От ворот уже не брало . Так что wifi 2.4 наверное проще и лучше. Но тоже лучше сперва проверить. Моя идея была что у судьи есть брелок и он рулит табло. Провод позволял больше( корректировать счёт, запускать штраф) но тогда это должен быть отдельный человек. Надеюсь у вас все получится. Очень хотел бы сделать ещё раз но уже с учётом сделанных ошибок. Буду следить за вашим проектом. Удачи.
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
Но если исходить из опыта то наверное стоит все продумывать на готовых модулях. Это очень упростит и сборку и ремонт в будущем.
разные табло на светодиодных модулях 32х16 (просто для примера внешнего вида)
E-liga.jpg
hokey3.jpeg
 

hi_amigo

✩✩✩✩✩✩✩
18 Апр 2021
3
0
Все Верно.только цена табло должна быть по силам. Наверное на матрицах оно в 10-15 тыр не влезет. А на ленте можно попробовать.
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
Наверное на матрицах оно в 10-15 тыр не влезет.
не знаю точно. Сами матрицы дешевые, 400-600р монохром. Если остальное делать самому, то не должно быть дороже ленты. Раньше(3-5лет назад) матрицы даже дешевле ленты выходили - но с тех пор лента сильно подешевела.
 

poty

★★★★★★✩
19 Фев 2020
3,238
943
Согласен с @bort707, стоимость матрицы вряд ли будет превышать 2,5-3 тыс.руб. а кроме матрицы потребуется только какой-нибудь микропроцессор с wi-fi, да блок питания (ну, пусть ещё 1000 сверху). Остальное - на механическую конструкцию.
 

hi_amigo

✩✩✩✩✩✩✩
18 Апр 2021
3
0
Вы абсолютно правы. Совет очень правильный. По цене разницы почти нет, а вот в работе руками, выигрыш будет огромный. Я об этом и писал, что надо сразу делать все готовыми модулями. Жаль не знал что так можно было;)
 

MrPrivet

★✩✩✩✩✩✩
1 Дек 2018
14
17
Подзабросил эту тему. Сейчас табло на этапе сборки цифр, напечатал на 3д принтере под них подставки, чтобы удобнее было собирать, вот видео одной цифры, скетч пока просто из примера, но уже есть на простое табло. Цифры пояются, остнаска табло уже вырезана, медленно и верно монтирую. Прочитал компенты, дешевле конечно собрать на обычных Лед лентах под контролем сдвиговых резисторов, но мне проще так как я умею грубо говоря. Мне уже обошлось порядка 30 тыс и не знаю во сколько ещё обойдётся. Но опять же повторюсь, проект не коммерческий, делаю для души. Что будет нового напишу.
 

Вложения

edvord

✩✩✩✩✩✩✩
4 Фев 2021
5
1
Всем привет.Такая же задумка с осени пытаюсь сделать табло счет для ребят на поле у нас в селе не нашел вариантов управления по WIFI c телефона на ESP8266 c лентой WS2812в .программой бегущая строка.не получается у старичка.поделитесь вашим проектом .
 

vitmotor

✩✩✩✩✩✩✩
26 Фев 2023
6
1
Здравствуйте друзья. Поделюсь своим опытом по хоккейному табло. Сын играет в хоккей в районной команде, табло небыло никакого, первое сделал простое на светодиодах красных и зелёных управление галетным переключателем и диодным дешифратором под каждой цифрой. ( простое надёжное работает много лет, ломаться там нечему)).
Загорелся сделать электронное табло, изучаю ARDUINO начал думать изобретать. придумал на WS2812. управление с ИК пульта. отдельно работает вместе не хочет. где-то вычитал WS2812 с ИК не дружат!!!?? (поправьте если не так, у меня не получилось)
сделал на ТМ1637 сначала на макетке всё получилось!!! Потом и на большое табло перенёс.
 

Вложения

vitmotor

✩✩✩✩✩✩✩
26 Фев 2023
6
1
корпус сделал из оконной створки, электронная схема собственной разработки
ARDUINO управляет ТМ1637, она в сою очередь ключами на MOSFETах и зажигают 12 вольтовую светодиодную ленту.
управляется табло с универсального ИК пульта. счёт ограничен 29 или 39, период 1,2,3, 0 это овертайм))
время ставится с пульта- можно по 1 минуте и по 5 минут. пуск- обратный отсчёт. по завершению времени сирена (сигнал нч от БМВ)
когда не игра табло показывает время и температуру поочерёдно.
Вот такой мой опыт. на морозе работает не стабильно на солнце яркости не хватает, ИК на солнце тоже далеко не берёт.
Теперь думаю нужно новое табло изобретать, посмотрел рекламные табло на матрицах -дорого.
 

Вложения

poty

★★★★★★✩
19 Фев 2020
3,238
943
@vitmotor, нет ограничений при работе ИК и WS2812. Обе функции требуют жёстких таймингов, но относительная статичность табло позволяет развести их во времени.
Другой вопрос: если ИК стабильно не работает на воздухе, то зачем повторять конструкцию именно на нём? Можно же на радиоканале сделать (включая Bluetooth и WiFi). Для очень низких температур можно и подогрев сделать, табло же стационарное, насколько я понимаю, питается от сети.
 

Divin

★★★✩✩✩✩
30 Янв 2021
437
192
@vitmotor, Перейдите с ардуино на ЕСП8266 илиЕСП32 - встроенный вайфай, а на ЕСП32 и блютус, ик не нужен, может работать и в режиме точки доступа. Лента ws8212 немного капризна на низких температурах - как писал @poty, можно сделать подогрев короба.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,410
976
58
Марий-Эл
@poty, У многих повторяется одна и та же ошибка - использование WS2812
Мало того, что требуются определённые тайминги, они ещё и плохо переносят отрицательные температуры хоть в даташитах и указано -25градусов.
Лучше выбрать понадёжнее, хоть и подороже и интерфейс SPI
 

vitmotor

✩✩✩✩✩✩✩
26 Фев 2023
6
1
ик нестабильна в дневное время, а ночером очень даже нормально. Bluetooth и WiFi нужно пульт изобретать, а ик готовый. да питается компьютерный БП, на счёт обогрева не думал, а что греть ардуину?? от помех нужно всё защищать, когда сирена звучит всё табло мигает.
 

poty

★★★★★★✩
19 Фев 2020
3,238
943
@Эдуард Анисимов, работа на отрицательных температурах от интерфейса не зависит.
@vitmotor, какой пульт? Смартфон, вот и весь пульт.
Просто смысл ограничениями по времени суток заниматься, если есть лучшее решение? Все равно ж заново разрабатывать!
Не очень понял про помехи: греть не от помех нужно, а для того, чтобы работало всё. Если табло ведёт себя неправильно в стандартных условиях при больших нагрузках, то это просто неверное проектирование электрической части, а не помехи.
 

vitmotor

✩✩✩✩✩✩✩
26 Фев 2023
6
1
кто то бы ещё финансировал эти изобретения, собираем из тог что есть))

Я показал то, что я сделал, покажите и вы. а идеи кидать я и сам умею, про тайминги читал но ничего не понял, на практике попробовал не работает, разбираться не стал просто заменил WS2812 на ТМ 1637
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,410
976
58
Марий-Эл
работа на отрицательных температурах от интерфейса не зависит
Я бы разделил интерфейс и контроллер стоящий в этих светодиодах.
  • Пофиг какой интерфейс. Но SPI проще и гемороя с ним меньше. И от температуры ни тот, ни другой не зависят.
  • сами светодиоды WS2812 не любят отрицательных температур.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
Есть подозрение, что вы очень часто пытаетесь выводить информацию на ленту, вот и не хватает времени на обработку сигнал ИК