Оглавление:

Умный интерактивный светофор: 5 шагов (с изображениями)
Умный интерактивный светофор: 5 шагов (с изображениями)

Видео: Умный интерактивный светофор: 5 шагов (с изображениями)

Видео: Умный интерактивный светофор: 5 шагов (с изображениями)
Видео: ТЕХНИКА БЕЗОПАСНОСТИ. Вид Грубейшего Нарушения ТРЕБОВАНИЙ ТБ при работе на СТАНКАХ. 2024, Ноябрь
Anonim
Умный интерактивный светофор
Умный интерактивный светофор

Готовы построить лучший и самый интерактивный светофор в мире? Хороший! В этом уроке мы объясним, как вы можете создать его самостоятельно, используя Arduino.

Необходимые компоненты: - Arduino (..duh) - LM317 Mosfet - 2x 60 см аналоговые светодиодные ленты RGB (12 В) - трубка из ПВХ (1 м x 125 мм) - кабели (красный и черный) - металлические пластины для световых колпачков - акрил для света - значки (значки.svg см. на сайте flaticon.com) - Черно-белая краска для аэрозольного баллончика - Изолента - Все необходимые компоненты для пайки - Дисплей с требуемым экраном (в учебнике не используется)

Шаг 1. Шаг 1. Сделайте световые шапки

Шаг 1. Сделайте световые шапки
Шаг 1. Сделайте световые шапки

Дизайн действительно зависит от вас. Мы сделали колпачок размером 15x15 см для размещения фонарей. Мы отрезали металлические пластины до нужного размера и использовали металлический гибочный станок (нет, не от Avatar), чтобы согнуть колпачки нужной формы. Задние панели были сделаны из другого компонента.

Шаг 2: Шаг 2: Подготовка опоры из ПВХ

Шаг 2: Подготовка опоры из ПВХ
Шаг 2: Подготовка опоры из ПВХ

Вырежьте 2 отверстия в опоре из ПВХ, чтобы установить световые колпачки. Затем используйте баллончик с черной краской, чтобы покрасить все в черный цвет. При желании можно добавить белые полосы на нижней части шеста (распространены в Нидерландах).

Шаг 3: Шаг 3: Сборка светодиодных лент RGB и пескоструйная обработка акриловых пластин

Шаг 3. Сборка светодиодных лент RGB и пескоструйная обработка акриловых пластин
Шаг 3. Сборка светодиодных лент RGB и пескоструйная обработка акриловых пластин
Шаг 3. Сборка светодиодных лент RGB и пескоструйная обработка акриловых пластин
Шаг 3. Сборка светодиодных лент RGB и пескоструйная обработка акриловых пластин

Затем вам нужно собрать светодиодные ленты RGB внутри светового колпачка. Плотно оберните их вокруг кепки и расположите как можно ближе к передней части.

Затем вам нужно будет обработать пескоструйным аппаратом выбранный символ на акриловой пластине. Возьмите скотч и закройте всю акриловую пластину. Затем вырежьте нужную форму / фигуру. После этого можно обработать тарелку пескоструйным аппаратом, чтобы получить эффект матового стекла.

Шаг 4: Шаг 4: Подключите светодиодные ленты RGB к Arduino

Шаг 4: Подключите светодиодные ленты RGB к Arduino
Шаг 4: Подключите светодиодные ленты RGB к Arduino

А теперь самое сложное: подключение светодиодных лент RGB к Arduino. Когда вы соединяете контакты, убедитесь, что вы поместили 12 В на 12 В на вашей полосе. Между каждым цветом, красным или зеленым, нужно поставить мосфет. Подключите данные светодиодной ленты к среднему контакту mosfet, а левый контакт - к вашему Arduino. Правый штифт должен вернуться на землю Arduino.

Шаг 5: Шаг 5: напишите код Arduino

Шаг 5: напишите код Arduino
Шаг 5: напишите код Arduino

Этот код Arduino управляется bluetooth, потому что мы не использовали внутренний дисплей. Таким образом, код контролируется через сообщения bluetooth в функции loop ().

# определить r 6 # определить g 11 # включить

SoftwareSerial mySerial (10, 11); // RX, TX

#define angryLength 4

#define FallingLength 3 #define happyLength 4 #define onPhoneLength 13 #define TalkLength 5 #define walkingLength 4 #define walkingOutLength 4 #define wavingLength 6

bool buttonPressed;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = false; bool animation3Done = false; bool animation4Done = false; bool animation5Done = false;

bool blockLight = false;

bool lightRed = true;

int currentAnimationDelay;

void setup () {

// поместите сюда свой установочный код, чтобы запустить его один раз: pinMode (r, OUTPUT); pinMode (g, ВЫХОД);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = false; currentMillis = 0; previousMillis = 0;

animation1Delay = walkingLength * 1000;

animation2Delay = wavingLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = true; }

void loop () {

// задержка (20);

// поместите сюда ваш основной код для повторного запуска: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = true; }} else if (animation2Done == false и animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = true; }} else if (animation3Done == false и animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = currentMillis; animation3Done = true; lightRed = ложь; }} else if (animation4Done == false и animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

Строка str = Serial.readString (); if (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

animation2Done = false; animation3Done = false; animation4Done = false; animation5Done = false;

animation1Delay = walkingLength * 1000;

animation2Delay = wavingLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = true; Serial.println («3»); buttonPressed = true; previousMillis = currentMillis; }

if (str == "КРАСНЫЙ") {

blockLight = false; lightRed = true; }

if (str == "ЗЕЛЕНЫЙ") {

blockLight = false; lightRed = ложь; }

if (str == "СВЕТ: ЗЕЛЕНЫЙ: ВЫКЛ.") {

blockLight = true; analogWrite (г, 255); } если (str == "СВЕТ: ЗЕЛЕНЫЙ: ВКЛ") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

if (blockLight == false) {

if (lightRed == true) {

analogWrite (г, 0); analogWrite (г, 255); } если (lightRed == false) {analogWrite (г, 255); analogWrite (g, 0); }}}

Рекомендуемые: