Мазмуну:

Digilog_Bike POV дисплейи: 14 кадам
Digilog_Bike POV дисплейи: 14 кадам

Video: Digilog_Bike POV дисплейи: 14 кадам

Video: Digilog_Bike POV дисплейи: 14 кадам
Video: Pilot Lands His Helicopter Neatly Over Truck 2024, Июль
Anonim
Image
Image

Digilog

Санарип + Аналог

Санарип аналогго жооп берет

POV

Көрүнүштүн туруктуулугу

Сүрөттүн дисплейи катары дагы белгилүү, эгер жогорку ылдамдыкта чайкалса, кийинки сүрөт калат.

Адамдар телевизор көрүп жатканда видеону көрүп жатам деп ойлошот. Бирок, чынында, ал бир нече удаалаш сүрөттөрдү карап жатат. Бул сүрөттөлүш катары жаңылган, анткени кийинки сүрөттөрдү көргөндө торчолорубузда калган сүрөттөрдүн таасири. Мындай иллюзия 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мм) 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. Soldering Machine

2. A Soldering iron

3. желим мылтык

4. Ниппер

4 -кадам: Кадр жасоо

Image
Image
Кадр жасоо
Кадр жасоо

Велосипедди кесүү жана базаны бекитүү

Жаргылчак велосипеддин дөңгөлөктөрүн кесүү үчүн колдонулган жана дөңгөлөктөрдү бекемдөө үчүн болот пластиналарды ширеткен.

5 -кадам: Акыркы сүрөттөрдү жана түшүнүктөрдү эскиздөө

Акыркы сүрөттөрдүн жана түшүнүктөрдүн эскиздери
Акыркы сүрөттөрдүн жана түшүнүктөрдүн эскиздери
Акыркы сүрөттөрдүн жана түшүнүктөрдүн эскиздери
Акыркы сүрөттөрдүн жана түшүнүктөрдүн эскиздери
Акыркы сүрөттөрдүн жана түшүнүктөрдүн эскиздери
Акыркы сүрөттөрдүн жана түшүнүктөрдүн эскиздери

Биз акыркы сүрөт катары ажыдаарды тандап алдык. Анткени ажыдаардын толкуну кийинки сүрөттөлүш эффекти менен эң жакшы чагылдырылган окшойт.

6 -кадам: Сүрөттү жылдырыңыз

Кыймылдуу сүрөттү кесүү
Кыймылдуу сүрөттү кесүү
Кыймылдуу сүрөттү кесүү
Кыймылдуу сүрөттү кесүү

Сүрөттү үч бөлүккө бөлүңүз, алар ар бир велосипедге туура келет жана 12 сүрөттү түскө жана кыймылга бөлүңүз.

7 -кадам: Программаны даярдоо

Программаны даярдоо
Программаны даярдоо
Программаны даярдоо
Программаны даярдоо

Sub бөлүгү 1. Arduino орнотуу

Arduino жүктөө:

(OS версияңызга жана тутумуңузга ылайыкташтырып орнотуңуз.)

-

2 -бөлүк. Китепкананы орнотуу

*(Эгерде сиз Github аркылуу орноткуңуз келсе, Github Arduino Китепканасынын жогорудагы шилтемесине баш багыңыз:

1. Arduino программасын иштетүү

2. Шилтемеге уруксат берүү Жогорку меню - эскиз - китепкананы кошуу -. Zip китепканасын кошуу

3. Сиз github library4 мурунтан эле орнотулган. Zip файлын тандашыңыз керек

*(Эгерде сиз Arduino программасынын кызматтарын колдонууну кааласаңыз)

1. Arduino программаларын иштетүү

2. Шилтемеге уруксат берүү Жогорку меню - эскиз - китепкана кирет - башкаруу китепканасы - 'Adafruit неопикселин' издөө - сиз 'Adafruit Neopixel by Adafruit' көрө аласыз

3. Китепкананы орнотуу жана жаңыртуу

-

Sub бөлүгү 3. Converter программасын орнотуу

1. Rotation Circle программасын орнотуңуз (R. C. P):

2. README файлын окуу керек

8 -кадам: Аппаратты электр менен камсыздоо

Аппаратты электр менен камсыздоо
Аппаратты электр менен камсыздоо
Аппаратты электр менен камсыздоо
Аппаратты электр менен камсыздоо
Аппаратты электр менен камсыздоо
Аппаратты электр менен камсыздоо

*Бул батарея аркылуу Arduino 5V чыңалуусун кантип камсыздоо керек. Сураныч, төмөндөгү кадамдарды аткарыңыз.

1. Литий батареясын жана JBATT заряддоо модулун туташтырыңыз. (Маалымат үчүн, JBATT модулунда камтылган кубат которгуч бар.)

2. JBATTтин чыгыш терминалын Arduino жана Ground терминалынын Вин терминалына туташтырыңыз.

3. Продукт туура иштеп жаткандыгын текшерүү үчүн Micro 5pin USB портун кубаттоо портуна туташтырыңыз.

4. Андан кийин, камтылган которгучту КҮЙГҮЗҮҮГӨ буруңуз.

5. Эгерде кызыл түстөгү жарыктар жана жашыл түстөгү жарыктар Arduinoдо күйүп турса, продукттун этаптын конфигурациясы кадимкидей аяктайт.

9 -кадам: Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)

Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)
Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)
Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)
Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)
Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)
Аппараттык I/O жасоо жана OUTPUTту текшерүү (NeoPixel иштөө)

*Бул бөлүк сенсор жана чыгаруу баскычынан турат

1. Arduino жана Hall сенсорлорун туташтырыңыз. Маалымат пини Arduino pin 2 менен туташат.

2. Arduino күйгүзүлгөндө жана магнит Холл сенсору менен тыгыз байланышта болгондо, кызыл лед күйөт.

3. Arduino менен Neopixel'ди туташтырыңыз. Болгону 30 неопиксел колдонулат.

4. Маалымат пинин Arduino pin 6 менен туташтырыңыз.

5. Arduino жана жүктөө кабелин компьютериңиздин USB портуна туташтырыңыз жана Arduino компьютериңизде иштетиңиз.

6. Arduino программасынын жогорку меню тилкесинен Tool - board - “Arduino / Genuino Mega or Mega 2560” тандаңыз.

7. Портко түз туташтырыла турган продуктулардын тизмеси бар -жогун текшериңиз. Эгерде текшерилбесе, аны тандоо үчүн чыкылдатыңыз.

8. Төмөндөгү кодду чаптаңыз жана жогорку сол жагында Жүктөө дегенди басыңыз. (Андан кийин, бардык программалар 5-8 кадамдарды аткарат.)

9. Конфигурация бүт 30 neoled пиксел күйгүзүлгөндө аяктайт.

#1. баш файлды жана алдын ала иштетүүнү камтыйт

Биринчиден, биз неопикселдерди иштете ала турган Adafruit_NeoPixel китепканасын алып келишибиз керек.

Китепкана объекттерди декларациялоодо колдонулушу мүмкүн.

Adafruit_NeoPixel классы жалпыга 3 параметрди киргизе алат.

Биринчи параметр LED саны болуп саналат.

секунд параметр - бул Neopixel санариптик кирүүгө туташкан пин саны.

Үчүнчү параметр - продукттун мүнөздөмөсүнө ылайык варианттарды киргизүү. үч түстүү WS2812b продукт 'NEO_GRB' киргизүүнү колдонот

#кошуу

#аныктоо PIN 6 Adafruit_NeoPixel тилкеси = Adafruit_Neopixel (30, PIN, NEO_GRB+NEO_KHZ800);

#2. жайгашуу

Орнотуу бөлүгүндө объектти инициалдаңыз жана аны колдонууга даярдаңыз.

'Adafruit_Neopixle_Object.begin ()' бардык светодиоддорду өчүрүүнү орнотот.

'Adafruit_Neopixle_Object.show ()' жарыктыгын LED менен коюлган.

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

strip.begin (); strip.show (); }

#3. негизги цикл

Негизги циклдын аракети LED ди ак түстөгү ырааттуу чыгаруу үчүн (0,1 секунд) for циклин колдонот

void loop () {

үчүн (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, 255, 255, 255); strip.show (); кечиктирүү (100); }}

10 -кадам: Чогултуу жана Дөңгөлөккө бекитүү

Чогултуу жана дөңгөлөккө бекитүү
Чогултуу жана дөңгөлөккө бекитүү
Чогултуу жана дөңгөлөккө бекитүү
Чогултуу жана дөңгөлөккө бекитүү

1. Неопикселдерди туташтыруу. (Пин номерин текшерүүгө көңүл буруңуз)

2. Холл сенсорун туташтырыңыз. (9 -кадамды караңыз)

3. Велосипеддердин ортосундагы алкакты Arduinoго бекит. (Arduino корпусун велосипед рамасына параллель тиркеңиз).

4. Neopixel'ге туташкан Arduino салыңыз. (Этият болуңуз, анткени желим пистолети ысык).

5. Ардуиного туташкан Холл сенсорун салыңыз, (Залдын сенсору түшүп калбашы үчүн кабелдик галстукту бекиңиз).

6. Батареяны туташтыруу үчүн ширетүүчү. (Сиз ширетип жатканда этият болуңуз).

7. Аны желим тапанча менен оңдоңуз. (Боштукту камсыздоо үчүн заряддоо модулун батареяга тиркеңиз).

8. Arduino менен туташуудан мурун ар бир линияны сайыңыз.

9. Ар бир пин номерине ылайык сайыңыз. (Заряддоо модулунун секирүү линияларын чаташтырбастан туташтырыңыз).

10. Бир жолу желим тапанча менен бүтүрүңүз, (Жыгылып калуудан сак болуңуз).

11 -кадам: INPUTту текшерүү (HALL Sensor Data)

INPUT текшерилүүдө (HALL Sensor Data)
INPUT текшерилүүдө (HALL Sensor Data)
INPUT текшерилүүдө (HALL Sensor Data)
INPUT текшерилүүдө (HALL Sensor Data)
INPUT текшерилүүдө (HALL Sensor Data)
INPUT текшерилүүдө (HALL Sensor Data)

*Сенсор иштеп жатканын билүү үчүн программалык кодду текшериңиз.

1. Төмөндөгү кодду чаптаңыз жана жүктөңүз.

2. Arduino'дун жогорку оң жагындагы Serial Monitor баскычын чыкылдатыңыз.

3. Магнит Холл сенсору менен 1 секунддан ашык байланышта болгондо, сериялык монитордо "контакт магнити" деген сөз пайда болгондо конфигурация аяктайт.

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- #1. PIN номерин жана орнотууну аныктаңыз

Холл сенсорун колдонуу жана пин номерин киргизүү үчүн гана порт катары орнотуу үчүн биринчи конфигурация пин номери.

Сериалдык монитордогу Hall сенсорунун маалыматын текшерүү үчүн байланышты орнотуңуз.

#аныктоо ЗАЛЫ 2

void setup () {pinMode (HALL, INPUT); Serial.begin (9600); }

#2. негизги цикл

Холл сенсорунун маалыматтарын 0.1 секунд аралыкта текшериңиз.

Эгерде магнит сезилсе жана маалыматтар өзгөрсө, "контакт магнити" сериялык мониторго чыгарылат.

void loop () {

if (digitalRead (HALL)) {Serial.println ("байланыш магнити"); } кечиктирүү (100); }

12 -кадам: Алгоритмди коддоо

*Сенсордук баалуулуктарга негизделген Neopixelsти көзөмөлдөө үчүн логика жана код түзүңүз.

1. Төмөндөгү кодду чаптаңыз жана жүктөңүз.

2. Эч кандай кадр чыгарылбагандыктан, сүрөттүн туура көрсөтүлбөшү нормалдуу көрүнүш. Бирок сиз болжол менен иштеп жатканын көрө аласыз.

3. Холл сенсорун жана магнитти 1 секунддун ичинде тез тийип, коё бериңиз. Бул операцияны болжол менен 10 жолу кайталаңыз.

4. Неопикселдердин түсү үзгүлтүксүз өзгөргөндө конфигурация аяктайт.

#1. Баш файлдарды жана алдын ала иштетүүнү камтыйт

Биринчиден, биз Arduino Megaнын эс тутуму сүрөт файлын кармоо үчүн чоң эмес экенин түшүнүшүбүз керек.

Ошондуктан, 'avr/pgmspace' аталыш файлы ар кандай эс мейкиндигин колдонуу үчүн колдонулат.

Neopixelsти колдонуу үчүн, сиз объектти жана конфигурацияны I/O пин номерин жарыялайсыз.

Сүрөт массиви коддоо үчүн өтө чоң, андыктан тиркелген файлдарды жүктөп алып чаптаңыз.

#кошуу

#кошуу #аныктоо 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. Глобалдык өзгөрмө жана орнотуу

Глобалдык өзгөрмөнү коюңуз.

Эң башкысы-жарыкты орнотуу, бул продукттун жашоо циклин аныктайт.

int count = 0;

кош v = 0; double last_v = 0; кош таймер = micros (); кош ex_timer = micros (); кош last_timer = micros (); int deg = 36; int pix = 35; int rgb = 3; кош q_arr [2] = {0, 0}; int HALL_COUNT = 0; кош VELO; эки жолу иштетүү_мөөнөсү = микросхемалар (); жараксыз орнотуу () {strip.setBrightness (255); strip.begin (); strip.show (); Serial.begin (230400); }

#3. негизги укурук - сүрөттөлүштү чыгаруу бөлүгү

Бул код дөңгөлөктүн айлануу убактысын кантип чыгаруу керектиги жөнүндө шарттуу билдирүү.

Бул бөлүк велосипед дөңгөлөгүн бир жолу айлантуу циклин абдан маанилүү параметр катары колдонот.

Ошондой эле, эс тутумдан сүрөт массивинин маалыматтарын окуу маанилүү.

void loop () {

if ((count (ex_timer / 120.0) - (micros () - processing_timer)))) {timer = micros (); if (VELO> 360000) {for (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) {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]))))); } strip.show (); } 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]))))); } strip.show (); } else if (VELO <= 204000) {for (int i = 0 + 5; i = 120)) {for (int i = 0 + 5; i <pix; i ++) {strip.setPixelColor (i - 5, тилке. Color (0, 0, 0)); } strip.show (); }

#4. негизги цикл - иштетүү жана циклдин убактысын текшерүү жана сезүү

Бул бүт системанын эң маанилүү бөлүгү.

Биринчиден, бүт кодду аткарууга кеткен убакытты текшерип, циклдеги 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 = micros (); q_arr [0] = q_arr [1]; q_arr [1] = v; count = 0; HALL_COUNT = 0; } else if (digitalRead (HALL) == LOW) {HALL_COUNT = 1; }}

13 -кадам: Программаны колдонуу

Программаны колдонуу
Программаны колдонуу
Программаны колдонуу
Программаны колдонуу
Программаны колдонуу
Программаны колдонуу

*Программаны колдонуп, сүрөттү өзгөртүп, процесске маалыматтарды кодго киргизиңиз

1. Жогорудагы кадамдагы сүрөттү даярдоо кадамында орнотулган R. C. P папкасындагы сүрөт папкасына салыңыз.

- Кантип сүрөт коюу керек.- Өнүмдүн # 1 анимацияланган 4 сүрөтүн 1.png, 2.png, 3-p.webp

2. Ver.5.exe файлын иштетүү.

3. Pro_1_code_1.txtтан pro_3_code_4.txtка 12 файл R. C. P папкасында түзүлгөнүн текшериңиз.

4. Эгерде ал түзүлбөсө, config.txt мазмунун төмөнкү конфигурация файлы катары өзгөртүңүз.

5. Файл түзүлгөндөн кийин, pro_1_code_1.txt файлынан бардык мазмунду көчүрүп, аны төмөнкү коддо көрсөтүлгөн бөлүккө чаптаңыз.

6. 5 -кезекте белгиленген бөлүккө 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 чыгарылышы аяктады.

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