תוכן עניינים:

רמזור אינטראקטיבי חכם: 5 שלבים (עם תמונות)
רמזור אינטראקטיבי חכם: 5 שלבים (עם תמונות)

וִידֵאוֹ: רמזור אינטראקטיבי חכם: 5 שלבים (עם תמונות)

וִידֵאוֹ: רמזור אינטראקטיבי חכם: 5 שלבים (עם תמונות)
וִידֵאוֹ: ככה זה כשיש לך חברה רוסיה 2024, נוֹבֶמבֶּר
Anonim
רמזור אינטראקטיבי חכם
רמזור אינטראקטיבי חכם

מוכנים לבנות רמזור טוב ואינטראקטיבי בעולם? טוֹב! במדריך זה נסביר כיצד תוכל לבנות אחד בעצמך באמצעות Arduino.

רכיבים נדרשים:- Arduino (..duh)- LM317 Mosfet- 2x60 ס"מ אנלוגי RGB LED רצועות (12V)- צינור PVC (1 מ 'x 125 מ"מ)- כבלים (אדום ושחור)- לוחות מתכת לכובעי אור- אקריל לאור -ייקונים (בדוק flaticon.com לסמלי.svg)- צבע ריסוס בשחור-לבן.- קלטת חשמל- כל רכיבי ההלחמה הנדרשים- תצוגה עם מגן נדרש (לא בשימוש)

שלב 1: שלב 1: הכינו את כובעי האור

שלב 1: הכינו את כובעי Light
שלב 1: הכינו את כובעי Light

העיצוב באמת תלוי בך. הכנו כובע בגודל 15X15 ס מ כדי להחזיק את האורות. חתכנו את לוחות המתכת לגודל הנכון והשתמשנו בכופף מתכת (לא, לא מאווטאר) כדי לכופף את המכסים בצורות הנכונות. הלוחות האחוריים עשויים מרכיב אחר.

שלב 2: שלב 2: הכנת הקוטב PVC

שלב 2: הכנת הקוטב PVC
שלב 2: הכנת הקוטב PVC

חותכים 2 חורים במוט ה- PVC כך שיתאים לכובעי האור. לאחר מכן השתמש בסיר צבע שחור כדי לצייר את כל הדבר בשחור. אם תרצה, תוכל להוסיף פסים לבנים בתחתית המוט (נפוץ בהולנד).

שלב 3: שלב 3: הרכבת רצועות LED RGB והתזת חול של לוחות האקריליק

שלב 3: הרכבת רצועות LED RGB והתזת חול של לוחות האקריליק
שלב 3: הרכבת רצועות LED RGB והתזת חול של לוחות האקריליק
שלב 3: הרכבת רצועות LED RGB והתזת חול של לוחות האקריליק
שלב 3: הרכבת רצועות LED RGB והתזת חול של לוחות האקריליק

בשלב הבא תצטרך להרכיב את רצועות LED RGB בתוך מכסה האור. הצב אותם היטב סביב הכובע והנח אותם קרוב ככל האפשר לחזית.

בשלב הבא תצטרך לבצע התזת חול על הסמל שנבחר על צלחת האקריליק. קח מעט סרט וכיסה את כל צלחת האקריליק. לאחר מכן גזרו את הצורה/הדמות שאתם רוצים. לאחר מכן, אתה יכול לנפח את הצלחת כדי לקבל אפקט דמוי זכוכית חלבית.

שלב 4: שלב 4: חבר את רצועות LED RGB ל- Arduino

שלב 4: חבר את רצועות LED RGB ל- Arduino
שלב 4: חבר את רצועות LED RGB ל- Arduino

עכשיו מגיע החלק המסובך: חיבור רצועות LED RGB ל- Arduino. כאשר אתה מחבר את הפינים וודא שאתה שם את 12V על 12V של הרצועה שלך. בין כל צבע, כל כך אדום או ירוק, אתה צריך לשים mosfet. חבר את נתוני רצועת הלד לסיכה האמצעית של המוספט, והסיכה השמאלית לארדואינו שלך. הסיכה הימנית צריכה לחזור לקרקע של הארדואינו.

שלב 5: שלב 5: כתוב את קוד הארדואינו

שלב 5: כתוב את קוד הארדואינו
שלב 5: כתוב את קוד הארדואינו

קוד Arduino זה נשלט על ידי Bluetooth, מכיוון שלא השתמשנו בתצוגה פנימית. אז הקוד נשלט באמצעות הודעות בלוטות 'בפונקציית הלולאה ().

#הגדר r 6 #הגדר g 11 #כלול

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

#define angry אורך 4

#הגדר נפילה אורך 3 #הגדר שמח אורך 4 #הגדר על טלפון אורך 13 #הגדר דיבור אורך 5 #הגדר הליכה אורך 4 #הגדר הליכה OUTLength 4 #הגדיר את הנפח אורך 6

לחצן bool לחוץ;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = false; bool animation3Done = false; bool animation4Done = false; אנימציה bool5Done = 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; }

לולאת חלל () {

// עיכוב (20);

// שים את הקוד הראשי שלך כאן, כדי להריץ שוב ושוב: currentMillis ארוך ללא סימן = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = true; }} אחרת אם (animation2Done == false ו- animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = true; }} אחרת אם (animation3Done == false ו- animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("צליל: ירוק "); previousMillis = currentMillis; animation3Done = true; lightRed = false; }} אחרת אם (animation4Done == false ו- animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

String 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 = false; }

if (str == "LIGHT: ירוק: כבוי") {

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

אם (blockLight == false) {

אם (lightRed == true) {

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

מוּמלָץ: