Mündəricat:

İnteraktiv mühit işığı: 8 addım
İnteraktiv mühit işığı: 8 addım

Video: İnteraktiv mühit işığı: 8 addım

Video: İnteraktiv mühit işığı: 8 addım
Video: ❗YENİ❗TAİM TEST BANKI. FƏSİL 2.2.4. İNTERAKTİV DƏRSİN TƏŞKİLİ. İŞ ÜSULLARI FORMALARI. (1-65) 2024, Iyul
Anonim
İnteraktiv Ətraf İşığı
İnteraktiv Ətraf İşığı
İnteraktiv Ətraf İşığı
İnteraktiv Ətraf İşığı
İnteraktiv Ətraf İşığı
İnteraktiv Ətraf İşığı

Bu mənim ilk təlimatımdır! Düzgün İngilis dili yazmaqda çətinlik çəkdiyim zaman səbr edin. Məni düzəltməkdən çekinmeyin! Bu layihəyə 'Parılsın' yarışması başladıqdan dərhal sonra başladım. Kaş ki, çox şey edərdim və etmək istədiklərimi bitirərdim. Amma məktəblə iş arasında istədiyim qədər vaxtım qalmadı. Buna baxmayaraq, təcrübələrimin bir hesabatını təlimat olaraq buraxıram, buna görə hər kəs mənim etdiyimi edə bilər. Bu təlimat bir bələdçi olaraq xidmət etmək və bu ziddiyyətin necə ediləcəyini öyrətmək üçün nəzərdə tutulmamışdır. Elektronikaya yeni başlayanlar üçün bir bələdçi deyil. Arzu etmək istədiyim bir fikir və hədəfi paylaşmaq kimidir. Elektronikada bir başlanğıc/tamamilə cahilsinizsə və buna bənzər bir şey etmək istəyirsinizsə, üzr istəyirəm! Ancaq hər zaman sizə kömək etməyə çalışa bilərik. Son addıma baxın. Artıq çoxlu işıqlı layihələr gördük. Əksəriyyəti RGB LED -lərindən istifadə edir: - Otağı bir rənglə işıqlandırmaq, əhval -ruhiyyənizə uyğun atmosfer yaratmaq - TV/Monitor rəngindən və ya səsdən işıq effektləri yaratmaq. Instructables.com -da hətta bir neçəsi var. Əlaqədar: DIY Ambient Light SystemsLight Bar Ambient Lighting Öz mühit rəngli işıqlandırma çubuqlarınızı qurmaq Bu müsabiqəni bəhanə edərək bir müddətdir ağlımda olan bir layihəyə başladım. Həmişə bu mühit işıqlarına bənzər bir şey etmək və otağımdakı divarları RGB LEDləri ilə doldurmaq istəmişəm. Ancaq bir addım daha ataraq, hamısını və hər birini idarə oluna bilər. Bu layihə, inşallah, həvəskarlar və elektron tinkerlər üçün aparat/proqram hack və sensor inteqrasiyasına imkan verən açıq mənbəli elektronika dəsti ilə nəticələnəcək. Budur hazırladıqlarımın kiçik bir ön görünüşü:

Addım 1: Fikri araşdırın

Otağımdakı divarları hər bir LED üçün rəng və parlaqlığı idarə edən RGB LED -lərlə doldurmaq istəyirəm. İstifadənin rahatlığı və elastikliyi üçün bir mikro nəzarətçi istifadə edəcəm. Təəssüf ki, mikrokontrolörlərdə mövcud olan bir neçə pinlə yüzlərlə LED -i idarə edə bilmirəm. Bir çox LED -in idarə olunmasını kodlaşdırmaq belə çətin olardı və buna görə də bütün LED -ləri bir neçə kiçik çubuğa bölmək qərarına gəldim və hər bir çubuq üçün bir mikro nəzarətçi istifadə edə bildim. Ardından məlumat mübadiləsi üçün mikro nəzarətçilərin ünsiyyət imkanlarından istifadə edərdim. Bu məlumatlar LED -lərin rəngi və parlaqlığı, rənglərin nümunələri/ardıcıllığı və sensor məlumat ola bilər. Hər bir çubuq üçün 16 RGB LED istifadə etməyə qərar verdim. Bu nə çox böyük, nə də kiçik bir çubuğa səbəb olur. Bu yolla hər bir çubuq üçün xərcləri azaldaraq hər bir led üçün məqbul sayda resurs istifadə edirəm. Buna baxmayaraq, 16 RGB LED mikro nəzarətçinin 48 LED (3*16 = 48) olmasıdır. Xərcləri nəzərə alaraq istifadə etmək qərarına gəldim. istifadə edə biləcəyim ən ucuz mikro nəzarətçi. Bu o deməkdir ki, mikrokontrolörün 48 LED üçün kifayət qədər olmayan 20 -yə qədər giriş -çıxış pininə malik olacağı mən var. Layihənin məqsədi bir otağı işıqlandırdığı üçün charlieplexing və ya bir növ zaman ayırma sürücüsü istifadə etmək istəmirəm. Düşündüyüm alternativ bir növ kilidli qeyd qeydindən istifadə etməkdir! Davam edir:- Etmək və interaktiv mühit işığı- İdarə edilə bilən LED-lərdən standart bir çubuq düzəltmək- Bir otağı doldurmaq üçün bir neçə çubuğu birləşdirmək imkanı- İstifadəçinin uyğunlaşmasına/konfiqurasiyasına və sensor inteqrasiyasına icazə verin.

Addım 2: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

Əvvəlki addımda deyildiyi kimi, bir otağı işıqlandırmaq üçün bir neçə çubuq düzəltmək istəyirəm. Bu, xərc məsələsini ağla gətirir. Hər bir çubuğu mümkün olan ən qənaətcil şəkildə etməyə çalışacağam. İstifadə etdiyim mikro nəzarətçi AVR ATtiny2313 idi. Bunlar olduqca ucuzdur və ətrafımda bir neçə nəfər yatdı. ATtiny2313 eyni zamanda bir Universal Serial İnterfeysinə və bir USART interfeysinə malikdir ki, bu da aşağıdakı addımlarda yaxşı istifadə ediləcəkdir. Üç MCP23016 - I2C 16bit I/O port genişləndiricim də uzanmışdı, tam doğru say! 16 LED -in bir rəngini idarə etmək üçün hər bir port genişləndiricisini istifadə etdim. LEDlər … Təəssüf ki, tapa biləcəyim ən ucuzlar idi. 48 qırmızı, yaşıl və mavi ~ 10000mcd 5 mm, 20 dərəcə bucaqlıdır. Bunun hələlik heç bir əhəmiyyəti olmamalıdır, çünki bu yalnız bir prototipdir. Buna baxmayaraq nəticə olduqca gözəldir! Mikro nəzarətçini 8 MHz -də işləyirəm. I2C avtobusu 400 kHz tezliyə malikdir. LED keçid tezliyi təxminən 400 Hz -dir. Bu şəkildə, 48 LED -i həddinə çatdırmadan idarə edə bilsəm, daha sonra daha çox yer tutacağam!

Addım 3: Montaj

Məclis
Məclis
Məclis
Məclis
Məclis
Məclis
Məclis
Məclis

Dövrü tərtib etdikdən sonra, prototip etmək üçün bir neçə çörək taxtasında qurdum. Bir neçə saatlıq telləri kəsdikdən və dövrəni yığdıqdan sonra belə bir nəticə əldə etdim: 48 LED və ton telli bir nəhəng çörək taxtası!

Addım 4: Nəzarət?

Nəzarət?
Nəzarət?

Bu, layihənin ən çətin hissəsidir. Nümunələr/ardıcıllıqla işləmək və hər bir LED -in parlaqlığını və rəngini idarə etmək üçün kifayət qədər ümumi bir idarəetmə alqoritmi etmək istədim. LEDləri idarə etmək üçün MCP23016 -ya 4 bitlik bir çərçivə göndərməliyəm. (1 bayt = 8 bit). IC müxbirinin rəngi ünvanı olan bir bayt, "yaz" əmri ilə 1 bayt və 16 bit (LED) dəyəri olan 2 bayt. IC, LED -lərə "lavabo" olaraq bağlanır, yəni pindəki 0 məntiq dəyəri LED -i yandıracaq. İndi çətin bir hissə, 48 LED üçün PWM nəzarətini necə etmək olar? Bir LED üçün PWM öyrənək! PWM @ Wikipedia -ı izah etdi. LED -in parlaqlığını 50%istəsəm, PWM dəyərim 50%-dir. Bu o deməkdir ki, LED bir zaman kəsiyində sönmə vaxtı ilə eyni vaxtda olmalıdır. 1 saniyəlik bir dövr götürək. 50% PWM, bu 1 saniyədə açılma vaxtının 0,5 saniyə və sönmə müddətinin 0,5 saniyə olması deməkdir. PWM 80%? 0,2 saniyə, 0,8 saniyə açıq! Rəqəmsal dünyada: 10 saat dövrü ilə 50%, 5 dövr üçün LED -in yandırıldığı, başqa 5 dövr üçün isə LED -in söndüyü deməkdir. 20%? 2 dövrü açıq, 8 dövrü qapalı. 45%? Həqiqətən, 45%əldə edə bilmərik … Dövr dövrlərdə olduğu üçün və yalnız 10 dövrümüz olduğu üçün, PWM -ni yalnız 10%-lik addımlarla bölə bilərik. 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Və ya hətta 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; Proqramlaşdırmada bir sıra açma və söndürmə ardıcıllığını edə bilərik. Hər döngə üçün pinə çıxardığımız indeksin dəyəri dövrü idi. Mən indiyə qədər mənalı idimmi? LED0 50%və LED1 20%etmək istəyiriksə, hər iki dizini əlavə edə bilərik.: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; LED -i idarə etmək üçün: 1, 2, 0, 0, 0, 0, 0, 0, 0, 0; LED0 ilə nəticələnir +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Liman genişləndiricisi IC -də bu ədəd ardıcıllığını çıxardıqda, LED0 -u 50% parlaqlıqla, LED1 -i isə 20% -lə əldə edərdik! 2 LED üçün sadədir, elə deyilmi? İndi bunu hər LED üçün 16 LED etmək məcburiyyətindəyik!

Addım 5: Asanlaşdırın

Asanlaşdırmaq!
Asanlaşdırmaq!
Asanlaşdırmaq!
Asanlaşdırmaq!

Əvvəlki addım sadə bir ardıcıllıq yaratmaq üçün çox işdir … Buna görə də hər bir LED -in rənglərini ardıcıllığın bir addımında izah etdiyimiz və addımın üç cərgəsini əldə etdiyimiz bir proqram hazırlamaq qərarına gəldim. Vaxt məhdudiyyəti səbəbindən bu proqramı LabView -də hazırladım.

Addım 6: İlk Təcrübələr

İlk Təcrübələr
İlk Təcrübələr

Mikro nəzarətçiyə bir neçə addım yükləyərək belə bir şey əldə edirik: Videoların keyfiyyətsiz olması üçün üzr istəyirik! Bir ardıcıllığın maksimum addım sayını 8 -ə təyin etdim və PWM -ni 20% sıçrayışla məhdudlaşdırdım. Bu qərar, istifadə etdiyim nəzarət növünə və ATtiny2313 -in nə qədər EEPROM -a malik olduğuna əsaslanır. Bu təcrübələrdə nə cür təsirlər edə biləcəyimi görməyə çalışdım. Nəticədən məmnun olduğumu söyləməliyəm!

Addım 7: Real vaxt nəzarət

Real vaxt nəzarət
Real vaxt nəzarət
Real vaxt nəzarət
Real vaxt nəzarət
Real vaxt nəzarət
Real vaxt nəzarət

Əvvəlki addımlarda qeyd edildiyi kimi, otağımdakı LED -ləri idarə edən bütün mikro nəzarətçilərlə ünsiyyət qurmaq istəyirəm. Beləliklə, ATtiny2313 -də mövcud USART interfeysindən istifadə etdim və kompüterimə qoşdum. LED barını idarə etmək üçün LabView -də də bir proqram hazırladım. Bu proqramda mikrokontrolöre ardıcıllığın nə qədər olduğunu, hər bir LED -in rəngini və bir ardıcıllığın addımları arasındakı vaxtı deyə bilərəm. Növbəti videoda LEDlərin rəngini necə dəyişə biləcəyimi və ardıcıllığı təyin edə biləcəyimi nümayiş etdirin.

Addım 8: Nəticələr

Nəticələr
Nəticələr
Nəticələr
Nəticələr
Nəticələr
Nəticələr
Nəticələr
Nəticələr

Layihəmin bu ilk yanaşmasında uğur qazandığımı düşünürəm. Az resurs və məhdudiyyətlərlə 16 RGB LED -i idarə edə bilirəm. İstənilən ardıcıllığı yaratmaqla hər bir LED -ə ayrıca nəzarət etmək mümkündür.

Gələcək işlər:

İnsanlardan müsbət rəy alsam, bu fikri daha da inkişaf etdirə və çap elektron lövhələri və montaj təlimatları ilə birlikdə tam bir DIY Elektronika Kiti hazırlaya bilərəm.

Növbəti versiyam üçün: -Mikro nəzarətçini ADC ilə birinə dəyişdirin -MCP23016 -ı LED -lərdən daha çox cərəyan edə biləcək başqa bir növ paralel olaraq dəyişdirin -Mikro nəzarətçi ilə ünsiyyət qurmaq üçün açıq mənbəli proqram yaradın və LED -ləri idarə edin -Bir neçə mikrokontrolör arasındakı əlaqəni inkişaf etdirin.

Hər hansı bir təklifiniz və ya sualınız varmı? Ya da şərh yaz!

Let It Glow -da finalçı!

Tövsiyə: