// библиотека для работы I²C #include <Wire.h> // библиотека для работы с часами реального времени #include "TroykaRTC.h" // библиотека для работы с RGB-матрицей #include <Adafruit_NeoPixel.h> // библиотека для работы с датчиком освещённости (Troyka-модуль) #include <TroykaLight.h> // номер пина, к которому подключена RGB-матрица #define MATRIX_PIN A2 // пин сенсора освещённости #define LIGHT_PIN A1 // пин зуммера #define BUZZER_PIN 4 // количество светодиодов в матрице #define LED_COUNT 16 bool state = false; // создаём объект для работы с часами реального времени RTC clock; // создаём объект класса Adafruit_NeoPixel Adafruit_NeoPixel matrix = Adafruit_NeoPixel(LED_COUNT, MATRIX_PIN, NEO_GRB + NEO_KHZ800); // создаём объект для работы с датчиком освещённости // и передаём ему номер пина выходного сигнала LIGHT sensorLight(LIGHT_PIN); void setup() { // открываем последовательный порт Serial.begin(9600); // инициализация RGB-матрицы matrix.begin(); } void loop() { int sensorLightValue = sensorLight.readLight(); Serial.println(sensorLightValue); if (sensorLightValue > 5) { tone(BUZZER_PIN, 1000, 400); // заполняем RGB-матрицу по сегментам «бегущий огонь» красного цвета state = !state; if(state) colorWipe(matrix.Color(255, 0, 0), 10); else colorWipe(matrix.Color(0, 0, 255), 10); } else { // гасим RGB-матрицу по сегментам «бегущая тень» colorWipe(matrix.Color(0, 0, 0), 10); } delay(500); } // функция заполнения каждого сегмента void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < matrix.numPixels(); i++) { // заполняем текущий сегмент выбранным цветом matrix.setPixelColor(i, c); matrix.show(); // ждём delay(wait); } }