Мини-модуль светофора TZT со встроенными резисторами — это компактный электронный модуль, имитирующий работу обычного светофора. Он состоит из трёх светодиодов (красного, жёлтого и зелёного) и предназначен для использования в электронных проектах, образовательных демонстрациях, системах индикации и других приложениях, где требуется визуальное отображение сигналов.
Основные характеристики мини-модуля светофора TZT
- Размер: 56 × 21 × 11 мм.
-
Светодиоды: 3 штуки, каждый диаметром 8 мм.
-
Напряжение питания: 5 В.
-
Интерфейс: общий катод, что упрощает подключение к контроллерам (например, Arduino).
-
Управление: цифровой входной сигнал позволяет индивидуально контролировать каждый светодиод.
-
Яркость: обычная.
Благодаря компактным размерам, встроенными резисторами и простоте подключения его можно интегрировать в различные электронные устройства и конструкции.
Применение мини-модуля светофора TZT
- Образовательные проекты и демонстрации принципов работы светофоров.
-
Индикация состояний в электронных системах (например, режимы работы оборудования).
-
Создание моделей и макетов.
-
Использование в DIY-проектах с микроконтроллерами.
Важно: при подключении модуля необходимо соблюдать полярность и не превышать рекомендуемое напряжение питания. Для управления светодиодами можно использовать цифровые выходы микроконтроллеров или другие источники цифровых сигналов.
Скетч для трёхсекционного светофора на Arduino (с модулем со встроенными резисторами)
Необходимые компоненты:
- Плата Arduino (Uno, Mega и др.)
-
Модуль трёхсекционного светофора (со встроенными токоограничивающими резисторами)
-
Соединительные провода
Схема подключения
Красный светодиод модуля → пин 10 Arduino
Жёлтый светодиод модуля → пин 9 Arduino
Зелёный светодиод модуля → пин 8 Arduino
Общий провод (GND) модуля → GND Arduino
Логика работы
Зелёный горит 7 с.
Зелёный мигает (1 Гц, 4 вспышки за 4 с).
Жёлтый горит 3 с.
Красный горит 7 с.
Красный + жёлтый горят 2 с.
Цикл повторяется.
Скетч
// Пины светодиодов (подключите модуль к этим пинам)
const uint8_t PIN_RED = 10;
const uint8_t PIN_YELLOW = 9;
const uint8_t PIN_GREEN = 8;
// Временные интервалы (в миллисекундах)
const uint32_t T_GREEN_STEADY = 7000; // Зелёный постоянно
const uint32_t T_GREEN_BLINK_TOTAL = 4000; // Мигание зелёного (4 с)
const uint32_t BLINK_PERIOD = 1000; // Период мигания (1 Гц)
const uint32_t T_YELLOW = 3000; // Жёлтый
const uint32_t T_RED = 7000; // Красный
const uint32_t T_RED_YELLOW = 2000; // Красный + жёлтый
// Состояния светофора
enum Phase : uint8_t {
PH_GREEN, // Зелёный
PH_GREEN_BLINK, // Мигание зелёного
PH_YELLOW, // Жёлтый
PH_RED, // Красный
PH_RED_YELLOW // Красный + жёлтый
};
Phase phase = PH_GREEN; // Текущее состояние
uint32_t phaseStart = 0; // Время начала фазы
uint32_t blinkStart = 0; // Время начала мигания
bool greenOn = true; // Состояние зелёного (мигание)
// Функция управления светодиодами
void setLights(bool r, bool y, bool g) {
digitalWrite(PIN_RED, r ? HIGH : LOW);
digitalWrite(PIN_YELLOW, y ? HIGH : LOW);
digitalWrite(PIN_GREEN, g ? HIGH : LOW);
}
void setup() {
// Настройка пинов как выходов
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
// Начальное состояние: зелёный горит
setLights(false, false, true);
phase = PH_GREEN;
phaseStart = millis();
}
void loop() {
const uint32_t now = millis();
const uint32_t elapsed = now - phaseStart; // Прошло времени в текущей фазе
switch (phase) {
case PH_GREEN:
if (elapsed >= T_GREEN_STEADY) {
phase = PH_GREEN_BLINK;
phaseStart = now;
blinkStart = now;
greenOn = true;
setLights(false, false, true); // Включаем зелёный
}
break;
case PH_GREEN_BLINK: {
const uint32_t blinkElapsed = now - blinkStart;
if (blinkElapsed >= BLINK_PERIOD) {
blinkStart = now;
greenOn = !greenOn; // Переключаем состояние
setLights(false, false, greenOn);
}
if (elapsed >= T_GREEN_BLINK_TOTAL) {
phase = PH_YELLOW;
phaseStart = now;
setLights(false, true, false); // Жёлтый
}
}
break;
case PH_YELLOW:
if (elapsed >= T_YELLOW) {
phase = PH_RED;
phaseStart = now;
setLights(true, false, false); // Красный
}
break;
case PH_RED:
if (elapsed >= T_RED) {
phase = PH_RED_YELLOW;
phaseStart = now;
setLights(true, true, false); // Красный + жёлтый
}
break;
case PH_RED_YELLOW:
if (elapsed >= T_RED_YELLOW) {
phase = PH_GREEN;
phaseStart = now;
setLights(false, false, true); // Зелёный
}
break;
}
}
|
Пояснения
1. Особенности модуля
- Встроенные резисторы исключают необходимость внешних компонентов.
-
Подключение максимально простое — только сигнальные пины и GND.
2. Переменные таймингов
- Задают длительность каждой фазы в миллисекундах.
-
Легко изменяются для адаптации под требования.
3. Перечисление Phase
- Описывает все состояния светофора.
-
Используется в switch для управления логикой.
4. Функция setLights()
- Централизованно управляет светодиодами.
-
Принимает три булевых параметра: красный, жёлтый, зелёный.
-
true → светодиод включён, false → выключен.
5. Переменная millis()
- Использует неблокирующий подход (без delay()).
-
Позволяет точно отслеживать время фаз.
6. Мигание зелёного
- Реализовано через переменную greenOn и таймер blinkStart.
-
Частота 1 Гц (1 вспышка в секунду).
Рекомендации по настройке
1. Изменение длительности фаз
- Корректируйте значения T_GREEN_STEADY, T_YELLOW и др.
-
Убедитесь, что все значения указаны в миллисекундах.
2. Проверка подключения
- Убедитесь, что общий провод модуля (GND) подключён к GND Arduino.
-
Проверьте соответствие пинов Arduino и секций светофора.
3. Отладка
- Добавьте Serial.print() для вывода текущего состояния.
-
Используйте монитор порта для отслеживания фаз.
4. Расширение функционала
- Добавьте кнопку для ручного переключения режимов.
-
Внедрите датчик движения для адаптивной работы.
-
Подключите дисплей для отображения таймера.