// Подключаем библиотеку для работы с дальномером #include // Подключаем библиотеку для работы со светодиодной матрицей #include // Создаём объект дальномера EasyUltrasonic distSensor; // Создаём объект матрицы TroykaLedMatrix matrix; // Даём понятное имя пину A2 с пищалкой constexpr uint8_t BUZZER_PIN = A2; // Даём понятные имена пинам дальномера TRIG и ECHO constexpr uint8_t TRIG_PIN = 11; constexpr uint8_t ECHO_PIN = 10; // Задаём минимальное и максимальное детектируемое расстояние дальномера в см constexpr uint8_t MIN_DIST = 5; constexpr uint8_t MAX_DIST = 30; // Создаём константу для хранения паузы между кадрами анимации constexpr int DELAY_FRAME = 500; // Создаём константу для хранения тригера сигнализации в см constexpr int ALARM_DIST = 30; // Создаём массив для хранения расстояния до объекта в матричном представлении byte distMatrix[8]; void setup() { // Настраиваем пин с пищалкой в режим выхода pinMode(BUZZER_PIN, OUTPUT); // Инициализируем дальномер distSensor.attach(TRIG_PIN, ECHO_PIN, MIN_DIST, MAX_DIST); // Инициализируем матрицу matrix.begin(); // Очищаем матрицу matrix.clear(); // Устанавливаем ориентацию матрицы на 90 градусов matrix.setRotation(ROTATION_90); } void loop() { // Считываем расстояние до объекта в см int dist = distSensor.getDistanceCM(); // Преобразуем диапазон значений с дальномера [MIN_DIST;MAX_DIST] // в графический диапазон значений для столбца матрицы от 0 до 8 точек distMatrix[0] = matrix.map(dist, MIN_DIST, MAX_DIST); // Отображаем все столбцы на матрице matrix.drawBitmap(distMatrix); // Обновляем звуковую сигнализацию updateAlarm(dist); // Сдвигаем кадр на один столбец shiftMatrixImage(); // Ждём 500 мс delay(DELAY_FRAME); } // Функция сдвига кадра по столбцам void shiftMatrixImage() { for (int i = 7; i > 0; i--) { distMatrix[i] = distMatrix[i - 1]; } } // Функция обновления звуковой сигнализации void updateAlarm(int dist) { // Если текущее расстояние до препятствия меньше тригера if (dist < ALARM_DIST) { // Включаем звуковую сигнализацию tone(BUZZER_PIN, 1000, 100); } else { // Выключаем звуковую сигнализацию noTone(BUZZER_PIN); } }