// Подключаем библиотеку для работы со светодиодными матрицами #include // Создаём объект матрицы левого глаза // на шине I²C с адресом 0x60 (указан по умолчанию) TroykaLedMatrix matrixL; // Создаём объект матрицы правого глаза // на шине I²C с адресом 0x63 TroykaLedMatrix matrixR(0x63); // Создаём массив иконок анимации «Осмотр местности по сторонам» в шестнадцатеричной системе HEX // Массив иконок для левого и правого глаза одинаковый // Эмоции рисуем в редакторе изображений для LED-матрицы // https://amperka.github.io/led-matrix-editor/ constexpr uint8_t ICON_EYE_LOOK_AROUND[][8] { { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x87, 0x87, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0xe1, 0xe1, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x99, 0x99, 0x81, 0x81, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x81, 0x81, 0x99, 0x99, 0x7e } }; // Создаём массив иконок анимации «Осмотр местности по углам» в шестнадцатеричной системе HEX // Массив иконок для левого и правого глаза одинаковый constexpr uint8_t ICON_EYE_LOOK_CORNER[][8] { { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x87, 0x87, 0x81, 0x81, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x81, 0x81, 0x87, 0x87, 0x7e }, { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0x81, 0x81, 0x81, 0x81, 0xe1, 0xe1, 0x7e }, { 0x7e, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0x7e }, { 0x7e, 0xe1, 0xe1, 0x81, 0x81, 0x81, 0x81, 0x7e } }; // Вычисляем количество кадров в массиве «Осмотр местности» constexpr uint8_t COUNT_FRAMES_LOOK_AROUND = sizeof(ICON_EYE_LOOK_AROUND) / sizeof(ICON_EYE_LOOK_AROUND[0]); // Вычисляем количество кадров в массиве «Осмотр местности по диагонали» constexpr uint8_t COUNT_FRAMES_LOOK_CORNER = sizeof(ICON_EYE_LOOK_CORNER) / sizeof(ICON_EYE_LOOK_CORNER[0]); void setup() { // Инициализируем матрицы matrixL.begin(); matrixR.begin(); // Очищаем матрицы matrixL.clear(); matrixR.clear(); } void loop() { // Перебираем массив «Осмотр местности» по кадрам for (int i = 0; i < COUNT_FRAMES_LOOK_AROUND; i++) { // Отображаем на матрицах текущий кадр matrixL.drawBitmap(ICON_EYE_LOOK_AROUND[i]); matrixR.drawBitmap(ICON_EYE_LOOK_AROUND[i]); // Ждём 500 мс delay(500); } }