Fórum témák
» Több friss téma |
Sajnos már nem férne rá a nyakra
![]() Enélkül is sikerülhet?
Igen, sikerülhet ha elárulod, milyen módszerrel vannak a LED-ek a kontrollerhez kötve. Mátrix meghajtás kell?
Okés
![]() 5x8 led RGB vel 5 szint 8 oszlop. 3 db Shiftregiszeter 74hc595 1. shift piros szint lehet beállítani ledenként . 2 shift sárga szint lehet beállítani ledenként . 3. shift kék szint lehet beállítani ledenként . pic18f46k22 (16MHZ) rákötöttem pwm(5khz) PWM 1 lábat 1. Shift regiszter Blank lábát. PWM 2 lábát 2. shiftregiszter BLANK lábára. PWM 3 lábát 3. shiftregiszter BLANK lábára. sorokat 5db pedig tranzisztorral oldottam meg. Ennyi a felépitése.
Az egyszerűség kedvéért nézzünk csak egy színt. Adott egy 5 x 8-as kép. Öt oszlop, nyolc sor.
Az első oszlophoz tartozó LED-eket (már amelyiket kell) bekapcsolod, majd bekapcsolod az oszlopmeghajtást. Vársz egy kicsit, kikapcsolod az oszlopmeghajtást. Bekapcsolod a második oszlophoz tartozó LED-eket, bekapcoslod az oszlopot, vársz egy kicsit, majd kikapcsolod az oszlopot, lépsz a harmadik oszlop-ra stb. Az utolsó oszlop után lépsz az elsőre. Mindezt folyamatosan és gyorsan, hogy ne villogjon a kép. Célszerű ezt periódikus megszakításból intézni, pl. egy Timer felhasználásával. Ha egy szín már megy, lehet háromszorozni a rendszert a három színhez. Annyi trükk van nálad, már ha jól értem az egészet, hogy az adatot át kell fordítani SPI-n keresztül 74HC595-re. PWM-mel a fényerőt tudod majd szabályozni, az egyelőre nem érdekes, első lépésként próbáld megérteni, hogyan működik a mátrix meghajtás mert ha jól sejtem, az alapok hiányoznak az egészhez. Idézet: „Az első oszlophoz tartozó LED-eket (már amelyiket kell) bekapcsolod, majd bekapcsolod az oszlopmeghajtást. Vársz egy kicsit, kikapcsolod az oszlopmeghajtást. Bekapcsolod a második oszlophoz tartozó LED-eket, bekapcoslod az oszlopot, vársz egy kicsit, majd kikapcsolod az oszlopot, lépsz a harmadik oszlop-ra stb. Az utolsó oszlop után lépsz az elsőre. Mindezt folyamatosan és gyorsan, hogy ne villogjon a kép. Célszerű ezt periódikus megszakításból intézni, pl. egy Timer felhasználásával. Ha egy szín már megy, lehet háromszorozni a rendszert a három színhez. ” Ez a fenti kóddal működik is eddig rendben. Annyi nem hogy Timer el hogyan lehetne ezt megoldani? Timer2 használom pergésmentesítés mentesítésre. Timer2 elég lehet hozzá? 74hc595 nem SPI vel kezelem ha nem ha nem pic lábára kötöttem clock lacht data lábakat és azokat billegtettem. A hozzászólás módosítva: Okt 1, 2021
Ha jól emlékszem, abban a kontrollerben (PIC18F46K22) összesen hét Timer van: Timer0, Timer1, 3, 5 és Timer2, 4, 6.
Kösd át SPI-re a meghajtó IC-ket, sokat spórólhatsz az erőforrásokkal.
Rendben SPI soha se használtam úgy hogy utánna járok mi az
Ha jól értem ezt a dolgot ezzel egyidőben tudom kezelni a 3 db shiftregisztert. Csak kell plusz 3 láb a picktol?
Annyit akarok kérdezni SPI minden kép kell amúgy mert a 3 shiftem sorba van kötve.
Nem, nem feltétlen kell a beépített SPI-t használnod de sokkal jobban jársz vele.
Indíts az alapokkal, különben soha nem fogsz végezni. Kezdésnek vegyél egy-kettő-öt MAX7219-es modult, kösd össze a kontrollerrel SPI hazsnálatával. Addig bűvészkedj, amíg azok a LED-ek nem világítanak a kjelzőn, amelyiket akarod. Ha működik, köss sorba három modult és úgy tedd próbára a tudományod. Vagy. Másolj le egy komplett kapcsolást és tölts le hozzá egy komplett programot. Az építés öröme megmarad a tudás viszont kevésbé fog gyarapodni.
Rendben picit vissza térnék a kérdésemre.
Ha meg van a multiplex kijelzés amit pár hsz el beszéltünk. Ha meg van egy színre a multiplex után mondtad hogy azt 3x am dolgot RGB miatt. Ha ez is meg van hogy tudom külön a ledek fényerejét ez által színt is tudnék keverni. Elmélet érdekel leginkább hogy hogy szokták ezt megoldani?. Arra gondoltam ledenkent shiftelek és pwnt állítok . Nem hinném van egyszerűbb módja ![]()
Megfordítod a vezérlés menetét. Bekapcsolod az oszlopmeghajtót majd a LED-eknek változó ideig adsz áramot, így ha elég gyorsan csinálod, a szem számára eltérő fényerővel fognak világítani.
Okés de ezt ha jól gondolom az összes LED nek a fényerejét egyformán változik a fenti elmélet szerint.
Azt szeretném minden egyes lednek a külön tudjam a piros sárga kék fényerejét változtatni. Utánna saját színeket tudok keverni stb.
Szia!
3x2 db 595-el megoldható a dolog . Mivel 5*8*3 a szervezés , ezért egy ledre jutó idő 25msec. ennyi időnként kell léptetni a ledeket. 1 led kiválasztásához kell 2db shift regiszter (5 sor 8 oszlop mátrix ) ebből kell 3 db ( rgb) Megcímzel egy ledet és a pic ccp1 ccp2 ccp3 modulja szolgáltatja a 3db pwm jelet a három OE kivezetésnek. A másik 3 OE ki és bekapcsolható . Így 7 vezetékkel megoldható a dolog. Bár nem tudom, hogy ha a led 1/40 ideig működik, mekkora lesz az effekív fényerő?
Sziasztok.
Olyan kérdésem lenne hogy szeretném használni CCP2,CCP3,CCP4 CCP2,CCP3 2 lábon is meg van és MikroC mindegyik lábon pwm aktiválja. Hogy lehet tiltani? Hogy csak CCP 2 RB3, CCP 3 RB5 legyen pwm ?
A PIC konfigurációjában lehet kiválasztani, melyik láb legyen PWM kimenet ha bekapcsolod a megfelelő CCP modult.
Sziasztok!
Segítsetek megérteni az alábbi kódrészletet, minden apró részletre kitérve, ha lehet:
Köszönöm!
Pontosan mi a kérdés?
ugyanaz mint a printf... pl: https://en.wikipedia.org/wiki/Printf Balra igazítva 2 számjegyre kiírja a hőmérséklet egész rész(bevezető 0-val ha kell), egy számjegyre a tizedes részt, a 223 gondolom a kijelző kódkészletében a fok jele meg a C betű A hőmérséklet tízsszeresét tárolja a temperature egész változóban.
Ami kimaradt, a kiírás a temp_a karaktertömbbe történik
Akkor tehát, a temp_a karakter tömbbe a következő íródik: az első karakter egy "-" jel, a kövekező
2db szám, ami a temperature abszolút értékének 10-zel való osztásának egész részéből adódik, a következő karakter "." pont, majd a temperature abszolút értékének 10-zel való osztásának maradékértéke, egy számjegyre kerekítve, majd a 223-nak a karater megfelelője ami a "°" és végül a "C". És ezt egy LCD-re ki tudom íratni. A hozzászólás módosítva: Jún 11, 2023
Sziasztok!
Kérdés: valaki tudott már ezzel az eszközzel mérni? Nekem nem sikerült. A kód amivel szeretném mérésre bírni
A program leáll A hozzászólás módosítva: Júl 20, 2023
Igen. Viszonylag egyszerű a működése.
5V táp kell neki, meg egy felhúzó ellenállás. 3V3 nem támogatott.
A felhúzó ellenállás rajta van vett panelen, nem?
Szerintem nincsen. Ohm mérővel tudod ellenőrizni.
Az adat és a Vcc között van egy 10K ellenállás. Ohm mérővel 5Kohm mérhető.
Akkor ok. Nekem csak szenzor van, nyák nélkül.
Kódot érdemes átnézni, meg szkóppal a működést. Ha lesz egy kis időm, átnézem a kódodat én is.
Addig eljutottam, hogy a program belép a "dht22_read" függvénybe, ki is megy a szenzor felé vétel készség jele. de a szenzor nem ad választ.
Ha az adatláb nincs felhúzva akkor ne is várj választ , folyamatos gnd-t fogsz látni
|
Bejelentkezés
Hirdetés |