Buggfix Plus
Aktuellt datum och tid: 15.01 2017-04-28

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 10 inlägg ] 
Författare Meddelande
InläggPostat: 20.39 2016-10-06 
EF Sponsor
Användarvisningsbild

Blev medlem: 17.53 2010-01-04
Inlägg: 3390
Ort: Skogen mellan Uppsala-Gävle
Hej på er!

För ett tag sedan annonserade Icecap på forumet om att han ville göra sig av med 5st stora LED-skyltar. Bättre nytta hos hobbyister än i bingen.
Vi var fler som visade intresse men till slut bestämde Lasp och jag att vi skulle slå våra stora börsar ihop och nypa dessa.
Sagt och gjort. Efter en trevlig resa till Icecap så blev det tung släpkärra i retur.

Hela vår idé är att skåpen ska demonteras och säljas till EF:are. Vi har absolut ingen avsikt att "göra pengar" på det här utan kan det sponsra inköpet och resan så gör vi arbetet med demontering/testning/packning ideellt.
En drös moduler kommer gå åt till ett personligt projekt, som kommer visas här, men ett större antal kommer inom kort ut till försäljning på forumet.
Även en del av PSU:erna (5V/40A) kommer säljas här.

Avsikten med denna tråden är att försöka ha en allmän tråd där kommunikation etc kan diskuteras. Eventuellt även dela bibliotek med mera. Får vi ihop lite bra så kanske vi kan placera allt matnyttigt i wiki:n?
Har vi tur kan mäster-Icecap fylla i med lite information också.

Här kommer lite smakprov efter tester som en annan EF:are gjort (med mig hurrandes i bakgrunden).

Bilaga:
Färgglad.JPG

Bilaga:
Pong.JPG

Bilaga:
Litet_typsnitt.JPG

Bilaga:
Stort_typsnitt.JPG

Bilaga:
Stort_typsnitt1.JPG


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 20.43 2016-10-06 
Användarvisningsbild

Blev medlem: 18.09 2011-07-01
Inlägg: 6086
Ort: Fredriksdal, Helsingborg
Riktigt snyggt !
Bra jobbat Här är det väl bara fantasin som sätter gränser för tillämpning!


Upp
 Profil  
 
InläggPostat: 21.47 2016-10-06 
Användarvisningsbild

Blev medlem: 07.13 2008-07-03
Inlägg: 9778
Ort: Norrköping
Synd att min fantasi är så begränsad. :(


Upp
 Profil  
 
InläggPostat: 09.33 2016-10-07 

Blev medlem: 14.59 2006-02-27
Inlägg: 3671
Ort: Asby (Österbymo, Östergötland)
Jag köpte in mig (med mycket tjat ;) ) i tidigt skede på detta, mest för att jag var nyfiken på hur det fungerar och om jag kunde få det att fungera. Har alltså NOLL erfarenhet av detta.
Så ett par moduler damp ner i lådan och några kvällar senare hade jag hyffsad koll på vad som var vad. Tror jag! :D

Matning:
Dom är ganska hungriga dom här panelerna, det finns ett par skruvterminaler på varje panel.
Matas med 5V och vid fullt flås slukar en panel dryga 4A om jag inte minns fel. Ska mätas noggrannare, men räkna på att skaffa bra agg med grov kabel!

"Dataport": (har inte skylten framför mig nu, kan skriva fel på pinnarnas exakta namn, men funktionen är ju den viktiga)
Det finns två portar för data på varje panel, en in och en ut.
Den första panelen matar du in data på, och när den fyllt upp sig går data vidare till nästa panel, osv.
Pinnarna är märkta på kortet, om än delvis gömt under kontakten, men man kan läsa ut det relativt lätt.
En knippe pinnar är GND och refererar till matningens GND.
Sen finns det två uppsättningar RGB, 6 pinnar totalt. Varje panel är delad på längden så att säga. Så man har övre och undre halva.
En pinne är klocka. CLK.
En pinne är strobe / output enable. Tro den är benämnd STO?. Denna kan PWMas för att dimma hela panelen. Med två paneler så dimmas en panel i taget genom samma pinne.
En pinne är .. här är jag osäker på vedertaget namn/funktion. LAT? Med den styr om ska se uppdateringen. Alltså kan den pulsas efter varje uppdateringscykel, så man inte ser hur pixlarna skiftas in.

Jag började med att googla en hel del på de kretsar som finns på. Det är två olika, skiftregister och typ drivare. Exakta benämningar kommer sen. Skiftregistret är enkelt att hitta datablad på, men drivaren är värre. Men via googling av denna fann jag att adafruit laborerat med liknande paneler:
https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/
Så här ifrån kom jag igång ganska bra med att få lyse i panelen. Kopplar man rakt av som adafruit gör så funkar det på så vis att saker faktiskt händer på panelerna. Men eftersom pixlarna uppdateras på olika vis panelerna emellan så blir det mest rörigt.

Men nu visste jag ju att panelen lös och jag kunde gå vidare.

Så med STO? och LAT? mot 0V / 5V så kunde jag sakta klocka på och se hur saker beter sig.
I excel-bilden syns hur uppdateringen sker, så på 64 klockpulser har man kommit igenom en panel, 128 är två paneler.
Delningen längs med och de dubbla RGB-ingångarna gör att man halverar antal klockpulser för att uppdatera en hel panel.

Så i arduino gjorde jag det himla enkelt med en for..next som rullar på 0-127. Och när räknaren nått exempelvis 33 så sätter jag en R-signal hög. Nästa klocka sätts den låg igen.
Då tänds röd pixel på position 33. Helt enkelt.

Och ungefär här är jag. Med lite klumpig mappning och hårt skriven kod kunde jag ju rita ett hjärta och få tiden lite wife-approved. ;)

Men nu börjar jag inse mina begränsningar.
Exempelvis hur man ställer intensitet på enskilda pixlar/färger. Där börjar jag tro att man klockar ut en pixel i taget, och sätter intensiteten för varje pixel med STO vid just den pixelns tid.
Men då är ju arduino med klumpig kod rätt borträknad prestandamässigt. Fast jag har ju med adafruits exempelkod sett att arduinon hinner med tämligen bra att animera med alla färger och intensiteter.

Mer data och min klumpiga arduino-kod kommer snart!


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 10.01 2016-10-07 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 21966
Ort: Kristinehamn
Jag får väl fylla i lite. Har börjat skriva på en PDF om hur man "pratar" med denna typ moduler men inte hunnit klart.

Man ska ha klart för sig att det finns två typer moduler: statiska och dynamiska. I denna "leverans" är det bara statiska.

Statiska har en LED per utgång på drivkretsarna och de data man skickar ut står kvar till några andra skickas.

Dynamiska ska uppdateras vid att skicka data för en specifik rad, vänta en stund, nästa data för nästa rad osv. Dynamiska "kräver" alltså ett bildminne att visa och ett att rita i.

Nåväl, data läggs ut (oftast 2 grupper om RGB, alltså 6 bit och definitivt i detta fall), CLOCK hissas och sänks (max 20MHz) och när alla data är skickade kör man en STROBE (-> 1 -> 0) som latchar de shiftade data till utgångsstegen. Drivkretsarna fungerar nämligen som ett långt shift-register, ett för varje databit.

Det finns en -OE som slår på LED'na vid 0 och stänger av drivstegen vid 1. Den reglerar man intensiteten med medelst PWM.

Vid dynamiska moduler bör man koordinera STROBE och -OE för att undvika flimmer o skit.

Jag börjar alltid med att göra en Display_Set_Pixel(int X, int Y, int Colour) rutin som sedan sätter rätt bit på rätt position i bildminnet och all ritning använder den rutin. Man kan göra den olika avancerat men jag anser att den är basen i det hela.

Ska man ha många nyanser blir det strax med besvärligt. Om jag bara beskriver för en enda pixel och 16 nivåer på varje färg (totalt 4096 kombinationer) ska man alltså skicka ut samma bild men 16 gg så snabbt. Om en färgblandning består av 7 röda, 3 gröna och 15 blåa ska det alltså skickas ut 3 paket med RGB, sedan 4 paket med RB, sedan 6 paket med B och till slut ett paket med ingen av dom.

Detta ska såklart koordineras med -OE så det är inte helt enkelt.

Om man inte har en mycket snabb µC med rikligt med minne lutar detta åt en hårdvarulösning, jag har lekt lite med nyanser men använder rena RGB-färger numera, det fungerar riktigt bra också.

Jag uppdaterar via timer-interrupt (dynamiska moduler) och skriver till ett delad bildminne: ett att visa, ett annat att rita i. Till det har jag en funktion som byter bildminne som visas och jag har en flicker-fri utläsning.


Upp
 Profil  
 
InläggPostat: 11.56 2017-01-01 

Blev medlem: 14.59 2006-02-27
Inlägg: 3671
Ort: Asby (Österbymo, Östergötland)
Trådlyft! :D

Magnus_K - Vill inte du dela med dig av vad du och din kompis fick ihop, jämfört med mig så är ni ju hästlängder före.. Eller ja, vad och vad, det ser vi ju. HUR fick ni ihop det.


Upp
 Profil  
 
InläggPostat: 16.36 2017-01-01 
Användarvisningsbild

Blev medlem: 22.31 2004-01-30
Inlägg: 773
Ort: Uppsala, Sweden
Det är nog mig ni menar.
Har framme både pixelmanipulerande rutiner och enklare textrutiner för AVR och nrf. Även seriekopplade moduler.
Vad är det du funderar på, kanske är lättare att förklara det som saknas.

Edit:
Ser nu vilken tråd det var, ja det är mig ni menar, bilderna Magnus_K lagt in här ovan är mina överlyckliga stunder när jag kommit ett myrsteg fram som jag bombat Magnus :-)


Upp
 Profil  
 
InläggPostat: 20.35 2017-01-01 
EF Sponsor
Användarvisningsbild

Blev medlem: 17.53 2010-01-04
Inlägg: 3390
Ort: Skogen mellan Uppsala-Gävle
Hej FormerMazda!

Det blev tyvärr inte riktigt som tänkt det här.
Tanken var att modulerna skulle varit demonterande för länge sen och försäljning på gång men andra prioriteringar i livet gjorde att detta föll ner några steg på "att-göra-listan".

Det är Xyzzy som gjort hästjobbet med programmeringen. Tanken var också att jag skulle haft mer tid och satt mig in i koden men som sagt, annat har kommit emellan.
Fråga gärna på så ska jag/vi göra vårt bästa att svara. Får jag bara sen tummen ur att demontera och få iväg lite moduler så kanske det blir mer fart.


Upp
 Profil  
 
InläggPostat: 14.25 2017-01-02 

Blev medlem: 14.59 2006-02-27
Inlägg: 3671
Ort: Asby (Österbymo, Östergötland)
Har inga specifika frågor, var mest nyfiken på hur andra gjort. :)


Upp
 Profil  
 
InläggPostat: 15.30 2017-01-02 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 21966
Ort: Kristinehamn
Lite mer från mig. Jag inriktar mig uteslutande på dessa moduler och liknande i detta inlägg.

Jag allokerar minne till en display buffer. Dessa moduler är 16*8 RGB. Det finns två gånga RGB-data, alltså 6 bit data.
Det ena RGB-sätt är för översta 4 rader och det andra RGB-sätt är för de undre 4 rader.

Varje modul kräver alltså (teoretisk) 16 * 4 bytes = 64 bytes. Av de bytes använder man bara 6 bit av de 8 som finns.

Som man ser är mönstret som data shiftas ut i inte helt rakt. Jag kompenserar detta vid att antingen ha en uppslagstabell som används för "ett mönster" eller en uträkning som ger det samma. Tabellen är såklart med 2 dimensioner (X & Y, 4*4) och ger ett offset som anger var i minnet man ska pilla.

Varje mönster har en given bredd (4*4 = 16 bytes här) och jag har därför en indexring av hur många mönster (i bytes) som det skal offsettas i grunden, sedan adderar jag värdet från tabellen/uträkningen.

Då jag alltid vill kunde sätta ett punkt/en pixel kör jag en OR med ursprungliga värdet och färgdata på den plats.

Men färgen då? Den kan ju vara 0-7 men är det de översta 4 rader eller de understa? Detta kan såklart kollas med Y-positionen och är det den ena används värdet som det är, annars shiftas färgvärdet 3 platser till vänster. Jag använder ju bara bit 0-5.

Pixel-ritningsrutinen har såklart koll på om X & Y är legala positioner så att den inte skriver utanför det allokerade minne.

När all ritning är klar skickas data i buffern ut till skärmen, buffern nollställs och vi kan börja om.

Ovan skrev jag "teoretisk" om minnesbehovet - och det finns det grund för. Har man mycket snålt med minne kan man reservera plats för 1 modul (64 bytes i detta fall) och sedan göra fler ritningar av hela alltet. Om man t.ex. har 4 moduler i serie behöver man att rita om 4 gångar och skicka till varje modul eftersom. Man får då offsetta X före varje ritning, (0, -16, -32, -48) så att pixel-rutinen kan sortera bort illegala värden.

Detta sätt är ju grymt tungt och dåligt så det är verkligen en nödlösning - men det går!

Man kan självklart stapla modulerna i höjd också, då kan man välja att ha dom som en lång rad som "bara" rent fysisk är monterat i två rader men man kan såklart likaväl skicka fler bitars färgdata och ändå ha CLOCK, STROBE och -OE gemensamma.

Använder man två 8-bitars portar kan man mata 2 rader och ha bits till över.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 10 inlägg ] 

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010