Përmbajtje:

Ekran LED 64 Pixel RGB - Një klon tjetër Arduino: 12 hapa (me fotografi)
Ekran LED 64 Pixel RGB - Një klon tjetër Arduino: 12 hapa (me fotografi)

Video: Ekran LED 64 Pixel RGB - Një klon tjetër Arduino: 12 hapa (me fotografi)

Video: Ekran LED 64 Pixel RGB - Një klon tjetër Arduino: 12 hapa (me fotografi)
Video: Pixel Dust on RGB Matrix displays 2024, Nëntor
Anonim
Ekran LED 64 Pixel RGB - Një tjetër klon Arduino
Ekran LED 64 Pixel RGB - Një tjetër klon Arduino
Ekran LED 64 Pixel RGB - Një tjetër klon Arduino
Ekran LED 64 Pixel RGB - Një tjetër klon Arduino
Ekran LED 64 Pixel RGB - Një tjetër klon Arduino
Ekran LED 64 Pixel RGB - Një tjetër klon Arduino

Ky ekran bazohet në një Matricë LED 8x8 RGB. Për qëllime testimi, ai ishte i lidhur me një bord standard Arduino (Diecimila) duke përdorur regjistra me 4 ndërrime. Pasi e vura në punë, e përsërita në një PCB të fabrikuar. Regjistrat e ndërrimit janë 8-bit të gjerë dhe janë lehtësisht të ndërlidhur me protokollin SPI. Modulimi i gjerësisë së pulsit përdoret për përzierjen e ngjyrave, më shumë për këtë më vonë. Një pjesë e RAM -it të MCU përdoret si ruajtës i kornizave për të mbajtur imazhin. RAM -i i videos analizohet nga një rutinë ndërprerëse në sfond, kështu që përdoruesi mund të bëjë gjëra të tjera të dobishme si të folurit me një kompjuter, butona leximi dhe potenciometra. Më shumë informacion në lidhje me "Arduino": www.arduino.cc

Hapi 1: Modulimi i Gjerësisë së Pulsit për Përzierjen e Ngjyrave

Modulimi i Gjerësisë së Pulsit për Përzierjen e Ngjyrave
Modulimi i Gjerësisë së Pulsit për Përzierjen e Ngjyrave

Moduli i gjerësisë së pulsit - ÇFAR?? Modulimi i gjerësisë së pulsit në thelb po e kthen fuqinë e furnizuar me një pajisje elektrike shumë shpejt. Fuqia e përdorshme rezulton nga mesatarja matematikore e funksionit të valës katrore të marrë gjatë intervalit të një periudhe. Sa më gjatë të qëndrojë funksioni në pozicionin ON, aq më shumë fuqi merrni. PWM ka të njëjtin efekt në shkëlqimin e LED -ve si një zbehës në dritat AC. Detyra përpara është të kontrolloni individualisht shkëlqimin e 64 RGB LEDS (= 192 LED të vetëm!) Në një mënyrë të lirë dhe të lehtë, kështu që mund të merrni të gjithë spektri i ngjyrave. Preferohet që të mos ketë ndezje ose efekte të tjera shqetësuese. Perceptimi jolinear i shkëlqimit të shfaqur nga syri i njeriut nuk do të merret parasysh këtu (p.sh. diferenca midis shkëlqimit 10% dhe 20% duket "më e madhe" se midis 90% dhe 100%). Imazhi (1) ilustron parimin e punës së algoritmi PWM. Thoni se kodit i jepet një vlerë prej 7 për shkëlqimin e LED (0, 0). Për më tepër ai e di se ka një maksimum prej N hapash në shkëlqim. Kodi drejton N sythe për të gjitha nivelet e mundshme të shkëlqimit dhe të gjitha sythe të nevojshme për të shërbyer çdo LED të vetëm në të gjitha rreshtat. Në rast se numëruesi i lakut x në lakin e shkëlqimit është më i vogël se 7, LED ndizet. Nëse është më e madhe se 7, LED është i fikur. Duke e bërë këtë shumë shpejt për të gjitha LED -të, nivelet e shkëlqimit dhe ngjyrat bazë (RGB), secila LED mund të rregullohet individualisht për të treguar ngjyrën e dëshiruar. Matjet me një oshiloskop kanë treguar që kodi i rifreskimit të ekranit merr rreth 50% kohë të CPU -së. Pjesa tjetër mund të përdoret për të bërë komunikim serik me një PC, për të lexuar butona, për të folur me një lexues RFID, për të dërguar I2Të dhënat C në module të tjera…

Hapi 2: Biseda me Shift Regjistrat dhe LED

Duke folur me regjistrat e ndërrimit dhe LED
Duke folur me regjistrat e ndërrimit dhe LED
Duke folur me regjistrat e ndërrimit dhe LED
Duke folur me regjistrat e ndërrimit dhe LED

Regjistri i ndërrimit është një pajisje që lejon ngarkimin e të dhënave në mënyrë serike dhe një dalje paralele. Operacioni i kundërt është gjithashtu i mundur me çipin e duhur. Ka një udhëzues të mirë për regjistrat e ndërrimit në faqen e internetit arduino. LED-të drejtohen nga regjistrat e ndërrimit 8-bit të tipit 74HC595. Çdo port mund të burojë ose fundosë rreth 25mA rrymë. Rryma totale për një çip të mbytur ose me burim nuk duhet të kalojë 70mA. Këto patate të skuqura janë jashtëzakonisht të lira, kështu që mos paguani më shumë se rreth 40 cent për copë. Meqenëse LED -të kanë një karakteristikë eksponenciale të rrymës / tensionit, duhet të ketë rezistencë kufizues të rrymës. Duke përdorur ligjin e Ohmit: R = (V - Vf) / IR = rezistenca kufizuese, V = 5V, Vf = Tensioni i përparmë i LED, I = rryma e dëshiruar kanë një tension përpara prej rreth 1.8V, diapazoni blu dhe jeshil nga 2.5V në 3.5V. Përdorni një multimetër të thjeshtë për ta përcaktuar atë. Për riprodhimin e duhur të ngjyrave duhet të merrni parasysh disa gjëra: ndjeshmërinë spektrale të syrit të njeriut (e kuqe/blu: e keqe, jeshile: e mirë), efikasiteti i LED në një gjatësi vale dhe rrymë të caktuar. Në praktikë, thjesht merrni 3 potenciometra dhe i rregulloni ato derisa LED të tregojë dritën e duhur të bardhë. Sigurisht që rryma maksimale LED nuk duhet të tejkalohet. Ajo që është gjithashtu e rëndësishme këtu është që regjistri i ndërrimit që drejton rreshtat duhet të furnizojë rrymë në LED -të 3x8, kështu që më mirë mos e shtyni rrymën shumë lart. Unë isha i suksesshëm me kufizimin e rezistencave prej 270 Ohm për të gjitha LED, por kjo natyrisht varet nga prodhimi i matricës LED. Regjistrat e ndërrimit janë të ndërlidhur me serialin SPI. SPI = Ndërfaqja Periferike Seriale (Imazhi (1)). Kundrejt porteve serike në PC (asinkron, pa sinjal të orës), SPI ka nevojë për një linjë sahati (SRCLK). Pastaj ka një linjë sinjali që i thotë pajisjes kur të dhënat janë të vlefshme (përzgjedhja e çipit / shulja / RCLK). Së fundi, ekzistojnë dy linja të të dhënave, njëra quhet MOSI (master out slave in), tjetra quhet MISO (master in slave out). SPI përdoret për ndërfaqen e qarqeve të integruara, ashtu si unë2C. Ky projekt ka nevojë për MOSI, SRCLK dhe RCLK. Për më tepër, përdoret linja e aktivizimit (G). Një cikël SPI fillon duke tërhequr vijën RCLK në LOW (Imazhi (2)). MCU dërgon të dhënat e tij në linjën MOSI. Gjendja logjike e tij është marrë nga regjistri i ndërrimit në skajin në rritje të linjës SRCLK. Cikli përfundon duke tërhequr vijën RCLK përsëri në HIGH. Tani të dhënat janë në dispozicion në daljet.

Hapi 3: Skematike

Skematike
Skematike
Skematike
Skematike

Imazhi (1) tregon sesi lidhen regjistrat e ndërrimit. Ato janë të lidhura me margaritë, kështu që të dhënat mund të zhvendosen në këtë zinxhir dhe gjithashtu përmes tij. Prandaj shtimi i më shumë regjistrave të ndërrimit është i lehtë.

Imazhi (2) tregon pjesën tjetër të skemës me MCU, lidhëset, kuarcin … Skedari PDF i bashkangjitur përmban të gjitha veprat, më të mirat për printim.

Hapi 4: Kodi Burimor C ++

Kodi Burimor C ++
Kodi Burimor C ++
Kodi Burimor C ++
Kodi Burimor C ++
Kodi Burimor C ++
Kodi Burimor C ++

Në C/C ++ zakonisht duhet të prototiposh funksionet para se t'i kodosh ato. } Arduino IDE nuk kërkon këtë hap, pasi prototipet e funksioneve gjenerohen automatikisht. Prandaj prototipet e funksionit nuk do të shfaqen në kodin e treguar këtu. Imazhi (1): setup () funksionImage (2): funksioni spi_transfer () duke përdorur SPI të harduerit të çipit ATmega168 (funksionon më shpejt) Imazhi (3): kodi i framebuffer duke përdorur një ndërprerje e tejkalimit të kohëmatësit. Pjesë të kodit që kanë një pamje pak kriptike për fillestarët p.sh ndërsa (! (SPSR & (1 << SPIF))) {} përdorni direkt regjistrat e MCU -së. Ky shembull me fjalë: "ndërsa SPIF-bit në regjistrin SPSR nuk është vendosur të bëjë asgjë". Unë vetëm dua të theksoj se për projektet standarde nuk është vërtet e nevojshme të merresh me këto gjëra aq të lidhura ngushtë me harduerin. Fillestarët nuk duhet të frikësohen nga kjo.

Hapi 5: Vegël e përfunduar

Vegël e përfunduar
Vegël e përfunduar
Vegël e përfunduar
Vegël e përfunduar
Vegël e përfunduar
Vegël e përfunduar

Pasi zgjidha të gjitha problemet dhe fillova kodin, më duhej të krijoja një plan urbanistik PCB dhe ta dërgoja në një shtëpi të mrekullueshme. Duket shumë më e pastër:-) Imazhi (1): bordi i kontrolluesit të populluar plotësisht Imazhi (2): ana e përparme e PCBI-së të zhveshur Imazhi (2): ana e pasme Ka lidhës që shpërthejnë PORTC dhe PORTD të çipit ATmega168/328 dhe 5V/GND Me Këto porte përmbajnë linjat serike RX, TX, I2Linja C, linja dixhitale I/O dhe 7 linja ADC. Kjo ka për qëllim të vendosni mburoja në pjesën e pasme të tabelës. Hapësira është e përshtatshme për përdorimin e tabelës (0.1in). Ngarkuesi mund të ndizet duke përdorur kokën ICSP (punon me USBtinyISP të adafruit). Sapo të bëhet kjo, thjesht përdorni një përshtatës standard serik FTDI USB/TTL ose të ngjashme. Unë kam shtuar gjithashtu një kërcyes të rivendosur-çaktivizuar automatikisht. Unë gjithashtu kam gatuar një skenar të vogël Perl (shiko blogun tim), i cili mundëson rivendosjen automatike me kabllo FTDI i cili zakonisht nuk funksionon jashtë kutisë (linja RTS kundrejt DTR). Kjo funksionon në Linux, ndoshta në MAC. Pllakat e shtypura të qarkut dhe disa KIT DIY janë në dispozicion në blogun tim. Kërkohet bashkim SMD! Shikoni skedarët PDF për udhëzimet e ndërtimit dhe burimet për matricat LED.

Hapi 6: Aplikimi: Monitoruesi i ngarkesës së CPU -së për Linux duke përdorur Perl

Ky është një monitor shumë themelor i ngarkesës me një komplot historik. Bazohet në një skenar Perl që mbledh "mesataren e ngarkesës" të sistemit çdo 1s duke përdorur iostat. Të dhënat ruhen në një grup i cili zhvendoset pas çdo përditësimi. Të dhënat e reja shtohen në krye të listës, hyrja më e vjetër nxirret jashtë. Informacioni më i detajuar dhe shkarkimet (kodi …) janë në dispozicion në blogun tim.

Hapi 7: Aplikimi: Biseda me module të tjera duke përdorur I²C

Aplikimi: Duke folur me module të tjera duke përdorur I²C
Aplikimi: Duke folur me module të tjera duke përdorur I²C

Kjo është vetëm një dëshmi parimi dhe deri tani jo zgjidhja më e thjeshtë për këtë punë. Duke përdorur I.2C lejon adresimin e drejtpërdrejtë të 127 bordeve "skllevër". Këtu tabela në anën e djathtë në video është "master" (i cili fillon të gjitha transferimet), bordi i majtë është skllav (duke pritur për të dhënat). Une2C ka nevojë për 2 linja sinjali dhe linja të zakonshme të energjisë (+, -, SDA, SCL). Meqenëse është një autobus, të gjitha pajisjet janë të lidhura me të paralelisht.

Hapi 8: Aplikimi: "Kubi i lojës":-)

Aplikacion
Aplikacion

Vetëm një mendim i çuditshëm. Ky gjithashtu përshtatet me rrethimin prej druri të treguar në faqen hyrëse. Ka 5 butona në pjesën e pasme të tij të cilat mund të përdoren për të luajtur një lojë të thjeshtë. P ENDRFUNDIMI?

Hapi 9: Shfaqja e imazheve / animacioneve në matricë - Quick Hack

Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack
Shfaqja e imazheve / animacioneve në matricë - Quick Hack

Pra, ka vetëm 8x8 pixel dhe disa ngjyra në dispozicion. Së pari përdorni diçka si Gimp për të zvogëluar imazhin tuaj të preferuar në saktësisht 8x8 pixel dhe për ta ruajtur atë si ".ppm" format i papërpunuar (jo ASCII). PPM është e lehtë për tu lexuar dhe përpunuar në një skenar Perl. Përdorimi i ImageMagick dhe mjeti i linjës së komandës "konverto" nuk do të funksionojë siç duhet. Ngarko kodin e ri arduino, pastaj përdor skriptin Perl për ta ngarkuar në kontrollues. Drita është vetëm një mospërputhje e rifreskimit LED dhe shkallës së kornizës së kamerës sime. Pas azhurnimit të kodit pak, ai funksionon mjaft i zymtë. Të gjitha imazhet transferohen drejtpërdrejt në seri siç i shihni. Animacionet më të gjata mund të ruhen në një EEPROM të jashtëm siç është bërë në tabela të ndryshme foli-pov.

Hapi 10: Kontrolli ndërveprues i animacioneve të ruajtura

Pse ta lini mikrokontrolluesin të argëtohet? Kulti Arduino ka të bëjë me llogaritjen dhe ndërveprimin fizik, kështu që thjesht shtoni një potenciometër dhe merrni kontrollin! Përdorimi i një prej 8 hyrjeve të konvertuesit analog në dixhital e bën atë shumë të thjeshtë.

Hapi 11: Shfaqja e videos live

Përdorimi i një skenari Perl dhe disa module e bën mjaft të lehtë shfaqjen e videove pothuajse live në sistemet X11. Ajo ishte e koduar në linux dhe mund të funksionojë edhe në MAC. Punon kështu:- merrni pozicionin e kursorit të miut- kapni një kuti me piksel NxN në qendër të kursorit- shkallëzoni imazhin në 8x8 pixel- dërgojeni atë në tabelën LED- përsëris

Hapi 12: Më shumë dritë pothuajse falas

Më shumë dritë pothuajse falas
Më shumë dritë pothuajse falas

Me vetëm dy hapa shkëlqimi mund të rritet mjaft. Zëvendësoni rezistencat 270Ω me ato 169Ω dhe vendosni një regjistër ndërrimi 74HC595 në IC5.

Recommended: