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

Digilog_Bike POV Display: 14 خطوة
Digilog_Bike POV Display: 14 خطوة

فيديو: Digilog_Bike POV Display: 14 خطوة

فيديو: Digilog_Bike POV Display: 14 خطوة
فيديو: Persistence of Vision Display using Microchip PIC 18F2550 Not Arduino 2024, يوليو
Anonim
Image
Image

ديجيلوج

رقمي + تناظري

الرقمية تلتقي التناظرية

وجهة نظر

استمرار البصرية

تُعرف أيضًا باسم عرض الصور اللاحقة ، إذا اهتزت بسرعة عالية ، تظل الصورة اللاحقة.

يعتقد الناس أنهم يشاهدون الفيديو عندما يشاهدون التلفزيون. لكنه في الحقيقة ينظر إلى عدة صور متتالية. هذا مخطئ بالنسبة للصورة بسبب تأثير الصور اللاحقة المتبقية على شبكية العين عند عرض الصور المتتالية. هذا النوع من الوهم يسمى POV.

الخطوة 1: فكرة الفكرة

مفهوم الفكرة
مفهوم الفكرة

يتم تنفيذ POV عن طريق ربط حزام LED بعجلة الدراجة.

الخطوة 2: قائمة المواد

قائمة مواد
قائمة مواد
قائمة مواد
قائمة مواد

الحوسبة و I / O

1. Arduino Mega 2560 [arduino] x3

2. وحدة استشعار القاعة V2 [YwRobot] x3

3. WS2812-5050 نيوبكسل مرن [Adafruit] x3

4. مغناطيسي (قطر 15 مم ، سمك 50 مم) × 3

5. Arduino Mega Case x3

خط الطاقة

5. 5000mAh / 3.7V بطارية ليثيوم [TheHan] x3

6. منظم وشحن AVR 5V ووحدة PCM: JBATT-U5-LC [Jcnet] x3

7. 4 طقم أسلاك توصيل 65 قطعة / مجموعة [OR0012] x3

الخطوة 3: الأدوات

أدوات
أدوات

لا تحتاج إلى الكثير من الأدوات ولكنك ستحتاج:

1. آلة لحام

2. لحام الحديد

3. مسدس الغراء

4. القراص

الخطوة 4: صنع الإطار

Image
Image
صنع الإطار
صنع الإطار

قطع الدراجة وربط القاعدة

تم استخدام المطحنة لقطع عجلات الدراجة عن الدراجة ولحام الألواح الفولاذية لتأمين العجلات.

الخطوة 5: رسم الصور النهائية والمفاهيم

رسم الصور النهائية والمفاهيم
رسم الصور النهائية والمفاهيم
رسم الصور النهائية والمفاهيم
رسم الصور النهائية والمفاهيم
رسم الصور النهائية والمفاهيم
رسم الصور النهائية والمفاهيم

اخترنا تنينًا كصورة نهائية. لأنه يبدو أن أفضل تمثيل لموجة التنين هو تأثير الصورة اللاحقة.

الخطوة 6: جعل الصورة المتحركة قص

جعل الصورة المتحركة قص
جعل الصورة المتحركة قص
جعل الصورة المتحركة قص
جعل الصورة المتحركة قص

قسّم الصورة إلى ثلاثة أجزاء تناسب كل دراجة وقسم إجمالي 12 صورة حسب اللون والحركة.

الخطوة 7: إعداد البرنامج

إعداد البرمجيات
إعداد البرمجيات
إعداد البرمجيات
إعداد البرمجيات

الجزء الفرعي 1. قم بتثبيت Arduino

تنزيل Arduino:

(قم بالتثبيت ليناسب إصدار نظام التشغيل ونظامك.)

-

الجزء الفرعي 2. تثبيت المكتبة

* (إذا كنت ترغب في التثبيت من خلال Github ، يرجى زيارة الرابط أعلاه مكتبة Github Arduino:

1. قم بتشغيل برنامج Arduino

2. السماح للقائمة العلوية للارتباط - رسم - تضمين مكتبة - إضافة مكتبة مضغوطة

3. يجب عليك اختيار ملف. Zip المثبت بالفعل مكتبة جيثب 4

* (إذا كنت تريد استخدام خدمات برنامج Arduino)

1. قم بتشغيل برامج Arduino

2. اسمح بالقائمة العلوية للرابط - رسم - تضمين مكتبة - مكتبة الإدارة - البحث عن "Adafruit neopixel" - يمكنك رؤية "Adafruit Neopixel من Adafruit"

3. تثبيت وتحديث المكتبة

-

الجزء الفرعي 3. تثبيت برنامج المحول

1. قم بتثبيت برنامج Rotation Circle (R. C. P):

2. أنت بحاجة إلى قراءة ملف README

الخطوة 8: عمل مصدر طاقة للأجهزة

صنع مصدر طاقة الأجهزة
صنع مصدر طاقة الأجهزة
صنع مصدر طاقة للأجهزة
صنع مصدر طاقة للأجهزة
صنع مصدر طاقة الأجهزة
صنع مصدر طاقة الأجهزة

* هذه هي طريقة إمداد Arduino بجهد 5 فولت من خلال البطارية.. يرجى اتباع الخطوات التالية.

1. قم بتوصيل بطارية ليثيوم ووحدة شحن JBATT. (كمرجع ، تحتوي وحدة JBATT على مفتاح طاقة مدمج.)

2. قم بتوصيل طرف الإخراج لـ JBATT بمحطة Vin في Arduino والمحطة الأرضية.

3. قم بتوصيل منفذ USB الصغير 5pin بمنفذ الشحن للتحقق مما إذا كان المنتج يعمل بشكل صحيح.

4. بعد ذلك ، أدر المفتاح المدمج إلى ON.

5. إذا كان المصباح الأحمر يضيء ويضيء المصباح الأخضر في Arduino ، يتم إكمال تكوين مرحلة طاقة المنتج بشكل طبيعي.

الخطوة 9: عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)

عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)
عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)
عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)
عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)
عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)
عمل إدخال / إخراج الأجهزة وفحص الإخراج (عمل NeoPixel)

* يتكون هذا الجزء من جهاز استشعار ومرحلة الإخراج

1. قم بتوصيل مستشعرات Arduino و Hall. يتصل دبوس البيانات بـ Arduino pin 2.

2. عندما يتم تشغيل Arduino ويكون المغناطيس على اتصال وثيق بمستشعر Hall ، سيضيء المصباح الأحمر.

3. قم بتوصيل Arduino و Neopixel. يتم استخدام 30 نيوبكسل فقط.

4. قم بتوصيل دبوس البيانات مع دبوس Arduino 6.

5. قم بتوصيل كابل Arduino وتنزيله بمنفذ USB بجهاز الكمبيوتر الخاص بك وتشغيل Arduino على جهاز الكمبيوتر الخاص بك.

6. حدد Tool - board - "Arduino / Genuino Mega أو Mega 2560" من شريط القائمة العلوي لبرنامج Arduino.

7. تحقق مما إذا كانت هناك قائمة بالمنتجات التي يمكن توصيلها مباشرة بالمنفذ. إذا لم يتم تحديده ، انقر لتحديده.

8. الصق الكود أدناه وانقر فوق تحميل في أعلى اليسار. (بعد ذلك ، تتبع جميع عمليات تحميل البرنامج الخطوات من 5 إلى 8.)

9. يكتمل التكوين عند تشغيل جميع وحدات البكسل الثلاثين.

# 1. بما في ذلك ملف الرأس والمعالجة المسبقة

نحتاج أولاً إلى إحضار مكتبة Adafruit_NeoPixel القادرة على تمثيل Neopixels.

يمكن استخدام المكتبة بالتصريح عن الأشياء.

يمكن لفئة Adafruit_NeoPixel إدخال 3 معلمات في الأماكن العامة.

المعلمة الأولى هي عدد المصابيح.

معامل الثواني هو رقم التعريف الشخصي المتصل بإدخال Neopixel الرقمي.

المعلمة الثالثة هي إدخال خيارات وفقًا لخصائص المنتج. يستخدم منتج WS2812b ثلاثي الألوان الإدخال "NEO_GRB"

#يشمل

#define PIN 6 Adafruit_NeoPixel strip = Adafruit_Neopixel (30، PIN، NEO_GRB + NEO_KHZ800) ؛

# 2. اقامة

في جزء الإعداد ، قم بتهيئة الكائن وتجهيزه للاستخدام.

يضبط "Adafruit_Neopixle_Object.begin ()" جميع مصابيح LED لإيقاف تشغيلها.

مخرجات "Adafruit_Neopixle_Object.show ()" مع ضبط السطوع في LED.

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

strip.begin () ، عرض الشريط()؛ }

# 3. الحلقة الرئيسية

يستخدم عمل الحلقة الرئيسية حلقة for لإخراج متسلسل (0.1 ثانية) لمصابيح LED باللون الأبيض

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

لـ (uint16_t i = 0 ؛ i <strip.numPixels () ؛ i ++) {strip.setPixelColor (i، 255، 255، 255) ؛ عرض الشريط()؛ تأخير (100) ؛ }}

الخطوة 10: تجميع وتثبيت العجلة

تجميع وتثبيت العجلة
تجميع وتثبيت العجلة
تجميع وتثبيت العجلة
تجميع وتثبيت العجلة

1. قم بتوصيل Neopixels. (انتبه للتحقق من الرقم السري)

2. قم بتوصيل مستشعر القاعة. (راجع الخطوة 9)

3. إرفاق الإطار إلى Arduino بين الدراجات. (قم بتوصيل علبة Arduino بالتوازي مع إطار الدراجة).

4. أدخل Arduino المتصل بـ Neopixel. (كن حذرًا لأن مسدس الغراء ساخن).

5. أدخل مستشعر Hall المتصل في Arduino ، (قم بتأمين ربطة الكبل حتى لا يسقط مستشعر Hall).

6. جندى لتوصيل البطارية. (كن حذرًا عند اللحام).

7. إصلاحه بمسدس الغراء. (قم بتوصيل وحدة الشحن بالبطارية لتأمين المساحة).

8. قم بتوصيل كل سطر قبل الاتصال بـ Arduino ،

9. قم بالتوصيل وفقًا لكل رقم تعريف شخصي. (قم بتوصيل خطوط القفز لوحدة الشحن دون إرباكها).

10. قم بإنهاء مسدس الغراء مرة واحدة ، (يرجى الحرص على عدم السقوط).

الخطوة 11: فحص الإدخال (بيانات مستشعر القاعة)

فحص المدخلات (بيانات مستشعر القاعة)
فحص المدخلات (بيانات مستشعر القاعة)
فحص المدخلات (بيانات مستشعر القاعة)
فحص المدخلات (بيانات مستشعر القاعة)
فحص المدخلات (بيانات مستشعر القاعة)
فحص المدخلات (بيانات مستشعر القاعة)

* تحقق من رمز البرنامج لمعرفة ما إذا كان المستشعر يعمل.

1. الصق وتحميل الكود أدناه.

2. انقر فوق الزر Serial Monitor أعلى يمين Arduino.

3. عندما يتلامس المغناطيس مع مستشعر القاعة لأكثر من ثانية واحدة ، يكتمل التكوين عندما تظهر كلمة "ملامسة مغناطيسية" على الشاشة التسلسلية.

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- # 1. تحديد رقم التعريف الشخصي والإعداد

رقم التعريف الشخصي الأول للتكوين لاستخدام مستشعر Hall وتعيين رقم التعريف الشخصي كمنفذ للإدخال فقط.

اضبط الاتصال للتحقق من بيانات مستشعر Hall على الشاشة التسلسلية.

#define القاعة 2

إعداد باطل () {pinMode (HALL، INPUT) ؛ Serial.begin (9600) ؛ }

# 2. الحلقة الرئيسية

تحقق من بيانات مستشعر القاعة على فترات 0.1 ثانية.

إذا تم استشعار المغناطيس وتغيرت البيانات ، فسيتم إخراج "مغناطيسي الاتصال" إلى الشاشة التسلسلية.

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

if (digitalRead (HALL)) {Serial.println ("اتصال مغناطيسي") ؛ } تأخير (100)؛ }

الخطوة 12: خوارزمية الترميز

* إنشاء منطق وترميز للتحكم في Neopixels بناءً على قيم المستشعر.

1. الصق وتحميل الكود أدناه.

2. من الطبيعي ألا يتم عرض الصورة بشكل صحيح لأنه لا يتم إنتاج إطار. لكن يمكنك أن ترى أنه يعمل بشكل تقريبي.

3. المس بسرعة وحرر مستشعر القاعة والمغناطيس في غضون ثانية واحدة. كرر هذه العملية حوالي 10 مرات.

4. يكتمل التكوين عندما تتغير ألوان Neopixels بانتظام.

# 1. بما في ذلك ملفات الرأس والمعالجة المسبقة

أولاً ، يجب أن نفهم أن ذاكرة Arduino Mega ليست كبيرة بما يكفي لاستيعاب ملف صورة.

لذلك ، يتم استخدام ملف الرأس "avr / pgmspace" للاستفادة من مساحة ذاكرة مختلفة.

لاستخدام Neopixels ، فإنك تعلن عن كائن وتكوين رقم التعريف الشخصي للإدخال / الإخراج.

مصفوفة الصور كبيرة جدًا بحيث لا يمكن ترميزها ، لذا قم بتنزيل الملفات المرفقة والصقها.

#يشمل

# تضمين # تعريف PIN 6 # تعريف NUMPIXELS 30 #define HALL 2 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS، PIN، NEO_RGB + NEO_KHZ800) ؛ // لصق المصفوفة في 'image_array_1.txt' // "" image_array_2.txt '// "" image_array_3.txt' // "" image_array_4.txt '

# 2. المتغير العام والإعداد

قم بتعيين متغير عام.

الشيء الرئيسي هو ضبط السطوع ، فهو يحدد دورة حياة المنتج.

عدد صحيح = 0 ؛

مزدوج الخامس = 0 ؛ ضعف last_v = 0 ؛ مؤقت مزدوج = ميكرو () ؛ ex_timer مزدوج = ميكرو () ؛ last_timer مزدوج = ميكرو () ؛ درجة كثافة العمليات = 36 ؛ بيكس int = 35 ؛ int rgb = 3 ؛ مزدوج q_arr [2] = {0 ، 0} ؛ عدد صحيح HALL_COUNT = 0 ؛ مزدوج VELO ؛ معالجة مزدوجة = ميكرو () ؛ إعداد باطل () {strip.setBrightness (255) ؛ strip.begin () ، عرض الشريط()؛ Serial.begin (230400) ؛ }

# 3. الحلقة الرئيسية - جزء إخراج التعبير عن الصورة

هذا الرمز عبارة عن بيان شرطي حول كيفية إخراج الوقت الذي تدور فيه العجلة بدقة.

يستخدم هذا الجزء دورة تدوير عجلة الدراجة مرة واحدة كمعامل مهم للغاية.

أيضًا ، من المهم قراءة بيانات مجموعة الصور من الذاكرة.

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

if ((count (ex_timer / 120.0) - (micros () - Processing_timer))) {timer = micros () ؛ إذا (VELO> 360000) {لـ (int i = 0 + 5؛ i <pix؛ i ++) {strip.setPixelColor (i - 5، strip. Color (pgm_read_byte (& (image_1 [count] [1])) ، pgm_read_byte (& (image_1 [count] [2])) ، pgm_read_byte (& (image_1 [count] [0]))) ؛ } عرض الشريط()؛ } else if (VELO 264000) {for (int i = 0 + 5؛ i <pix؛ i ++) {strip.setPixelColor (i - 5، strip. Color (pgm_read_byte (& (image_2 [count] [1])) ، pgm_read_byte (& (image_2 [count] [2])) ، pgm_read_byte (& (image_2 [count] [0]))) ؛ } عرض الشريط()؛ } else if (VELO 204000) {for (int i = 0 + 5؛ i <pix؛ i ++) {strip.setPixelColor (i - 5، strip. Color (pgm_read_byte (& (image_3 [count] [1])) ، pgm_read_byte (& (image_3 [count] [2])) ، pgm_read_byte (& (image_3 [count] [0]))) ؛ } عرض الشريط()؛ } else if (VELO <= 204000) {for (int i = 0 + 5؛ i = 120)) {for (int i = 0 + 5؛ i <pix؛ i ++) {strip.setPixelColor (i - 5، strip. اللون (0 ، 0 ، 0)) ؛ } عرض الشريط()؛ }

# 4. الحلقة الرئيسية - فحص واستشعار وقت المعالجة والدورة

هذا هو الجزء الأكثر أهمية في النظام بأكمله.

أولاً ، تحقق من الوقت المستغرق لتنفيذ الكود بالكامل وضبط وقت إخراج LED لكل دورة.

الوقت الذي يتم استشعاره في كل مرة تدور فيها العجلة يتنبأ بوقت الدورة التالية.

يمكن تقدير التسارع بطرح آخر وقت للدورة المقاسة من وقت الدورة المقاس في الوقت المحدد.

يحسب النظام وقت المعالجة والتسارع لحساب المدة التي تعمل فيها مصابيح LED بشكل مستمر.

Processing_timer = ميكرو () ؛

إذا ((digitalRead (HALL) == HIGH) && (HALL_COUNT == 1)) {VELO = v ؛ v = ميكرو () - last_timer ؛ ex_timer = q_arr [0] - q_arr [1] + v ؛ last_timer = ميكرو () ؛ q_arr [0] = q_arr [1] ؛ q_arr [1] = v ؛ العد = 0 ؛ HALL_COUNT = 0 ، } else if (digitalRead (HALL) == LOW) {HALL_COUNT = 1 ؛ }}

الخطوة 13: استخدام البرنامج

باستخدام البرنامج
باستخدام البرنامج
باستخدام البرنامج
باستخدام البرنامج
باستخدام البرنامج
باستخدام البرنامج

* استخدم البرنامج لتحويل الصورة وإدخال بيانات المعالجة في الكود

1. أدخل الصورة من الخطوة أعلاه في مجلد الصور في مجلد R. C. P المثبت في خطوة التحضير.

- كيفية وضع الصورة كما يلي. - إعادة تسمية 4 صور متحركة للمنتج رقم 1 بالترتيب 1-p.webp

2. قم بتشغيل ملف Ver.5.exe.

3. تحقق من إنشاء 12 ملفًا من pro_1_code_1.txt إلى pro_3_code_4.txt في مجلد R. C. P.

4. إذا لم يتم إنشاؤه ، فقم بتغيير محتويات config.txt كملف التكوين التالي.

5. بمجرد إنشاء الملف ، انسخ المحتوى بالكامل من الملف pro_1_code_1.txt والصقه في الجزء الموضح في الكود أدناه.

6. أضف محتويات pro_1_code_2.txt و pro_1_code_3.txt و pro_1_code_4.txt إلى الجزء المحدد بالترتيب الخامس.

7. بالإشارة إلى 5 و 6 ، فإن pro_2_code…، pro_3_code يكمل الكود بنفس الطريقة.

الخطوة 14: أكمل

مكتمل
مكتمل
مكتمل
مكتمل
مكتمل
مكتمل

تم الانتهاء من إنتاج POV الذي يخلق صورة واحدة بثلاث عجلات.

موصى به: