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

Өнгөний орон зайг судлах: 6 алхам
Өнгөний орон зайг судлах: 6 алхам

Видео: Өнгөний орон зайг судлах: 6 алхам

Видео: Өнгөний орон зайг судлах: 6 алхам
Видео: КАК НАСТРОИТЬ L4D2 2024, Арваннэгдүгээр
Anonim
Өнгөний орон зайг судалж байна
Өнгөний орон зайг судалж байна

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

Компьютер эсвэл утасны дэлгэц дээр дэлгэцэн дээр хажууд нь байгаа жижиг улаан, ногоон, цэнхэр өнгийн LED -ийн эрч хүчийг өөрчилснөөр зургийг олон өнгөөр харуулдаг. Улаан, ногоон эсвэл цэнхэр өнгийн LED -ээс гэрлийн эрч хүчийг өөрчилснөөр олон сая өнгийг харуулах боломжтой.

Энэхүү төсөл нь улаан, ногоон, цэнхэр (RGB) өнгөний орон зайг Arduino, RGB LED, жижиг математик ашиглан судлахад тань туслах болно.

Улаан, ногоон, цэнхэр гэсэн гурван өнгөний эрч хүчийг нэг кубын координат гэж бодож болно, өнгө тус бүр нэг тэнхлэгийн дагуу, гурван тэнхлэг нь хоорондоо перпендикуляр байрладаг. Тэнхлэгийн тэг цэг буюу гарал үүсэлтэй ойртох тусам өнгөний хэмжээ бага байх болно. Бүх гурван өнгөний утга тэг цэг буюу гарал үүсэлтэй байвал өнгө нь хар өнгөтэй, RGB LED нь бүрэн унтарсан байдаг. Гурван өнгөний утга аль болох өндөр байвал (манай тохиолдолд гурван өнгө тус бүрт 255) RGB LED нь бүрэн асдаг бөгөөд нүд нь өнгөний хослолыг цагаан гэж ойлгодог.

Алхам 1: RGB өнгөний орон зай

RGB өнгөний орон зай
RGB өнгөний орон зай

Түүний сайхан дүр төрхийг ашиглахыг зөвшөөрсөн Кеннет Мореланд баярлалаа.

Бид 3D өнгөт орон зайн кубын булангуудыг Arduino -д холбогдсон RGB LED ашиглан судлахыг хүсч байна, гэхдээ үүнийг сонирхолтой байдлаар хийхийг хүсч байна. Бид үүнийг гурван гогцоо (улаан, ногоон, цэнхэр тус бүр нэг) үүрлэж, өнгөний хослол бүрээр гүйлгэх замаар хийж болно, гэхдээ энэ нь үнэхээр уйтгартай байх болно. Осциллограф эсвэл лазер гэрлийн шоу? Тохиргооноос хамааран Lissajous загвар нь диагональ шугам, тойрог, 8-р зураг, эсвэл аажмаар эргэлддэг эрвээхэйтэй төстэй загвар шиг харагдаж болно. Lissajous хэв маягийг x-y (эсвэл бидний хувьд x-y-z эсвэл R-G-B) тэнхлэг дээр зурсан хоёр (ба түүнээс дээш) осцилляторын синусоид дохиог хянах замаар бий болгодог.

Алхам 2: Сайн хөлөг онгоц Lissajous

Сайн хөлөг онгоц Lissajous
Сайн хөлөг онгоц Lissajous

Хамгийн сонирхолтой Lissajous загварууд нь синусоид дохионы давтамж бага зэрэг ялгаатай байх үед гарч ирдэг. Осциллографын зурган дээрх давтамж нь 5 -аас 2 -ийн харьцаагаар ялгаатай байдаг (хоёулаа анхны тоо). Энэ загвар нь дөрвөлжин талбайг маш сайн бүрхсэн бөгөөд буланд нь маш сайн ордог. Илүү өндөр тоонууд нь дөрвөлжин талбайг бүрэх, цаашлаад булан руу нь цоолох ажлыг илүү сайн хийх болно.

Алхам 3: Хүлээгээрэй - Бид синусоид долгионтой LED -ийг хэрхэн яаж жолоодох вэ?

Та намайг барьсан! Бид гурван өнгөний хувьд унтраах (0) -ээс бүтэн хүртэл (255) хүртэл хэмжээтэй 3D өнгөний орон зайг судлахыг хүсч байна, гэхдээ синусоид долгион -1 -ээс +1 хооронд хэлбэлздэг. Бид хүссэн зүйлээ авахын тулд энд бага зэрэг математик, програмчлал хийх болно.

  • -127 -аас +127 хүртэлх утгыг авахын тулд утга бүрийг 127 -аар үржүүлнэ үү
  • 127 -ийг нэмээд 0 -ээс 255 хүртэлх утгыг авахын тулд утга бүрийг дугуйлна уу (бидний хувьд ойролцоогоор 255 хүртэл)

0-ээс 255 хүртэлх утгыг нэг байтын тоогоор илэрхийлж болно (C хэлбэртэй Arduino програмчлалын хэл дээрх "char" өгөгдлийн төрөл), тиймээс бид нэг байт дүрслэлийг ашиглан санах ойг хадгалах болно.

Гэхдээ өнцгүүдийн талаар юу хэлэх вэ? Хэрэв та градус ашиглаж байгаа бол синусоид өнцөг нь 0 -ээс 360 хооронд хэлбэлздэг. Хэрэв та радианыг ашиглаж байгаа бол өнцөг нь 0 -ээс 2 дахин π ("pi") хооронд хэлбэлздэг. Бид Arduino -д санах ойг дахин хадгалж, 256 хэсэгт хуваагдсан тойргийг бодож, 0 -ээс 255 хүртэлх "хоёртын өнцөг" -тэй байх болно. Тиймээс өнгөний тус бүрийн "өнцөг" нь байж болно Энд бас нэг байт тоо эсвэл тэмдэгтээр дүрсэлсэн болно.

Arduino бол яг л байгаагаараа гайхалтай гайхалтай бөгөөд хэдийгээр синусоидын утгыг тооцоолж чаддаг ч бидэнд илүү хурдан зүйл хэрэгтэй. Бид утгыг урьдчилан тооцоолж, 256 оролттой урт байт эсвэл char утгыг програмдаа оруулах болно (Arduino програмын SineTable […] мэдэгдлийг үзнэ үү).

Алхам 4: 3D Lissajous загварыг бүтээцгээе

LIssajous 3D загварыг бүтээцгээе
LIssajous 3D загварыг бүтээцгээе

Гурван өнгө тус бүрт өөр өөр давтамжтайгаар хүснэгтийг тойрон эргэхийн тулд бид өнгө тус бүрт нэг индексийг хадгалж, өнгөнүүдээр дамжин өнгөрөх тусам индекс тус бүрт харьцангуй анхны офсетуудыг нэмнэ. Бид 2, 5, 11 -ийг Улаан, Ногоон, Цэнхэр индексийн утгын харьцангуй үндсэн нөхөн төлбөр болгон сонгох болно. Arduino -ийн дотоод математикийн чадварууд нь индекс бүрт офсет утгыг нэмэх үед автоматаар ороож өгөхөд бидэнд туслах болно.

Алхам 5: Үүнийг бүгдийг нь Arduino дээр тавь

Үүнийг бүгдийг нь Arduino дээр тавь
Үүнийг бүгдийг нь Arduino дээр тавь

Ихэнх Arduino нь олон тооны ХОУХ (эсвэл импульсийн өргөн модуляци) сувгуудтай байдаг. Энд бидэнд гурав хэрэгтэй болно. Arduino UNO нь үүнд тохиромжтой. Бяцхан 8 битийн Atmel микроконтроллер (ATTiny85) хүртэл гайхалтай ажилладаг.

ХОУХ -ны суваг бүр Arduino -ийн "AnalogWrite" функцийг ашиглан RGB LED -ийн нэг өнгийг жолоодох бөгөөд синусоид мөчлөгийн эргэн тойрон дахь цэг бүрийн өнгөний эрч хүчийг импульсийн өргөн буюу үүргийн мөчлөгөөр 0 -ээс эхлэн харуулдаг (бүгд унтраалттай)) 255 хүртэл (бүгд асаалттай). Бидний нүд янз бүрийн импульсийн өргөнийг хангалттай хурдан давтаж, LED -ийн янз бүрийн эрч хүч, тод байдлыг хүлээн авдаг. Гурван PWM сувгийг гурван өнгө тус бүрийг RGB LED дээр нэгтгэснээр бид 256*256*256 буюу арван зургаан сая гаруй өнгийг харуулах боломжтой болно.

Та Arduino IDE (Interactive Development Environment) -ийг тохируулж, USB кабелиар Arduino самбартаа холбох хэрэгтэй болно. ХБХ -ны гаралтын 3, 5, 6 -аас (5, 11, 12 -р процессорын тээглүүрүүд) прото самбар эсвэл прото бамбай дээрх гурван 1 КОм (нэг мянган ом) эсэргүүцэл, резистороос LED R, G хүртэл гүйлтийн гүйлт хийх., ба В голтой.

  • Хэрэв RGB LED нь нийтлэг катод (сөрөг терминал) бол катодоос Arduino дээрх GND зүү рүү утсыг холбоно уу.
  • Хэрэв RGB LED нь нийтлэг анод (эерэг терминал) бол анодоос утсыг Arduino дээрх +5V зүү рүү буцаана.

Arduino -ийн ноорог аль ч талаараа ажиллах болно. Би SparkFun Electronics / COM-11120 RGB нийтлэг катодын LED ашиглаж байсан (дээрх зургийг SparkFun вэбсайтаас авсан). Хамгийн урт зүү бол нийтлэг катод юм.

RGB-Instructable.ino ноорогыг татаж аваад Arduino IDE-ээр нээгээд тестийн эмхэтгэлийг хийнэ үү. Зөв зорилтот Arduino самбар эсвэл чипийг зааж өгөөд програмыг Arduino руу ачаална уу. Энэ нь нэн даруй эхлэх ёстой.

Та RGB LED -ийн мөчлөгийг нэрлэж болох олон өнгөнүүдээр дамжуулж, хэдэн саяар нь ч харах боломжгүй болно!

Алхам 6: Дараа нь юу хийх вэ?

Бид дөнгөж сая Arduino -ийн тусламжтайгаар RGB Color Space -ийг судалж эхэллээ. Энэ үзэл баримтлалын дагуу миний хийсэн бусад зүйлд дараахь зүйлс орно.

AnalogWrite-ийг ашиглахын оронд чип дээрх бүртгэл дээр шууд бичих нь ажлыг хурдасгах болно

  • IR -ийн ойролцоо мэдрэгч нь хэр ойрхон байгаагаас хамааран мөчлөгийг хурдасгах эсвэл удаашруулахын тулд хэлхээг өөрчилдөг
  • Atmel ATTiny85 8 зүү бүхий микроконтроллерийг Arduino ачаалагч болон энэ ноорогоор програмчлах.

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