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

Интерактив орчны гэрэл: 8 алхам
Интерактив орчны гэрэл: 8 алхам

Видео: Интерактив орчны гэрэл: 8 алхам

Видео: Интерактив орчны гэрэл: 8 алхам
Видео: 1st ChatGPT Powered NPCs Having SandBox RPG Game Smallville: Generative Agents Interactive Simulacra 2024, Долдугаар сарын
Anonim
Интерактив орчны гэрэл
Интерактив орчны гэрэл
Интерактив орчны гэрэл
Интерактив орчны гэрэл
Интерактив орчны гэрэл
Интерактив орчны гэрэл

Энэ бол миний анхны зааварчилгаа юм! Англи хэлийг зохих ёсоор бичих гэж оролдож байхад намайг хүлээж байгаарай. Намайг засч залруулаарай! 'Let it glow' тэмцээн эхэлсний дараахан би энэ төслийг эхлүүлсэн. Илүү ихийг хийж, хийхийг хүссэн зүйлээ дуусгасан болоосой. Гэхдээ сургууль, ажил хоёрын хооронд миний хүссэн шиг их цаг үлдсэнгүй. Гэсэн хэдий ч би туршилтынхаа тайланг зааварчилгаа болгон энд үлдээж байгаа тул хэн ч миний хийсэн зүйлийг хийхийг оролдож болно. Энэхүү зааварчилгаа нь удирдамж болж, энэхүү зөрчилдөөнийг хэрхэн хийхийг зааж өгөх зорилготой биш юм. Энэ нь электроникийн чиглэлээр эхлэгчдэд зориулсан гарын авлага биш юм. Энэ нь миний хэрэгжүүлэхийг хүсч буй нэг санаа, зорилгоо хуваалцахтай адил юм. Хэрэв та электроникийн анхан шатны/бүрэн мэдлэггүй хүн бөгөөд ийм зүйл хийхийг хүсч байвал уучлаарай! Гэхдээ бид үргэлж танд туслахыг хичээдэг. Сүүлийн алхамыг үзнэ үү. Орчны гэрлийн олон төслүүдийг бид аль хэдийн үзсэн. Тэдний ихэнх нь RGB LED -ийг ашигладаг: - Өрөөг нэг өнгөөр гэрэлтүүлэх, уур амьсгалд тохируулан уур амьсгалыг тохируулах - ТВ/Монитор эсвэл дууны гэрлийн эффектийг бий болгох. Instructables.com дээр цөөн хэдэн бий. Холбогдох: DIY орчны гэрлийн системүүд Гэрлийн бар орчны гэрэлтүүлэг Өөрсдийнхөө өнгөт гэрэлтүүлгийн баарыг бий болгоорой Энэхүү өрсөлдөөнийг шалтаг болгон миний санаанд орж ирсэн төслийг эхлүүлсэн. Би үргэлж ийм орчны гэрэлтэй төстэй зүйл хийж, өрөөнийхөө ханыг RGB LED -ээр дүүргэхийг хүсч байсан. Гэхдээ нэг алхам урагшилж, бүгдийг болон тус бүрийг хяналттай болгох. Энэхүү төсөл нь техник хангамж/програм хангамжийг хакердах, мэдрэхүйн интеграцчлах боломжийг олгодог хобби сонирхогчид болон электрон үзэгчдэд зориулсан нээлттэй эх сурвалж бүхий электрон хэрэгслийг бий болгоно гэж найдаж байна. Энд миний хийсэн зүйлийн жижигхэн тойм байна:

Алхам 1: Санааг судлах

Би өрөөнийхөө ханыг RGB LED -ээр дүүргэж, гэрэл тус бүрийн өнгө, гэрлийг хянаж байхыг хүсч байна. Би ашиглахад хялбар, уян хатан байдлыг хангах үүднээс микроконтроллер ашиглах гэж байна. Харамсалтай нь би хэдэн зуун LED -ийг микроконтроллер дээр байрлуулсан цөөн хэдэн зүүгээр удирдаж чадахгүй байна. Олон тооны LED -ийн хяналтыг кодлоход хэцүү байх болно, тиймээс би бүх LED -ийг хэд хэдэн жижиг бааранд хувааж, баар бүрт микроконтроллер ашиглахаар шийдсэн. Дараа нь би микроконтроллеруудын харилцааны чадварыг ашиглан тэдний хооронд мэдээлэл хуваалцах болно. Энэ мэдээлэл нь LED -ийн өнгө, тод байдал, өнгө, хэв маягийн дараалал, мэдрэхүйн мэдээлэл байж болно. Бар бүрийн хувьд би 16 RGB LED ашиглахаар шийдсэн. Үүний үр дүнд хэт том ч биш жижиг баар ч бий болно. Ийм байдлаар би тус бүрдээ хүлээн зөвшөөрөгдсөн тооны нөөцийг ашиглаж, баар бүрийн зардлыг бууруулдаг боловч 16 RGB LED нь микроконтроллерыг хянахад 48 LED (3*16 = 48) байдаг. Зардлыг харгалзан би ашиглахаар шийдсэн. Миний ашиглаж болох хамгийн хямд микроконтроллер. Энэ нь микроконтроллер нь зөвхөн 20 хүртэлх оролттой зүүтэй байх болно, энэ нь 48 LED -т хангалттай биш юм. Төслийн зорилго нь өрөөг гэрэлтүүлэх тул charlieplexing эсвэл цаг хуваах хөтөч ашиглахыг хүсэхгүй байна. Миний бодож байсан хувилбар бол ямар нэгэн түгжигдсэн ээлжийн бүртгэлийг ашиглах явдал юм! Үргэлжлүүлэх:- Орчны интерактив гэрэл хийх- Хяналттай LED-ийн стандарт баар хийх- Өрөөг дүүргэхийн тулд хэд хэдэн баар холбох боломж- Хэрэглэгчийн дасан зохицох/тохиргоо хийх, мэдрэхүйн интеграцийг зөвшөөрөх

Алхам 2: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж

Өмнөх алхам дээр хэлсэнчлэн би нэг өрөөг гэрэлтүүлэхийн тулд хэд хэдэн баар хийхийг хүсч байна. Энэ нь зардлын асуудлыг санаанд оруулдаг. Би баар бүрийг хамгийн хэмнэлттэй аргаар хийхийг хичээх болно. Миний ашигласан микроконтроллер нь AVR ATtiny2313 байв. Эдгээр нь харьцангуй хямд бөгөөд цөөн хэдэн хүн хэвтэж байсан. ATtiny2313 нь нэг Universal Serial Interface ба USART интерфэйстэй бөгөөд дараах алхмуудад ашиглагдах болно. Надад гурван MCP23016 - I2C 16bit I/O порт өргөтгөгч байсан, яг зөв тоо! Би порт өргөтгөгч бүрийг ашиглан 16 LED -ийн нэг өнгийг хянадаг байв. LED … Харамсалтай нь миний олж чадах хамгийн хямд үнэ байсан. Эдгээр нь 48 улаан, ногоон, цэнхэр ~ 10000мкд 5мм бөгөөд 20 градусын өнцөгтэй. Энэ нь одоогоор хамаагүй байх ёстой, учир нь энэ бол зөвхөн нэг загвар юм. Гэсэн хэдий ч үр дүн нь үнэхээр сайхан байна! Би микроконтроллерыг 8 МГц давтамжтайгаар ажиллуулж байна. I2C автобус нь 400 кГц давтамжтай ажилладаг. LED шилжих давтамж нь ойролцоогоор 400 Гц байна. Ийм байдлаар хэрэв би 48 LED -ийг хязгаарлахгүйгээр жолоодох чадвартай бол дараа нь илүү ихийг хийх болно!

Алхам 3: угсрах

Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган

Хэлхээ хийснийхээ дараа би прототип хийх зорилгоор хэд хэдэн талбар дээр хийсэн. Хэдэн цагийн турш утас хайчилж, хэлхээг угсарсны дараа би ийм үр дүнд хүрэв: 48 LED, тонн утас бүхий нэг аварга талх хавтан!

Алхам 4: Хяналт?

Хяналт?
Хяналт?

Энэ бол төслийн хамгийн хэцүү хэсэг юм. Би нэг хяналтын алгоритмыг загвар/дарааллаар зохицуулах, LED тус бүрийн гэрэл, өнгийг хянах боломжтой болгохыг хүсч байсан. LED -ийг хянахын тулд би MCP23016 руу 4 байт хэмжээтэй нэг хүрээ илгээх ёстой. (1 байт = 8 бит). Өнгөт IC корреспондентын хаяг бүхий нэг байт, "бичих" командыг агуулсан 1 байт, 16 битийн утга бүхий 2 байт (LED). IC нь LED -тэй "угаалтуур" гэсэн утгаараа холбогдсон бөгөөд энэ нь зүү дээрх 0 логик утга нь LED -ийг асаах болно. Харин одоо 48 LED -ийн ХОУХШ -ийн хяналтыг хэрхэн хийх вэ? ХБХ -ийн тайлбарласан @ Википедиа. Хэрэв би LED -ийн гэрлийг 50%болгохыг хүсч байвал миний ХОУХ -ны утга 50%байна. Энэ нь нэг хугацаанд LED нь унтраалттай ижил хугацаанд байх ёстой гэсэн үг юм. 1 секундын хугацааг авч үзье. ХОУХ 50% гэдэг нь энэ 1 секундын дотор асах хугацаа 0.5 секунд, унтраах хугацаа 0.5 секунд байна гэсэн үг юм. ХБХ 80%уу? 0.2 секунд унтраасан, 0.8 секунд ассан! Дижитал ертөнцөд: 10 цагийн мөчлөгийн 50% нь 5 мөчлөгийн хувьд LED асаалттай, өөр 5 мөчлөгийн хувьд LED унтарсан гэсэн үг юм. 20%? 2 мөчлөг асаалттай, 8 цикл унтраасан. 45%? Бид үнэхээр 45%-ийг авч чадахгүй байна … Хугацаа нь мөчлөгт байдаг бөгөөд бидэнд ердөө 10 цикл байдаг тул бид ХОУХ -ийг 10%-иар хувааж болно. Энэ нь тээглүүрийн хувьсал 50%байх ёстой гэсэн үг юм. 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Эсвэл бүр 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; Програмчлалын хувьд бид массивыг асаах, унтраах дарааллыг гаргаж болно. Цикль бүрийн хувьд бид зүү рүү гаргадаг индексийн утга нь мөчлөг байсан. Би хэр ойлгомжтой байсан бэ? Хэрэв бид LED0 50%, LED1 20%болгохыг хүсч байвал хоёр массивыг нэмж болно.: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; LED 1 зүүг жолоодоход: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; LED0 -ийн үр дүн +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Энэ тоонуудын дарааллыг порт өргөтгөгч IC дээр гаргаснаар бид LED0 -ийг 50% тод, LED1 -ийг 20% -иар авах болно !! 2 LED -ийн хувьд энгийн, тийм үү? Одоо бид үүнийг өнгө бүрийн хувьд 16 LED -ээр хийх ёстой! Эдгээр массив тус бүрийн хувьд өнгө тус бүрийн тод байдлын хослол байдаг (16 LED) Бид өөр өнгөний хослол хүсэх болгондоо энэ массивыг өөрчлөх шаардлагатай болдог.

Алхам 5: Үүнийг хялбар болгох

Үүнийг хялбар болгох!
Үүнийг хялбар болгох!
Үүнийг хялбар болгох!
Үүнийг хялбар болгох!

Өмнөх алхам бол энгийн дараалал гаргахад хэтэрхий их ажил юм … Тиймээс би LED хийх өнгийг дарааллын нэг алхамаар хэлж, алхамыг гурван массиваар авах програм гаргахаар шийдлээ. Би энэ програмыг LabView дээр цаг хугацааны хязгаарлалтын улмаас хийсэн.

Алхам 6: Эхний туршилтууд

Анхны туршилтууд
Анхны туршилтууд

Микроконтроллерт хэд хэдэн алхамыг ачаалж, бид иймэрхүү зүйлийг олж авлаа: Видео бичлэгийн чанар муу байгаад уучлаарай! Би дараалсан алхамуудын хамгийн их тоог 8 болгож, ХОУХ -ийг 20% -ийн үсрэлтээр хязгаарлав. Энэхүү шийдвэр нь миний ашиглаж буй хяналт болон ATtiny2313 -ийн EEPROM -ийн хэмжээ хэр зэрэг байгааг үндэслэн гаргасан бөгөөд эдгээр туршилтуудад би ямар нөлөө үзүүлж болохыг олж мэдэхийг хичээсэн бөгөөд үр дүнд сэтгэл хангалуун байгаагаа хэлэх ёстой.

Алхам 7: Бодит цагийн хяналт

Бодит цагийн хяналт
Бодит цагийн хяналт
Бодит цагийн хяналт
Бодит цагийн хяналт
Бодит цагийн хяналт
Бодит цагийн хяналт

Өмнөх алхамуудад дурьдсанчлан би өрөөнийхөө LED -ийг хянадаг бүх микроконтроллеруудтай холбоо барихыг хүсч байна. Тиймээс би ATtiny2313 дээр байгаа USART интерфэйсийг ашиглаж, компьютер дээрээ холбосон. Би бас LED зурвасыг хянах LabView програмыг хийсэн бөгөөд энэ програм дээр би микроконтроллерт дараалал, LED тус бүрийн өнгө, дарааллын алхамуудын хоорондох хугацааг хэлж чадна. Би LED -ийн өнгийг хэрхэн өөрчилж, дарааллыг тодорхойлж болохыг харуул.

Алхам 8: Дүгнэлт

Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт

Төслийнхөө энэ анхны хандлагад амжилттай орсон гэж бодож байна. Би бага нөөц, хязгаарлалттай 16 RGB LED -ийг хянах боломжтой. LED тус бүрийг тусад нь хянах боломжтой бөгөөд хүссэн дарааллыг бий болгох боломжтой.

Ирээдүйн ажил:

Хэрэв би хүмүүсээс эерэг санал хүсэлт хүлээн авбал би энэ санаагаа улам боловсронгуй болгож, хэвлэмэл хэлхээний самбар, угсрах заавар бүхий DIY электроникийн иж бүрдэл хийх боломжтой.

Дараагийн хувилбарт би: -Микроконтроллерийг ADC -тэй болгож өөрчлөх -MCP23016 -ийг LED -ээс илүү их гүйдэл шингээж болох өөр төрлийн цуваа хэлбэрээр солих -Микроконтроллертой холбогдохын тулд нээлттэй эхийн програм хангамж хийх, LED -ийг удирдах -Хэд хэдэн микроконтроллеруудын хоорондын холбоог хөгжүүлэх.

Танд ямар нэгэн санал, асуулт байна уу? Эсвэл сэтгэгдэл үлдээнэ үү!

Let It Glow -ийн финалч!

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