สารบัญ:

Digilog_Bike POV Display: 14 ขั้นตอน
Digilog_Bike POV Display: 14 ขั้นตอน

วีดีโอ: Digilog_Bike POV Display: 14 ขั้นตอน

วีดีโอ: Digilog_Bike POV Display: 14 ขั้นตอน
วีดีโอ: 3D hologram fan portrait solution. Who wanna date this holographic sexy lady #3dhologramfan 2024, กรกฎาคม
Anonim
Image
Image

Digilog

ดิจิตอล + อนาล็อก

ดิจิตอลพบกับอะนาล็อก

POV

ความคงทนของภาพ

หรือที่เรียกว่าการแสดงภาพ Afterimage หากเขย่าด้วยความเร็วสูง ภาพ Afterimage จะยังคงอยู่

ผู้คนคิดว่าพวกเขากำลังดูวิดีโอเมื่อพวกเขาดูทีวี แต่ในความเป็นจริง เขากำลังดูภาพต่อเนื่องกันหลายภาพ สิ่งนี้ถูกเข้าใจผิดว่าเป็นรูปภาพเนื่องจากเอฟเฟกต์ของภาพติดตาที่เหลืออยู่บนเรตินาของเราเมื่อดูภาพต่อเนื่องกัน ภาพลวงตาแบบนี้เรียกว่า POV

ขั้นตอนที่ 1: แนวคิดของไอเดีย

แนวคิดแนวคิด
แนวคิดแนวคิด

POV ทำได้โดยการติดสายรัด LED เข้ากับล้อจักรยาน

ขั้นตอนที่ 2: รายการวัสดุ

รายการวัสดุ
รายการวัสดุ
รายการวัสดุ
รายการวัสดุ

คอมพิวเตอร์ & I/O

1. Arduino Mega 2560 [arduino] x3

2. โมดูลเซนเซอร์ Hall V2 [YwRobot] x3

3. WS2812-5050 Neopixel ยืดหยุ่น [Adafruit] x3

4. แม่เหล็ก (เส้นผ่านศูนย์กลาง 15 มม. หนา 50 มม.) x3

5. Arduino Mega Case x3

สายไฟ

5. แบตเตอรี่ลิเธียม 5000mAh/3.7V [TheHan] x3

6. AVR 5V ตัวควบคุม & การชาร์จ & โมดูล PCM: JBATT-U5-LC [Jcnet] x3

7. ชุดสายไฟ 4Jumper 65PCS/SET [OR0012] x3

ขั้นตอนที่ 3: เครื่องมือ

เครื่องมือ
เครื่องมือ

ไม่จำเป็นต้องใช้เครื่องมือมากเกินไป แต่คุณจะต้อง:

1. เครื่องบัดกรี

2. หัวแร้ง

3. ปืนกาว

4. ก้ามปู

ขั้นตอนที่ 4: การสร้างเฟรม

Image
Image
ทำกรอบ
ทำกรอบ

ตัดจักรยานและติดฐาน

เครื่องบดใช้เพื่อตัดล้อจักรยานออกจากจักรยานและแผ่นเหล็กเชื่อมเพื่อยึดล้อ

ขั้นตอนที่ 5: ร่างภาพและแนวคิดขั้นสุดท้าย

การร่างภาพและแนวคิดขั้นสุดท้าย
การร่างภาพและแนวคิดขั้นสุดท้าย
การร่างภาพและแนวคิดขั้นสุดท้าย
การร่างภาพและแนวคิดขั้นสุดท้าย
การร่างภาพและแนวคิดขั้นสุดท้าย
การร่างภาพและแนวคิดขั้นสุดท้าย

เราเลือกมังกรเป็นภาพสุดท้าย เพราะคลื่นของมังกรดูเหมือนจะแสดงได้ดีที่สุดด้วยเอฟเฟกต์ภาพติดตา

ขั้นตอนที่ 6: ทำการตัดภาพเคลื่อนไหว

ทำให้ภาพเคลื่อนไหวตัด
ทำให้ภาพเคลื่อนไหวตัด
ทำให้ภาพเคลื่อนไหวตัด
ทำให้ภาพเคลื่อนไหวตัด

แบ่งภาพออกเป็นสามส่วนเพื่อให้พอดีกับจักรยานแต่ละคัน และแบ่งภาพทั้งหมด 12 ภาพตามสีและการเคลื่อนไหว

ขั้นตอนที่ 7: การเตรียมซอฟต์แวร์

การเตรียมซอฟต์แวร์
การเตรียมซอฟต์แวร์
การเตรียมซอฟต์แวร์
การเตรียมซอฟต์แวร์

ส่วนย่อย 1. ติดตั้ง Arduino

ดาวน์โหลด Arduino:

(ติดตั้งให้พอดีกับเวอร์ชันระบบปฏิบัติการและระบบของคุณ)

-

ส่วนที่ 2 ติดตั้งไลบรารี

*(หากคุณต้องการติดตั้งผ่าน Github โปรดไปที่ลิงก์ด้านบน Github Arduino Library:

1. เรียกใช้โปรแกรม Arduino

2. อนุญาตลิงก์ เมนูด้านบน – ร่าง – รวมไลบรารี – เพิ่ม. Zip library

3. คุณควรเลือกไฟล์. Zip ที่ติดตั้ง github library4. แล้ว

*(หากต้องการใช้บริการโปรแกรม Arduino)

1. เรียกใช้โปรแกรม Arduino

2. อนุญาตลิงก์ เมนูด้านบน - ร่าง - รวมไลบรารี - ไลบรารีการจัดการ - ค้นหา 'Adafruit neopixel' - คุณสามารถดู 'Adafruit Neopixel โดย Adafruit'

3. ติดตั้งและอัปเดตไลบรารี

-

ส่วนที่ 3 ติดตั้งโปรแกรมแปลงไฟล์

1. ติดตั้งโปรแกรม Rotation Circle (R. C. P):

2. คุณต้องอ่านไฟล์ README

ขั้นตอนที่ 8: การสร้างฮาร์ดแวร์พาวเวอร์ซัพพลาย

ทำฮาร์ดแวร์พาวเวอร์ซัพพลาย
ทำฮาร์ดแวร์พาวเวอร์ซัพพลาย
ทำฮาร์ดแวร์พาวเวอร์ซัพพลาย
ทำฮาร์ดแวร์พาวเวอร์ซัพพลาย
ทำฮาร์ดแวร์พาวเวอร์ซัพพลาย
ทำฮาร์ดแวร์พาวเวอร์ซัพพลาย

*นี่คือวิธีการจ่ายแรงดันไฟ Arduino 5V ผ่านแบตเตอรี่ โปรดทำตามขั้นตอนด้านล่าง

1. เชื่อมต่อแบตเตอรี่ลิเธียมและโมดูลการชาร์จ JBATT (สำหรับการอ้างอิง โมดูล JBATT มีสวิตช์เปิดปิดในตัว)

2. เชื่อมต่อขั้วเอาต์พุตของ JBATT กับเทอร์มินัล Vin ของ Arduino และเทอร์มินัลกราวด์

3. เชื่อมต่อพอร์ต USB Micro 5pin เข้ากับพอร์ตชาร์จเพื่อตรวจสอบว่าผลิตภัณฑ์ทำงานอย่างถูกต้องหรือไม่

4. ถัดไป เปิดสวิตช์ในตัวไปที่เปิด

5. หากไฟ LED สีแดงสว่างขึ้นและไฟ LED สีเขียวสว่างขึ้นใน Arduino การกำหนดค่าขั้นตอนพลังงานของผลิตภัณฑ์จะเสร็จสมบูรณ์ตามปกติ

ขั้นตอนที่ 9: การสร้างฮาร์ดแวร์ I/O และการตรวจสอบเอาต์พุต (การทำงาน NeoPixel)

การสร้าง I/O ของฮาร์ดแวร์และการตรวจสอบ OUTPUT (การทำงานของ NeoPixel)
การสร้าง I/O ของฮาร์ดแวร์และการตรวจสอบ OUTPUT (การทำงานของ NeoPixel)
การสร้างฮาร์ดแวร์ I/O และการตรวจสอบเอาต์พุต (การทำงาน NeoPixel)
การสร้างฮาร์ดแวร์ I/O และการตรวจสอบเอาต์พุต (การทำงาน NeoPixel)
การสร้างฮาร์ดแวร์ I/O และการตรวจสอบเอาต์พุต (การทำงาน NeoPixel)
การสร้างฮาร์ดแวร์ I/O และการตรวจสอบเอาต์พุต (การทำงาน NeoPixel)

*ส่วนนี้ประกอบด้วยเซ็นเซอร์และระยะเอาต์พุต

1. เชื่อมต่อเซ็นเซอร์ Arduino และ Hall data pin เชื่อมต่อกับ Arduino pin 2

2. เมื่อเปิดเครื่อง Arduino และแม่เหล็กอยู่ใกล้กับเซ็นเซอร์ Hall ไฟ LED สีแดงจะสว่างขึ้น

3. เชื่อมต่อ Arduino และ Neopixel ใช้เพียง 30 Neopixels

4. เชื่อมต่อ data pin กับ Arduino pin 6

5. เชื่อมต่อ Arduino และดาวน์โหลดสายเคเบิลเข้ากับพอร์ต usb ของคอมพิวเตอร์ของคุณและเรียกใช้ Arduino บนคอมพิวเตอร์ของคุณ

6. เลือก Tool – board – “Arduino / Genuino Mega or Mega 2560” จากแถบเมนูด้านบนของโปรแกรม Arduino

7. ตรวจสอบว่ามีรายการผลิตภัณฑ์ที่สามารถเชื่อมต่อโดยตรงกับพอร์ตหรือไม่ หากไม่ได้เลือกไว้ ให้คลิกเพื่อเลือก

8. วางโค้ดด้านล่างแล้วคลิกอัปโหลดที่ด้านบนซ้าย (หลังจากนั้น การอัพโหลดโปรแกรมทั้งหมดจะทำตามขั้นตอนที่ 5-8)

9. การกำหนดค่าจะเสร็จสมบูรณ์เมื่อเปิดพิกเซลนีโอเลดทั้งหมด 30 พิกเซล

#1. รวมถึงไฟล์ส่วนหัวและการประมวลผลล่วงหน้า

อันดับแรก เราต้องนำไลบรารี่ Adafruit_NeoPixel ที่สามารถทำ Neopixels ได้

ห้องสมุดสามารถใช้โดยการประกาศวัตถุ

คลาส Adafruit_NeoPixel สามารถป้อนพารามิเตอร์ได้ 3 รายการในที่สาธารณะ

พารามิเตอร์แรกคือจำนวน LED

พารามิเตอร์วินาทีคือหมายเลขพินที่เชื่อมต่อกับอินพุตดิจิตอล Neopixel

พารามิเตอร์ที่สามคือการป้อนตัวเลือกตามลักษณะของผลิตภัณฑ์ ผลิตภัณฑ์ WS2812b สามสีใช้อินพุต 'NEO_GRB'

#รวม

#define PIN 6 แถบ Adafruit_NeoPixel = Adafruit_Neopixel(30, PIN, NEO_GRB+NEO_KHZ800);

#2. ติดตั้ง

ในส่วนการตั้งค่า ให้เริ่มต้นวัตถุและเตรียมใช้งาน

'Adafruit_Neopixle_Object.begin()' ตั้งค่า LED ทั้งหมดให้ปิด

เอาต์พุต 'Adafruit_Neopixle_Object.show()' พร้อมความสว่างที่ตั้งไว้ใน LED

การตั้งค่าเป็นโมฆะ (){

แถบ.begin(); แถบ.show(); }

#3. วงหลัก

การทำงานของ main loop ใช้ for loop เพื่อส่งสัญญาณออกตามลำดับ (0.1 วินาที) ไฟ LED เป็นสีขาว

วงเป็นโมฆะ (){

สำหรับ (uint16_t i=0;i<strip.numPixels();i++){ strip.setPixelColor(i, 255, 255, 255); แถบ.show(); ล่าช้า (100); } }

ขั้นตอนที่ 10: การประกอบและติดเข้ากับล้อ

การประกอบและติดล้อ
การประกอบและติดล้อ
การประกอบและติดล้อ
การประกอบและติดล้อ

1. เชื่อมต่อ Neopixels (ให้ความสนใจกับการตรวจสอบหมายเลขพิน)

2. เชื่อมต่อเซ็นเซอร์ฮอลล์ (ดูขั้นตอนที่.9)

3. แนบเฟรมกับ Arduino ระหว่างจักรยาน (แนบเคส Arduino ขนานกับเฟรมจักรยาน).

4. ใส่ Arduino ที่เชื่อมต่อกับ Neopixel (ระวังเพราะปืนกาวมันร้อน).

5. ใส่เซ็นเซอร์ Hall ที่เชื่อมต่อเข้ากับ Arduino (ยึดสายรัดเพื่อไม่ให้เซ็นเซอร์ Hall หลุดออกมา)

6. บัดกรีเพื่อเชื่อมต่อแบตเตอรี่ (ระวังเมื่อบัดกรี).

7. แก้ไขด้วยปืนกาว (แนบโมดูลการชาร์จบนแบตเตอรี่เพื่อรักษาพื้นที่).

8. เสียบแต่ละสายก่อนเชื่อมต่อกับ Arduino, 9. เสียบปลั๊กตามหมายเลขพินแต่ละอัน (เชื่อมต่อสายกระโดดสำหรับโมดูลการชาร์จโดยไม่ทำให้เกิดความสับสน)

10. ปิดท้ายด้วยปืนกาว 1 ครั้ง (โปรดระวังอย่าให้ตก).

ขั้นตอนที่ 11: การตรวจสอบ INPUT (ข้อมูลเซ็นเซอร์ HALL)

กำลังตรวจสอบอินพุต (ข้อมูลเซ็นเซอร์ฮอลล์)
กำลังตรวจสอบอินพุต (ข้อมูลเซ็นเซอร์ฮอลล์)
กำลังตรวจสอบอินพุต (ข้อมูลเซ็นเซอร์ฮอลล์)
กำลังตรวจสอบอินพุต (ข้อมูลเซ็นเซอร์ฮอลล์)
กำลังตรวจสอบอินพุต (ข้อมูลเซ็นเซอร์ฮอลล์)
กำลังตรวจสอบอินพุต (ข้อมูลเซ็นเซอร์ฮอลล์)

*ตรวจสอบรหัสซอฟต์แวร์เพื่อดูว่าเซ็นเซอร์ทำงานหรือไม่

1. วางและอัปโหลดรหัสด้านล่าง

2. คลิกปุ่ม Serial Monitor ที่ด้านบนขวาของ Arduino

3. เมื่อแม่เหล็กสัมผัสกับเซ็นเซอร์ Hall นานกว่า 1 วินาที การกำหนดค่าจะเสร็จสมบูรณ์เมื่อคำว่า "หน้าสัมผัสแม่เหล็ก" ปรากฏขึ้นบนจอภาพแบบอนุกรม

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- #1. กำหนดหมายเลขพินและการตั้งค่า

หมายเลขพินการกำหนดค่าแรกที่ใช้เซ็นเซอร์ Hall และตั้งค่าหมายเลขพินเป็นพอร์ตอินพุตเท่านั้น

ตั้งค่าการสื่อสารเพื่อตรวจสอบข้อมูลของเซ็นเซอร์ Hall บนจอภาพแบบอนุกรม

#define ฮอลล์ 2

การตั้งค่าเป็นโมฆะ () { pinMode (ฮอลล์, อินพุต); Serial.begin(9600); }

#2. วงหลัก

ตรวจสอบข้อมูลเซ็นเซอร์ Hall ในช่วงเวลา 0.1 วินาที

หากตรวจพบแม่เหล็กและข้อมูลมีการเปลี่ยนแปลง "สัมผัสแม่เหล็ก" จะถูกส่งออกไปยังจอภาพแบบอนุกรม

วงเป็นโมฆะ (){

if(digitalRead(HALL)){ Serial.println("ติดต่อแม่เหล็ก"); } ล่าช้า (100); }

ขั้นตอนที่ 12: อัลกอริทึมการเข้ารหัส

*สร้างตรรกะและการเข้ารหัสเพื่อควบคุม Neopixels ตามค่าเซ็นเซอร์

1. วางและอัปโหลดรหัสด้านล่าง

2. เป็นเรื่องปกติที่ภาพจะไม่แสดงอย่างถูกต้องเนื่องจากไม่มีการสร้างเฟรม แต่คุณจะเห็นว่ามันใช้งานได้อย่างคร่าวๆ

3. แตะและปล่อยเซ็นเซอร์ Hall และแม่เหล็กอย่างรวดเร็วภายใน 1 วินาที ทำซ้ำการดำเนินการนี้ประมาณ 10 ครั้ง

4. การกำหนดค่าจะเสร็จสมบูรณ์เมื่อสีของ Neopixels เปลี่ยนไปอย่างสม่ำเสมอ

#1. รวมไฟล์ส่วนหัวและการประมวลผลล่วงหน้า

อันดับแรก เราต้องเข้าใจว่าหน่วยความจำของ Arduino Mega นั้นไม่ใหญ่พอที่จะเก็บไฟล์รูปภาพได้

ดังนั้น ไฟล์ส่วนหัว 'avr/pgmspace' จึงถูกใช้เพื่อใช้พื้นที่หน่วยความจำที่แตกต่างกัน

ในการใช้ Neopixels คุณต้องประกาศวัตถุและกำหนดค่าหมายเลขพิน I/O

อาร์เรย์รูปภาพมีขนาดใหญ่เกินกว่าจะเข้ารหัสได้ ดังนั้นให้ดาวน์โหลดและวางไฟล์ที่แนบมา

#รวม

#include #define PIN 6 #define NUMPIXELS 30 #define HALL 2 แถบ Adafruit_NeoPixel = 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. ตัวแปรส่วนกลาง & การตั้งค่า

ตั้งค่าตัวแปรส่วนกลาง

สิ่งสำคัญคือการกำหนดความสว่าง มันคือการกำหนดวงจรชีวิตของผลิตภัณฑ์

จำนวน int = 0;

ดับเบิล v = 0; ดับเบิ้ลlast_v = 0; ตัวจับเวลาสองเท่า = micros(); ex_timer สองครั้ง = micros (); Last_timer สองเท่า = micros(); องศา int = 36; int pix = 35; int rgb = 3; q_arr สองเท่า[2] = {0, 0}; int HALL_COUNT = 0; สองเท่า VELO; processing_timer คู่ = micros(); การตั้งค่าเป็นโมฆะ () { strip.setBrightness (255); แถบ.begin(); แถบ.show(); Serial.begin(230400); }

#3. ลูปหลัก - ส่วนเอาต์พุตนิพจน์ภาพ

รหัสนี้เป็นคำสั่งแบบมีเงื่อนไขเกี่ยวกับวิธีการแสดงเวลาที่วงล้อหมุนด้วยความละเอียด

ส่วนนี้ใช้วงจรการหมุนวงล้อจักรยานครั้งเดียวเป็นพารามิเตอร์ที่สำคัญมาก

นอกจากนี้ การอ่านข้อมูลอาร์เรย์ภาพจากหน่วยความจำเป็นสิ่งสำคัญ

วงเป็นโมฆะ () {

if ((นับ (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])))); } strip.show(); } else if (VELO 264000) { สำหรับ (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[นับ][2])), pgm_read_byte(&(image_2[นับ][0])))); } strip.show(); } else if (VELO 204000) { สำหรับ (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[นับ][2])), pgm_read_byte(&(image_3[นับ][0])))); } strip.show(); } อื่น ๆ ถ้า (VELO <= 204000) { สำหรับ (int i = 0 + 5; i = 120)) { สำหรับ (int i = 0 + 5; i < pix; i++) { strip.setPixelColor (i - 5, แถบ.สี(0, 0, 0)); } strip.show(); }

#4. ลูปหลัก - การประมวลผลและการตรวจสอบรอบเวลา & การตรวจจับ

นี่เป็นส่วนที่สำคัญที่สุดของทั้งระบบ

ขั้นแรก ตรวจสอบเวลาที่ใช้ในการรันโค้ดทั้งหมดและปรับเวลาเอาต์พุต LED ต่อรอบ

เวลาที่รับรู้ทุกครั้งที่วงล้อหมุนจะคาดการณ์เวลาของรอบถัดไป

การเร่งความเร็วสามารถประมาณได้โดยการลบรอบเวลาของรอบที่วัดล่าสุดออกจากรอบเวลาที่วัดตรงเวลา

ระบบจะคำนวณเวลาในการประมวลผลและความเร่งเพื่อคำนวณระยะเวลาที่ไฟ LED เปิดอย่างต่อเนื่อง

processing_timer = micros();

if ((digitalRead(HALL) == HIGH) && (HALL_COUNT == 1)) { VELO = v; v = micros() - last_timer; ex_timer = q_arr[0] - q_arr[1] + v; last_timer = ไมโคร (); q_arr[0] = q_arr[1]; q_arr[1] = วี; นับ = 0; HALL_COUNT = 0; } else if (digitalRead(HALL) == LOW) { HALL_COUNT = 1; } }

ขั้นตอนที่ 13: การใช้ซอฟต์แวร์

การใช้ซอฟต์แวร์
การใช้ซอฟต์แวร์
การใช้ซอฟต์แวร์
การใช้ซอฟต์แวร์
การใช้ซอฟต์แวร์
การใช้ซอฟต์แวร์

*ใช้ซอฟต์แวร์เพื่อแปลงรูปภาพและแทรกข้อมูลกระบวนการลงในโค้ด

1. แทรกรูปภาพจากขั้นตอนข้างต้นลงในโฟลเดอร์รูปภาพในโฟลเดอร์ R. C. P ที่ติดตั้งในขั้นตอนการเตรียม

- วิธีการใส่ภาพมีดังนี้.- เปลี่ยนชื่อภาพเคลื่อนไหว 4 ภาพของผลิตภัณฑ์ # 1 ตามลำดับ 1.png, 2.png, 3-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 ในส่วนที่ทำเครื่องหมายในลำดับที่ 5

7. อ้างถึง 5 และ 6, pro_2_code…, pro_3_code กรอกรหัสในลักษณะเดียวกัน

ขั้นตอนที่ 14: เสร็จสมบูรณ์

สมบูรณ์
สมบูรณ์
สมบูรณ์
สมบูรณ์
สมบูรณ์
สมบูรณ์

เสร็จสิ้นการผลิต POV ที่สร้างหนึ่งภาพที่มีสามล้อ

แนะนำ: