А вот немного кода для работы с индикаторной панелью:
Для прокручиваемого (скроллируемого) текста:
Код:
// Вывод скроллируемого текста на дисплей
void SCROLL_TEXT (String tape)
{
for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {
matrix.fillScreen(LOW); // Задание цвета фона экрана (вне букв) LOW - темный, HIGH - светлый
matrix.setTextSize(10);
int letter = i / width;
//int x = (matrix.width() - (tape.length() * width)) / 2;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text vertically
while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < tape.length() ) {
matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); // Задание цветов вывода надписи.
// Первый параметр HIGH цвет символов
// Второй LOW цвет фона
// Для инверсии поменять HIGH на LOW
// и LOW на HIGH
}
letter--;
x -= width;
}
matrix.write(); // Отправка на экран
delay(wait);
matrix.fillScreen(LOW);
matrix.write(); // Отправка на экран
}
}
Для статичного текста с центровкой:
Код:
// Вывод статического текста на дисплей
void STATIC_TEXT (String tape)
{
int x = (matrix.width() - (tape.length() * width)) / 2; //выравнивание по центру X
int y = (matrix.height() - 8) / 2; //выравнивание по центру Y
matrix.fillScreen(LOW);
for ( int i = 0 ; i < tape.length(); i++ )
{
int letter = i;// / width;
//Serial.println(tape[letter]);
matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
x += width;
}
matrix.write(); // отправка данных на дисплей
}
Пример текста:
UPD: Забыл сказать, что для минимизации и исключения отражений от стен при выстреле в помещении (ИК-диод на доте стоит достаточно мощный) будет использоваться переменный резистор на 1КОм, который обеспечит определённую подстройку под помещение.