جدول المحتويات:

إشارة مرور تفاعلية ذكية: 5 خطوات (مع صور)
إشارة مرور تفاعلية ذكية: 5 خطوات (مع صور)

فيديو: إشارة مرور تفاعلية ذكية: 5 خطوات (مع صور)

فيديو: إشارة مرور تفاعلية ذكية: 5 خطوات (مع صور)
فيديو: أغنية إشارة المرور للأطفال - أغاني تعليمية من قناة كرزه 2024, شهر نوفمبر
Anonim
ضوء المرور التفاعلي الذكي
ضوء المرور التفاعلي الذكي

هل أنت مستعد لبناء أفضل إشارات المرور وأكثرها تفاعلية في العالم؟ حسن! في هذا البرنامج التعليمي ، سنشرح كيف يمكنك بناء واحد بنفسك باستخدام Arduino.

المكونات المطلوبة: - Arduino (..duh) - LM317 Mosfet- شرائط RGB LED التناظرية 2 × 60 سم (12 فولت) - أنبوب PVC (1 م × 125 مم) - الكابلات (أحمر وأسود) - ألواح معدنية لأغطية الضوء- أكريل للضوء -أيقونات (تحقق من flaticon.com لرموز.svg) - طلاء Spraycan بالأبيض والأسود. - شريط كهربائي - جميع مكونات اللحام المطلوبة - العرض مع الدرع المطلوب (غير مستخدم في البرنامج التعليمي)

الخطوة 1: الخطوة 1: اصنع قبعات الضوء

الخطوة 1: اصنع قبعات الضوء
الخطوة 1: اصنع قبعات الضوء

التصميم متروك لك حقًا. لقد صنعنا غطاءًا مقاس 15 × 15 سم لإمساك الأضواء. لقد قطعنا الألواح المعدنية إلى الحجم الصحيح واستخدمنا أداة ثني معدنية (لا ، ليس من Avatar) لثني الأغطية في الأشكال الصحيحة. تم صنع الألواح الخلفية من مكون مختلف.

الخطوة 2: الخطوة 2: تجهيز القطب PVC

الخطوة 2: تجهيز القطب PVC
الخطوة 2: تجهيز القطب PVC

قطع فتحتين في القطب 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 بأردوينو. عندما تقوم بتوصيل المسامير ، تأكد من وضع 12 فولت على 12 فولت من الشريط الخاص بك. بين كل لون ، أحمر أو أخضر ، تحتاج إلى وضع موسفيت. قم بتوصيل بيانات شريط LED بالدبوس الأوسط من mosfet ، والدبوس الأيسر بـ Arduino. يجب أن يعود الدبوس الأيمن إلى أرض Arduino.

الخطوة 5: الخطوة 5: اكتب كود Arduino

الخطوة 5: اكتب كود اردوينو
الخطوة 5: اكتب كود اردوينو

يتم التحكم في كود Arduino عن طريق البلوتوث ، لأننا لم نستخدم شاشة داخلية. لذلك يتم التحكم في الكود عبر رسائل البلوتوث في وظيفة الحلقة ().

#define r 6 # حدد g 11 # تضمين

SoftwareSerial mySerial (10 ، 11) ؛ // RX ، TX

#define angryLength 4

# تعريف السقوط الطول 3 # تعريف السعادة الطول 4 # تعريف الهاتف الطول 13 # تعريف الحديث الطول 5 # تحديد المشي الطول 4 # تحديد المشي الطول 4 # الموجة التعريفية الطول 6

زر منطقي

كثافة العمليات الحالية الباحث السابق ميليس.

الرسوم المتحركة int1Delay.

الرسوم المتحركة int2Delay. الرسوم المتحركة int3Delay. الرسوم المتحركة Int4Delay.

الرسوم المتحركة المنطقية 1 تم = خطأ ؛

الرسوم المتحركة المنطقية 2Done = خطأ ؛ bool animation3Done = خطأ ؛ bool animation4Done = خطأ ؛ الرسوم المتحركة المنطقية 5 تم = خطأ ؛

كتلة منطقية ضوء = خطأ ؛

ضوء منطقي أحمر = صحيح ؛

الحالي int currentAnimationDelay ؛

الإعداد باطل() {

// ضع رمز الإعداد الخاص بك هنا ، للتشغيل مرة واحدة: pinMode (r، OUTPUT)؛ pinMode (g ، الإخراج) ؛

Serial.begin (9600) ؛

mySerial.begin (38400) ، Serial.setTimeout (25) ، buttonPressed = خطأ ؛ تيار ميليس = 0 ؛ السابق ميليس = 0 ؛

الرسوم المتحركة 1 تأخير = المشي الطول * 1000 ؛

anim2Delay = wavingLength * 1000 ؛ Animation3Delay = happyLength * 1000 ؛ Animation4Delay = WalkingOutLength * 1000 ؛

// currentAnimationDelay = animation1Delay * 1000 ؛

lightRed = صحيح ؛ }

حلقة فارغة() {

// تأخير (20) ؛

// ضع الكود الرئيسي هنا ، للتشغيل بشكل متكرر: long currentMillis = millis ()؛ إذا (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0")؛ PreviousMillis = CurrentMillis ؛ الرسوم المتحركة 1 تم = صحيح ؛ }} else if (animation2Done == false and animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1")؛ PreviousMillis = CurrentMillis ؛ anim2Done = صحيح ؛ }} else if (animation3Done == false and animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2")؛ //Serial.println("sound:green ") ؛ PreviousMillis = CurrentMillis ؛ Animation3Done = صحيح ؛ lightRed = خطأ ؛ }} else if (animation4Done == false and animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis؛ Animation4Done = صحيح ؛ Serial.println ("FLSH") ؛ }}}

إذا (Serial.available ()) {

String str = Serial.readString () ، إذا (str == "CMD: BUTTON_PRESSED") {

الرسوم المتحركة 1 تم = خطأ ؛

anim2Done = خطأ ؛ Animation3Done = خطأ ؛ Animation4Done = خطأ ؛ الرسوم المتحركة 5 تم = خطأ ؛

الرسوم المتحركة 1 تأخير = المشي الطول * 1000 ؛

anim2Delay = wavingLength * 1000 ؛ Animation3Delay = happyLength * 1000 ؛ Animation4Delay = WalkingOutLength * 1000 ؛

// currentAnimationDelay = animation1Delay * 1000 ؛

lightRed = صحيح ؛ Serial.println ("3") ؛ buttonPressed = صحيح ؛ PreviousMillis = CurrentMillis ؛ }

إذا (str == "RED") {

blockLight = خطأ ؛ lightRed = صحيح ؛ }

إذا (str == "أخضر") {

blockLight = خطأ ؛ lightRed = خطأ ؛ }

إذا (str == "LIGHT: GREEN: OFF") {

blockLight = صحيح ؛ analogWrite (ز ، 255) ؛ } if (str == "LIGHT: GREEN: ON") {blockLight = true؛ analogWrite (ز ، 0) ؛ } //Serial.println(str) ؛ }

إذا (blockLight == خطأ) {

إذا (lightRed == صحيح) {

analogWrite (ص ، 0) ؛ analogWrite (ز ، 255) ؛ } if (lightRed == false) {analogWrite (r، 255) ؛ analogWrite (ز ، 0) ؛ }}}

موصى به: