Мазмуну:

Smart Interactive светофор: 5 кадам (сүрөттөр менен)
Smart Interactive светофор: 5 кадам (сүрөттөр менен)

Video: Smart Interactive светофор: 5 кадам (сүрөттөр менен)

Video: Smart Interactive светофор: 5 кадам (сүрөттөр менен)
Video: PLAYDEADS INSIDE SCARES EVERYONE OUTSIDE 2024, Ноябрь
Anonim
Smart Interactive светофор
Smart Interactive светофор

Дүйнөнүн эң мыкты жана интерактивдүү светофорун курууга даярсызбы? Жакшы! Бул үйрөткүчтө биз Arduino аркылуу кантип өзүңүз кура алаарыңызды түшүндүрөбүз.

Керектүү компоненттер:- Arduino (..duh)- LM317 Mosfet- 2x 60cm аналогдук RGB LED тилкелери (12V)- PVC түтүк (1м x 125мм)- Кабелдер (кызыл жана кара)- Жарык капкактары үчүн металл плиталар- Жарык үчүн акрил -icons (.svg иконкалары үчүн flaticon.com текшериңиз)- Spraycan ак-кара боёгу.- Электр лента- Бардык керектүү ширетүүчү компоненттери- Дисплей талап кылынган калкан менен (окуу куралында колдонулбайт)

1-кадам: 1-кадам: Light-caps жасаңыз

1-кадам: Light-caps жасаңыз
1-кадам: Light-caps жасаңыз

Дизайн чынында сизге байланыштуу. Чырактарды кармоо үчүн 15х15 см калпак жасадык. Биз металл плиталарды туура өлчөмдө кесип, капкактарды туура формада бүгүү үчүн металл ийилгичти (жок, Аватардан эмес) колдондук. Арткы плиталар башка компоненттен жасалган.

2 -кадам: 2 -кадам: PVC мамычасын даярдоо

2 -кадам: PVC мамыны даярдоо
2 -кадам: PVC мамыны даярдоо

Поливинилхолдун 2 капкагын жарык капкактарга ылайыкташтырып кесип алыңыз. Анан кара боёк чачкычын колдонуп, бүт нерсени кара түскө боёгула. Кааласаңыз, шыргыйдын түбүнө ак тилкелерди кошсоңуз болот (Голландияда кеңири таралган).

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 тилкеңиздин 12v -ге койгонуңузга ишениңиз. Кызыл же жашыл түстөрдүн арасына мосфет коюш керек. Жетектелген тилкенин маалыматтарын мосфеттин ортоңку пинине, ал эми сол пинди Arduinoңузга туташтырыңыз. Оң пин Ардуинонун жерге кайтып барышы керек.

5 -кадам: 5 -кадам: Arduino кодун жазыңыз

5 -кадам: Arduino кодун жазыңыз
5 -кадам: Arduino кодун жазыңыз

Бул Arduino коду Bluetooth аркылуу башкарылат, анткени биз ички дисплейди колдонгон эмеспиз. Ошентип, код bluetooth билдирүүлөрү аркылуу loop () функциясында башкарылат.

#аныктоо r 6 #аныктоо g 11 #кошуу

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

#ачууланган узундугун аныктоо 4

#жыгылууну аныктайлы3

бол баскычы басылды;

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;

жараксыз орнотуу () {

// орнотуу кодуңузду бул жерге коюңуз, бир жолу иштетүү үчүн: 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 = 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 = жалган; }} башка if (animation4Done == false жана animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

String str = Serial.readString (); эгер (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

animation2Done = жалган; animation3Done = жалган; animation4Done = жалган; 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; }

эгер (str == "КЫЗЫЛ") {

blockLight = жалган; lightRed = true; }

эгер (str == "Жашыл") {

blockLight = жалган; lightRed = жалган; }

эгер (str == "LIGHT: GREEN: OFF") {

blockLight = чындык; analogWrite (g, 255); } if (str == "LIGHT: GREEN: ON") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

эгер (blockLight == жалган) {

if (lightRed == true) {

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

Сунушталууда: