Съдържание:

Интелигентен интерактивен светофар: 5 стъпки (със снимки)
Интелигентен интерактивен светофар: 5 стъпки (със снимки)

Видео: Интелигентен интерактивен светофар: 5 стъпки (със снимки)

Видео: Интелигентен интерактивен светофар: 5 стъпки (със снимки)
Видео: НЕВЕРОЯТНИ ВРЪЗКИ (Паранормалното и НЛО) - Рейс Хобс 2024, Ноември
Anonim
Интелигентен интерактивен светофар
Интелигентен интерактивен светофар

Готови ли сте да изградите най -добрия и интерактивен светофар в света? Добре! В този урок ще обясним как можете да създадете такъв самостоятелно с помощта на Arduino.

Необходими компоненти:- Arduino (..duh)- LM317 Mosfet- 2x 60см аналогови RGB LED ленти (12V)- PVC тръба (1m x 125mm)- Кабели (червени и черни)- Метални плочи за светлинни капачки- Акрил за светлината -икони (проверете flaticon.com за.svg икони)- Spraycan черно-бяла боя.- Електрическа лента- Всички необходими компоненти за запояване- Дисплей с необходимия щит (не се използва в урока)

Стъпка 1: Стъпка 1: Направете светлинните капачки

Стъпка 1: Направете светлинни капачки
Стъпка 1: Направете светлинни капачки

Дизайнът наистина зависи от вас. Направихме капачка 15х15 см, която да държи светлините. Изрязахме металните плочи до правилния размер и използвахме метален огъвач (не, не от Avatar), за да огънем капачките в правилните форми. Задните панели са направени от различен компонент.

Стъпка 2: Стъпка 2: Подготовка на PVC стълба

Стъпка 2: Подготовка на PVC стълба
Стъпка 2: Подготовка на PVC стълба

Изрежете 2 дупки в PVC стълба, за да се поберат светлинните капачки. След това използвайте черен спрей, за да нарисувате цялото нещо в черно. Ако искате, можете да добавите бели ивици в долната част на стълба (често срещано в Холандия).

Стъпка 3: Стъпка 3: Сглобяване на RGB LED ленти и пясъкоструене на акрилните плочи

Стъпка 3: Сглобяване на RGB LED ленти и пясъкоструене на акрилните плочи
Стъпка 3: Сглобяване на RGB LED ленти и пясъкоструене на акрилните плочи
Стъпка 3: Сглобяване на RGB LED ленти и пясъкоструене на акрилните плочи
Стъпка 3: Сглобяване на RGB LED ленти и пясъкоструене на акрилните плочи

След това ще трябва да сглобите RGB LED ленти вътре в капачката на светлината. Поставете ги здраво около капачката и ги поставете възможно най -близо до предната част.

След това ще трябва да изпепелите избрания символ за върху акрилната плоча. Вземете малко лента и покрийте цялата акрилна плоча. След това изрежете желаната форма/фигура. След това можете да изпепелите плочата, за да получите ефект, подобен на матово стъкло.

Стъпка 4: Стъпка 4: Свържете RGB LED лентите към Arduino

Стъпка 4: Свържете RGB LED лентите към Arduino
Стъпка 4: Свържете RGB LED лентите към Arduino

Сега идва сложната част: свързването на RGB LED ленти към Arduino. Когато свързвате щифтовете, уверете се, че сте поставили 12v на 12v на вашата лента. Между всеки цвят, толкова червен или зелен, трябва да поставите MOSFET. Свържете данните на LED лентата към средния щифт на 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

#дефиниране паданеLength 3 #define happyLength 4 #define onPhoneLength 13 #define talkLength 5 #define walkingLength 4 #define walkingOutLength 4 #deteine wavingLength 6

бутон бутон Натиснат;

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 = невярно;

bool lightRed = вярно;

int currentAnimationDelay;

void setup () {

// поставете кода за настройка тук, за да се стартира веднъж: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

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 = вярно; }

void loop () {

// забавяне (20);

// поставете основния си код тук, за да се изпълнява многократно: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = вярно; }} иначе ако (animation2Done == false и animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = вярно; }} иначе ако (animation3Done == false и animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = currentMillis; animation3Done = вярно; lightRed = false; }} иначе ако (animation4Done == false и animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = вярно; 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 = вярно; Serial.println ("3"); buttonPressed = true; previousMillis = currentMillis; }

if (str == "ЧЕРВЕН") {

blockLight = false; lightRed = вярно; }

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

blockLight = false; lightRed = false; }

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

blockLight = вярно; analogWrite (g, 255); } if (str == "LIGHT: GREEN: ON") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

if (blockLight == false) {

if (lightRed == true) {

analogWrite (r, 0); analogWrite (g, 255); } if (lightRed == false) {analogWrite (r, 255); analogWrite (g, 0); }}}

Препоръчано: