Агуулгын хүснэгт:

Minidot 2 - Holoclock: 6 алхам
Minidot 2 - Holoclock: 6 алхам

Видео: Minidot 2 - Holoclock: 6 алхам

Видео: Minidot 2 - Holoclock: 6 алхам
Видео: Hidden Menu Climatronic VW Skoda (Golf , Touran , Eos , Tiguan , Yeti , Superb , Octavia) 2024, Долдугаар сарын
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Магадгүй holoclock нь бага зэрэг нарийвчлалтай байж магадгүй юм … Энэ нь бага зэрэг гүнзгийрүүлэхийн тулд урд талын голограмм дисперсийн хальсыг ашигладаг. Үндсэндээ энэ заавар нь миний өмнөх Minidot -ийн шинэчлэлт юм: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/болон энд байрлуулсан миний Microdot-ээс маш олон код, хэлхээг дахин ашиглаж байна: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD файлууд болон Sourceboost кодыг хавсаргасан зип файлд оруулсан болно. Яагаад? Өмнөх Minidot нь хэт нарийн төвөгтэй байсан бөгөөд Microdot -ээс би зөвхөн 32.768 болор ашиглан PIC дээр RTC хийхийг сурсан бөгөөд тусгай RTC чип ашиглах шаардлагагүй байв. Мөн би өмнөх Minidot -ийн дэлгэцийн чипсийг устгахыг хүсч байсан. Тиймээс одоо зөвхөн цахилгаан зохицуулагчийн чип, PIC16F88 л байна … хоёр чип. Шинэчлэлтийн өөр нэг шалтгаан нь миний Minidot тусдаа унтраалгын самбараас шалтгаалан бага зэрэг найдваргүй болж, цэгийн хэв маягийн хооронд зөөлөн бүдгэрэхийг хүссэн юм. Мөн шөнийн цагаар дэлгэцийг бүдэгрүүлэх орчны гэрлийн мэдрэгчтэй. Нөгөө Minidot нь гэрэлтүүлгийг тогтоож, өрөөг шөнийн цагаар гэрэлтүүлж, төхөөрөмжийг EagleCad програм хангамжийн багц болон Sourceboost хөрвүүлэгчийн тусламжтайгаар бүтээжээ. Энэ төслийг эхлүүлэхийн тулд та электроник, програмчлалын PIC хянагчтай ажиллах туршлагатай байх шаардлагатай. Энэ нь электроник эсвэл PIC програмчлалын аль алинд нь заавар байдаггүй тул Miniclock -ийн дизайнтай холбоотой асуултуудыг хадгална уу. EagleCad эсвэл PIC програмчлах талаар зөвлөгөө авахын тулд дээрх сайт дээрх зааварчилгаа эсвэл энэ сайт дээрх бусад олон зааварчилгааг үзнэ үү. Тиймээс энд байна … Minidot 2, The Holoclock …… эсвэл Minidot The Next Generation ………….

Алхам 1: Хэлхээ

Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ

Энэ хэлхээ нь Microdot -той маш төстэй юм. Charlieplex массив нь бараг ижилхэн болохыг анхаарна уу … хэдхэн зүү зөөгдсөн байна.

PIC -ийг илүү хурдан ажиллуулахын тулд Microdot хэлхээнд 20Mhz болор нэмсэн бөгөөд энэ нь массивыг илүү хурдан сканнердах, бүдэг алгоритмыг хэрэгжүүлэх боломжийг олгодог. Бүдгэрүүлэх алгоритм нь хөндлөн хэв маягийн бүдгэрч, орчны гэрлийн функцийг ажиллуулахад маш чухал байсан. Зарим скан хийх мөчлөгийг бүдэгрүүлэхэд зарцуулах шаардлагатай байсан тул цагийн хурд удаан байсан тул Microdot -ийн хувьд энэ нь боломжгүй байсан. Хөндлөнгийн функцийг тайлбарлахын тулд дараагийн хэсгийг үзнэ үү. Анхаарах ёстой бусад зүйл бол MCP1252 цэнэглэгч насосны зохицуулагчийг ашиглан 5V -ийг нийлүүлэх явдал юм. Хэрэв та хэлхээг өөрчилсөн бол энгийн хуучин 7805 -ийг ашиглаж болно.… Надад зүгээр л хэд хэдэн хэрэгтэй чипс өлгөөтэй байна. Би одоо унтраалгуудыг урд тал руу нь зөөж, цахилгаан тасалсны дараа цагийн зүүг хэмнэхийн тулд цагийг дахин тохирууллаа, одоо бүх зүйл зөвхөн нэг ПХБ байна … кабелийн асуудал байхгүй. LDR -ийг оруулах нь бас анхаарал татаж байна. Энэ нь PIC дээрх A/D зүүгээр мэдрэгддэг хүчдэл хуваагуурт ашиглагддаг. PIC нь хүрээлэн буй орчны гэрлийн түвшин бага (шөнийн цагаар) гэдгийг мэдэрч байх үед бүдэгрүүлэх алгоритм нь гэрлийн түвшин өндөр байхаас илүү олон мөчлөгт charlieplex массивыг харанхуй байлгадаг. Би Eaglecad номын сангаас LDR тэмдгийг олж чадаагүй тул би LED тэмдгийг ашигласан ….. үүнийг LDR гэж битгий хуураарай. ПХБ -ийн бодит зургийг доороос үзнэ үү. Charliplex массивт олон өнгийн LED ашиглахдаа нэг зүйлийг анхаарах хэрэгтэй. Та LED -ийн шууд дамжуулах хүчдэл ижил төстэй эсэхийг шалгах хэрэгтэй. Үгүй бол гүйдлийн замууд үүсч, олон LED гэрэл асах болно. Энэ тохиргоонд 5мм ба түүнээс дээш чадалтай LED ашиглах нь ажиллахгүй болно, учир нь ихэвчлэн ногоон/цэнхэр LED, улаан/шар өнгийн LED хооронд ялгаа байдаг. Энэ тохиолдолд би 1206 SMD LED, өндөр үр ашигтай ногоон/цэнхэр LED ашигладаг. Дамжуулах хүчдэл нь энд асуудал биш юм. Хэрэв та charlieplex массивт өндөр/цэнхэр, улаан/шар өнгийн өндөр хүчдэлийн LED -ийг хослуулан ашиглахыг хүсвэл өөр өөр өнгийг хоёр charliplex массив болгон хуваах хэрэгтэй болно. Чарлиеплекс хийх талаар тайлбарлаж болох олон тайлбар байдаг бөгөөд үүнийг энд дэлгэрэнгүй тайлбарлахгүй. Судалгаа хийхийг танд үлдээе. (Илүү том хувилбарыг харахын тулд доорх зургийн буланд байгаа "i" дүрс дээр дарна уу)

Алхам 2: Диминг алгоритм - Charliplexed Pulse Width Modulation

Хараах алгоритм - Charliplexed Pulse Width Modulation
Хараах алгоритм - Charliplexed Pulse Width Modulation

Өмнө дурьдсанчлан, би тухайн цаг хугацааны хувьд өөр өөр цэгийн хэв маягийг нэг загвараас нөгөө рүү шилжүүлэхээс илүү жигдхэн бүдгэрүүлэхийг хүсч байсан. Дунд хэсэгт шинэ Minidot цаг, баруун талд хуучин Minidot байна. Шинээр хичнээн гоё байсныг анзаараарай. (Цаана байгаа бусад дэлгэцүүд бол миний Minicray суперкомпьютерийн статусын дэлгэц ба миний авсан Nebulon бөөм юм. Хэрэв та кодыг харвал display.c файлыг нээнэ үү. Тодорхой массивыг гэрэлтүүлэхийн тулд tris/порт утгыг харуулах дөрвөн массив, LEDs.eg -ийн аль ч загварыг аль LED -ээр гэрэлтүүлэх ёстойг тодорхойлох хоёр массив (Microdot кодоос нэгээс илүү) байгааг анхаарна уу.

// LED1 LED2 LED3… тэмдэггүй тэмдэгт LEDS_PORTA [31] = {0x10, 0x00, 0x00,… гарын үсэггүй тэмдэгт LEDS_TRISA [31] = {0xef, 0xff, 0xff,… гарын үсэггүй тэмдэгт LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Гарын үсэггүй тэмдэгт LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… unsigned char nLedsA [30]; unsigned char nLedsB [30];LED1 -ийг асаахын тулд та TRISA: B = 0xef: 0xfd, PORT регистрүүдийг PORTA: B = 0x10: 0x00 гэх мэтээр тохируулах хэрэгтэй. Хэрэв та tris -ийн утгыг хоёртын хэлбэрээр бичвэл, та хүссэн үедээ зөвхөн хоёр гаралтыг идэвхжүүлсэн болохыг анхаарна уу. Бусад нь бүгд Гурван төлөвт тохируулагдсан (иймээс TRIS бүртгэл). Энэ нь charlieplexing -ийн гол хэсэг юм. Та мөн нэг гаралт нь үргэлж логик '1', нөгөө нь үргэлж логик '0' байх болно гэдгийг анхаарна уу. Энэ чиглэл нь эдгээр хоёр гаралтын шугамын хоорондох аль ч LED асдаг. Порт/трис дэх хамгийн сүүлийн утга массив нь LED огт асахгүй байх утга юм. Microdot -д update_display функцийг өөр массиваар (nLeds ) тасралтгүй эргүүлж тухайн LED гэрэлтэх эсэхийг харах болно. Хэрэв тийм бол трис/портын харгалзах утгыг тохируулж, LED нь тодорхой хугацаанд гэрэлтдэг. Үгүй бол хоосон утгыг TRIC/PORT PICs регистрүүд рүү илгээсэн бөгөөд хэсэг хугацаанд ямар ч LED гэрэлтүүлээгүй байна. Үүнийг хангалттай хурдан хийсний дараа энэ нь загварыг өгсөн. Хөтөлбөрийн үлдсэн хэсэг нь RTC -ийн утгыг үе үе уншиж, тэр массив дээр сайхан санамсаргүй хэв маягийг бий болгодог. … тэгээд дэлгэц өөрчлөгдсөн. Бүрхүүл функцийг хийхийн тулд үүнийг бага зэрэг сунгаж 30 LED -ийг гэрэлтүүлсний дараа (эсвэл биш), дараа нь дэлгэцийг бүдэгрүүлэх байсан бол тэг утгуудыг илгээхэд нэмэлт хугацаа зарцуулах болно. Хэрэв гэрэлтүүлсэн LED -ийн хоосон цэгүүд олон байсан бол давтан хэлэхэд дэлгэц нь бүдэгрэх болно. Үнэн хэрэгтээ энэ нь импульсийн өргөний модуляц юм.… Эсвэл тоног төхөөрөмжийг charlieplex зохион байгуулалтанд тохируулсан тул импульсийн өргөнийг модуляцлахад зориулагдсан болно. Би үүнийг скан хийх хүрээ гэж нэрлэдэг. Хүрээний эхний 30 үе нь LED -ээр дамжихад хэрэглэгддэг …. мөн хувьсах тооны нэмэлт үе нь дэлгэц хэр бүдэг болохыг тодорхойлдог. Энэ мөчлөг давтагдана. Илүү хоосон үе гэдэг нь нэг фрэйдэд LED асах хугацаа бага байна гэсэн үг юм (хугацааны тоо нэмэгдсэн тул). Босоо тэнхлэг нь хүчдэлийн түвшин гэсэн үг биш гэдгийг анхаарна уу. LED руу орох голуудын бодит байдал нь charlieplex массив дахь байрлалаас хамаарч өөр өөр байдаг. Диаграм дээр энэ нь асаалттай эсвэл унтраасан гэсэн үг юм. ханш. LED нь бүдэгрэх тусам тэд өөрөөр хэлбэл анивчиж эхэлнэ. Тиймээс энэ арга нь тодорхой хэмжээгээр ашигтай байдаг. Цагийн хувьд энэ нь зүгээр байсан бөгөөд функцийг үе үе дууддаг бөгөөд энэ нь PIC дээрх A/D хөрвүүлэгчийг уншдаг бөгөөд энэ гэрэлтүүлгийн түвшинг тогтоодог. Хэрэв та кодыг уншвал LDR -ийн ойролцоох LED асаалттай байгаа эсэхийг шалгаж, хэрэв тохируулсан бол түвшний тохиргоог хийхгүй бөгөөд энэ нь хэв маягийг өөрчлөхөд дэлгэц гэнэт гэрэлтэхийг зогсооно.

Алхам 3: Диминг алгоритм - хөндлөн бүдгэрсэн эффект ба давхар буфер

Хөндлөн алгоритм - Загалмайн бүдгэрүүлэх нөлөө ба давхар буфер
Хөндлөн алгоритм - Загалмайн бүдгэрүүлэх нөлөө ба давхар буфер

Нэг загвар ба нөгөө хэлбэрийн хооронд шилжих нь өмнө нь нэн даруй байсан. Энэ цагийн хувьд би гэрэлтүүлгээ аажмаар бууруулж, аажмаар нэмэгдэж буй нэг загварыг харуулахыг хүссэн юм.

Хөндлөн бүдгэрүүлэхийн тулд тус тусдаа гэрэлтүүлгийн түвшинг хянаж байхын тулд би тусдаа LED -тэй байх шаардлагагүй байсан. Эхний загвар нь нэг гэрэлтэй байхад, хоёр дахь нь бага гэрэлтэй байх шаардлагатай. Дараа нь богино хугацаанд би эхнийх нь гэрлийг бага зэрэг бууруулж, хоёр дахь хэсгийг нь нэмэгдүүлэх болно. Дараа нь цаг дараагийн загварыг харуулах хүртэл хүлээх бөгөөд өөр шилжилт хийх болно. Тиймээс би хоёр загвар хадгалах шаардлагатай болсон. Одоогоор үзүүлж буй болон харуулах гэж буй хоёр дахь загвар. Эдгээр нь nLedsA ба nLedsB массивуудад байна. (энэ тохиолдолд порттой ямар ч холбоогүй болохыг анхаарна уу). Энэ бол давхар буфер юм. Update_display () функц нь найман фреймээр дамжихаар өөрчлөгдсөн бөгөөд эхлээд нэг массиваас нөгөөгөөсөө олон тооны хүрээг харуулах болно. Найман мөчлөгийн туршид буфер бүрт хуваарилагдсан хүрээний тоог өөрчлөх нь загвар бүр хэр тод болохыг тодорхойлдог. Бид буферуудын хооронд дугуй унаж дууссаны дараа "дэлгэц" ба "дараагийн дэлгэц" буферуудыг өөрчилсөн тул загвар үүсгэх функц нь зөвхөн "дараагийн дэлгэц" буферт бичигдэх болно. Доорх диаграм нь үүнийг найдаж байна. Шилжилт нь 64 сканнер хийх шаардлагатай болохыг та харах ёстой. Зураг дээр жижиг хуудсан дотор өмнөх хуудасны скан фрэймийн диаграммыг чадварлаг хэмжээгээр багасгасан болно. Дахин шинэ ханшийн талаар хэдэн үг хэлье. Энэ бүгдийг маш хурдан хийх шаардлагатай байна. Бидэнд одоо хоёр түвшний нэмэлт тооцоолол бий, нэг нь орчны дэлгэцийн бүдэгрэл, нөгөө нь хоёр буфер хооронд шилжихэд зарцуулсан найман хүрээний мөчлөг юм. Тиймээс энэ кодыг угсрах хэлбэрээр бичих ёстой боловч 'C' дээр хангалттай сайн байна.

Алхам 4: Барилга - ПХБ

Барилга - ПХБ
Барилга - ПХБ
Барилга - ПХБ
Барилга - ПХБ

Энэ бол нэлээд шулуун юм. Зүгээр л хоёр талт ПХБ, зарим нь SMD бүрэлдэхүүн хэсгүүдтэй. Уучлаарай, хэрэв та цоорхойтой хүн бол SMD төслүүдийг өрөмдөхөд хялбар болгоно. Та ажлыг хөнгөвчлөхийн тулд тогтвортой гартай, температур хяналттай гагнуурын станцтай байх ёстой.

ПХБ -ийн барилгын ажилд анхаарах цорын ганц зүйл бол PIC програмчлах холбогчийг оруулах явдал юм. Энэ нь PIC дээрх ICSP зүүтэй холбогддог бөгөөд танд ICSP програмист хэрэгтэй болно. Дахин хэлэхэд би хогийн хайрцагныхаа холбогчийг ашигласан. Хэрэв та хүсэхгүй бол үүнийг орхиж, утсыг дэвсгэр дээр гагнах боломжтой. Эсвэл, хэрэв танд зөвхөн залгууртай програмист байгаа бол та толгой дээрээ залгуур руу залгаж, дараа нь ICSP дэвсгэр дээр гагнах боломжтой. Хэрэв та үүнийг хийвэл Rx -ийг салгаад Ry -ийг холбоно уу. Энэ нь хэлхээний үлдсэн хэсгийг PIC -ээс салгах бөгөөд ингэснээр програмчлалд саад болохгүй. Сокет програмист нь ICSP програмыг ICSP програмист шиг ашигладаг бөгөөд үүнд ямар ч ид шид байдаггүй. Хэрэв та алдаатайгаар RTC эхлэхээс өмнө кодоо хойшлуулахаа мартсан бол та үүнийг хийх хэрэгтэй. 16F88 -ийн хувьд ICSP програмчлалын тээглүүр нь RTC -д ашигладаг 32.768 кГц болорт шаардлагатай тээглүүртэй ижил байдаг, хэрэв TSP гадаад осциллятор (өөрөөр хэлбэл RTC) нь ICSP -ийг ажиллуулахаас өмнө ажиллаж байгаа бол програмчлал амжилтгүй болно.. Ихэвчлэн MCLR зүүг дахин тохируулж, саатал гарсан тохиолдолд ICSP өгөгдлийг эдгээр зүү рүү илгээж, програмчлалыг зөв эхлүүлж болно. Гэсэн хэдий ч PIC -ийн хүчийг тусгаарласнаар ICSP програмист (эсвэл толгойтой залгууртай програмист) төхөөрөмжийн хүчийг хянаж, програмыг албадаж болно. Бусад анхаарах зүйл бол ПХБ дээрх болор дэвсгэр нь анх SMD талстуудад зориулагдсан байв. Би заримыг нь хүлээлгэж өгөхийг тэсэн ядан хүлээж байсан тул 32.768 кГц -ийн цагны болорыг зурагт үзүүлсэн шиг дээд талд нь гагнаж, 20 МГц -ийн болорыг дэвсгэр дээр хэд хэдэн цооног өрөмдөж, болорыг ёроолоор нь цоолж, дээр нь гагнах замаар бэхлэв. дээд Та PIC16F88 -ийн баруун талд байгаа тээглүүрүүдийг харж болно.

Алхам 5: Голографик кино ба орон сууц

Голографийн кино ба орон сууц
Голографийн кино ба орон сууц
Голографийн кино ба орон сууц
Голографийн кино ба орон сууц
Голографийн кино ба орон сууц
Голографийн кино ба орон сууц

Эцсийн бүтээн байгуулалт нь ПХБ -ийг хайрцагт хийж, програмын дараа халуун цавуугаар бэхлэх явдал юм. Гурван нүх нь урд талын микро шилжүүлэгч рүү нэвтрэх боломжийг олгодог.

Энэхүү цагны онцлох хэсэг бол голограф диффузор хальс ашиглах явдал юм. Энэ бол миний эргэн тойронд хэвтэж байсан тусгай кино бөгөөд энэ нь төхөөрөмжийн гүнийг өгдөг. Та энгийн мөрдөх цаас (би ПХБ -ийг урд ойртуулах болно) эсвэл флюресцент гэрлийн төхөөрөмжид ашигладаг бусад сарниулагч ашиглаж болно. Турших, хийх ёстой цорын ганц зүйл бол гэрэлтүүлэгтэй LED -ийн тоог ялгах боломжийг олгох явдал юм, эс бөгөөс цэгийг тоолох нь хэцүү байх болно. Би физик оптикийн корпорацийн (www.poc.com) голограмм дисперсийн материалыг 30 градусын тойрог дисперстэй, суперкомпьютерийн төлөв байдлын зааврыг өөр хэсэгт үзүүлсэн бөгөөд 15х60 градусын эллипс дисперстэй кино ашигласан болно. Илүү нууцлаг харагдуулахын тулд та өдрийн цагаар гялалзсан дотор талыг нуухын тулд харанхуй тууз ашиглаж болно. Та ч гэсэн дэлгэцийг цэвэрхэн үлдээж, хүмүүсийг миний хийсэн шиг дотогш харахыг зөвшөөрч болно. Тавиур нь хоёр ширхэг хөнгөн цагаан 'L' баар байсан бөгөөд гулзайлгахын тулд ёроолд нь бага зэрэг жижиглэсэн байв. Эдгээр зургуудад нэмэлт гэрэлтүүлэг нэмж оруулсан тул дэлгэцийн бүрхэвч гэх мэтийг харж болно. Зочны өрөөний ердийн гэрэлтүүлэгт LED нь өдрийн гэрэлд ч илүү тод харагддаг.

Алхам 6: Програм хангамж ба хэрэглэгчийн интерфэйс

Төхөөрөмжийн ажиллагаа нь маш энгийн, тусгай хэв маягийн горим, гялалзсан зүйл байхгүй. Түүний хийдэг цорын ганц зүйл бол цагийг харуулах явдал юм.

Цагийг тохируулахын тулд эхлээд SW1 товчийг дарна уу. Төхөөрөмж нь бүх LED -ийг хэд хэдэн удаа анивчих бөгөөд дараа нь LED -ийн 10 секундын бүлэг SW3 нэмэгдэх бөгөөд сонгосон SW2 бүлэг нь дараагийн LED гэрлүүд рүү шилжих болно. Кодыг Sourceboost 'C' хөрвүүлэгчийн 6.70 хувилбарын хувьд бичсэн болно. RTC код нь t1rtc.c/h файлд байдаг бөгөөд PIC -ийн T1 таймер дээр тасалдлын функцтэй байдаг. T1 таймер 1 секунд тутамд тасалдахаар тохируулагдсан. Секунд тутамд тухайн хугацааны хувьсагч нэмэгддэг. Түүнчлэн хачиг таймерыг цаг тутамд секунд тутамд тоолно. Энэ нь дэлгэцийг хэзээ шилжүүлэхийг тодорхойлоход хэрэглэгддэг. Тасалдлын функц нь дэлгэцийг шинэчлэхийн тулд T0 таймер тасалдлыг ашиглан дэлгэц дээрх функцийг дуудна. C Display.h/display.c файлууд нь дэлгэцийг шинэчлэх, цагийг харуулах функцуудыг агуулдаг. Control.c/h файлууд нь Цагийг тохируулах, унтраалгыг унших функцууд holoclock.c/h файлууд нь үндсэн гогцоо ба эхлүүлэлт юм.

Зөвлөмж болгож буй: