RGB LED bord

Berätta om dina pågående projekt.
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Klas-Kenny:
Tack för input, får fixa en sån kabel, jag vet inte vad FK betyder dock, FlerKoppar? :)

Nu har jag version 1.0 vilket betyder "approved version" :)

Bild

Om ingen har några invändningar mot den här designen så kommer jag beställa på söndag kväll!! yaaay :tumupp:

Så jag ger er helgen att fundera lite :) Är såklart tacksam för feedback även fast jag allra helst vill skicka min design till Iteadstudio.
Xynter
Inlägg: 500
Blev medlem: 4 januari 2009, 14:20:40
Ort: Örnsköldsvik

Re: RGB LED bord

Inlägg av Xynter »

Kenntoft: FK betyder flerkardelig(Stavning?). Det finns i stora drag tre sorters "installationskabel". EK är enkel kardel, FK är fler kardelig och MK är mång kardelig.
En EK är styv på grund av att den ledaren är solid, en FK är mycket smidigare eftersom att den består av några kardeler i ledaren och en MK är riktigt smidig eftersom att den har ännu fler kardeler i ledaren.

Som sagt det här är bara i stora drag och det finns hur många varianter av kabel på marknaden som helst.
Användarvisningsbild
Klas-Kenny
Inlägg: 11831
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: RGB LED bord

Inlägg av Klas-Kenny »

Anledningen till att jag nämnde just 1,5mm2 FK är för att den brukar finnas till handa hos många, det är inget särskilt "bra" med den i det här fallet, bara att den skulle fungera bra.

Bara kör på den första bästa kabel du hittar på runt 1mm2 eller så, inte så noga här.
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Komponenter

Fick mina 20st TLC5940 idag!

Bild

Det var inte super-snabbt, LED från hong kong gick snabbare.

17 dagar tog det att få TLCn

Nåväl nu är de bara kretskort och själva bordet som fattas.. egentligen så fattas det mesta:)
men man kan ju labba lite medan man väntar.
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Nu har jag lagt en beställning hos Iteadstudios.

Crazy billigt måste jag säga.

Products
------------------------------------------------------
1 x 2-POSITION PCB TERMINAL BLOCK (5Pcs) (CON001) = $1.50
6 x 2.54mm 16Pin Female Header (5Pcs) (CON005) = $9.00
4 x DIP Sockets Solder Tail - 28-Pin 0.3 (5 Pcs) (SOC008) = $4.00
3 x 2.54mm 40Pin Bend Male Header (5 Psc) (CON012) = $4.50
1 x [PCB Prototyping] ITEAD Colors PCB 10cm*10cm max -8pcs (PPB011) = $30.00

Totalt $56 = 381SEK

Helt okej!

Det kan nog ta ett tag, 4 veckor kanske??

Kommer bli otåligt!

Men det är mkt mjukvara att ta rätt på, och mycket att löda :)
Användarvisningsbild
landinl
Inlägg: 3
Blev medlem: 3 maj 2010, 12:20:32
Ort: Umeå
Kontakt:

Re: RGB LED bord

Inlägg av landinl »

Spännande projekt. Jag är sjukt nyfiken för att se slutresultatet.
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Meh, Linus!
Din tur på Wordfeud, Lägg istället för att skriva här... :lol:

Jag tycker oxå det ska bli spännande med slutresultatet :)

Bara man får hårdvaran klar så är det mkt olika saker man kan göra med mjukvaran.

påminner mig om det du sa om Processing, något att fundera över kanske.
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Ett litet bakslag på tidsplanen,

Jag hade glömt att inkludera "drills", och det var för att jag ändrat från Excellon till Gerber_rs274X.
Men självklart ska jag inte behöva ändra nånting när jag använder Iteadstudios egna CAM-fil.

Men det var bra, för jag märkte att mina drills låg snett, men det googlade jag på och hittade att om man bockar i:
pos. Coord
och
Optimize

I cam jobbet
Då såg det mkt bättre ut!!

Nu har jag skickat Gerber igen!! :)
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Lödning
I väntan på kretskort har jag lött en massa.
Bild

Har man inget optimalt ställe att göra grejerna på får man improvisera lite.

Kanske inte märks men det här underlättar en del. dioden och experimentkorts-biten ligger bra till i hålet och jag har lätt koll på vilka ben som är vilka.

Funkar för mig..
16 gjorde, 61 to go........ gäsp....... ;)

Sen ska jag löda anslutningspinnar på dom oxå.. 4 lödpunkter till.....
Ska räkna hur många lödpunkter jag har..
RGB led = 4 punkter + stiftkontakerna 4 st, 8 * 77 = 616 punkter
16 pinnars header lister 5 st per kretskort, 5 kretskort = 400 punkter
2 pinnar för GND och +5V på 5 kretskort = 10 punkter
TLCs med 28 pinnar, 3 TLC per kretskort, 5*3*28= 420 punkter
kondensatorer och motstånd, 14 st per kretskort, 14*5=70punkter
1516 lödpunkter totalt..........
Om jag tar 1 minut på mig på varje lödpunkt så är det 25h jobb...
Plus att man ska skala en del kabel och klippa dom i längder...

Hoppas jag räknat fel :)

Mjukvara
Här är idén på hur jag får till bokstäver på bordet. Börjar med att definera arrayer med information om vilka celler som utgör en viss bokstav, har bara definerat A och B.

Kod: Markera allt

int charA[18] ={5,6,14,17,25,30,36,41,47,48,49,50,51,52,58,63,69,74};
int charB[21] ={3,4,5,6,14,18,25,30,36,37,38,39,40,47,52,58,62,69,70,71,72};
Sen har jag en "hjälp" funktion som man kan kalla, som då kikar om cellen man skickar är med i arrayen.
Så man skickar cell# och vilken array, typ charA[].

Kod: Markera allt

boolean OtherFunctions::charTest(int targetCell, int charArray[], int arrayLen){ 
  	for(int i =0; i < arrayLen; i++) {
  if(targetCell==charArray[i]){return true;}
		}
return false;}
Den här koden "skriver" sen bokstaven genom att tända cellerna där föregående funktion return; true.
Och tänder cellerna som return; false i en annan färg, i det här fallet rött.
Men själva tändandet sker i nästa funktion...

Kod: Markera allt

void CharFunctions::write(int nChar)

{
//Character A & a	

if(nChar == 97 || nChar== 65) { // ASCII integer

int charALen = sizeof(charA)/sizeof(int);
    for (int charCell = 1; charCell < 78; charCell++){	
		if(Other.charTest(charCell, charA, charALen)==true)
{Cells.on(charCell,0,0,4095);} //make char cells BLUE
		else{Cells.on(charCell,4095,0,0);} //make non-char cells RED
    }
    
Tlc.update(); //after all cells are set, update the Tlc to show character.

}
Det här är tändfunktionen. den tar emot vilken cell och vilka färger den ska lysa i. 0-4095 i varje färg.

Kod: Markera allt

void CellsFunctions::on(int Cell, int Red, int Green, int Blue)

{
	Tlc.init(); //init the TLCs
	if (Cell == 2){/*Serial.println("Cell_2");*/ Tlc.set(1,Red); Tlc.set(2,Green); Tlc.set(3,Blue);}
//osv resten av de 77 cellerna...
}
Ni kanske tycker det är många funktioner men jag vil att cell.on() ska vara tillgängligt för andra framtida funktioner oxå, så det här blir nog bra.
Är lite sugen på att använda mig av en multi-dimensional array..
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Re: RGB LED bord

Inlägg av Virr3 »

Det är bra att ha många funktioner, bra sätt att tänka på som du har. Gör saker generella, det kommer du ha nytta av
senare :) Använda funktioner flera gånger är utmärkt sätt att programmera. Se bara till så att du inte skriver flera funktioner
som gör nästan samma sak, kolla då över koden och skriv en funktion som alla dom tidigare kan anropa och ta bort kodduplicering.

En jätteliten parantes:
En sak som jag bara kom att tänka på är när du skriver tex. "if(nChar == 97)", du skulle du kunna
skriva "if(nChar == 'A')". i c tolkas alla characters tolkas som tal, så det går utmärkt...
Om du skulle behöva ha nummer någonstans i koden skriv en define för det, så det inte står
random nummer mitt i koden, som du någon gång i framtiden kommer att grubbla över var
tusan du sett de nummret tidigare, dessutom ifall du skulle behöva ändra de någon gång,
är de ett ställe att ändra. Sånna småsaker som gör felsökning lite lättare.

En grej till som kan verka självklar, men ändå dyker upp oftare än vad man kan tro:
När du gör en konstant, tänk igenom vad det är den gör och inte vad det är för nummer.
för att göra ett riktigt tydligt exempel:
om du ska tillexempel antalet sidor på en tärning är sex.
#DEFINE DIE_SIDES 6
är betydligt bättre än
#DEFINE SIX 6

Det är inte alltid så tydligt, men många gånger lika dumt =)

Hoppas de kan va till lite nytta iaf:) Lycka till med projektet! Jag är här dagligen och kollar, skitkul projekt och riktigt bra jobbat!
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Mjukvara
"if(nChar == 'A')".
Men jag skickar in den som Integer. jag fick för mig att det var lättare att behandla dom som integers.
Så du tycker jag ska skicka in dom som char istället för int?

Det är ju lätt att fixa.

Ja det kanske blir många siffror att hålla reda på det har du rätt i.
Så här typ:

Kod: Markera allt

void CharFunctions::write(char nChar)
{
//Character A & a   
if(nChar == 'A' || nChar== 'a') { do something }
Jag är självlärd när det gäller programmering så jag har tyvärr ingen programmerings vett och etikett så jag uppskattar alla tips jag kan få:)

Fråga på vett/etikett.
Jag har en variabel i en funktion, int arrayLen, det går väl bra att använda det namnet i en annan funktion?
För jag tänkte om jag kunde lyfta ut int charALen = sizeof(charA)/sizeof(int); från IF-satsen och lägga den först i void CharFunctions::write(int nChar).
Och kalla den nya variabeln int arrayLen.
Men jag vill inte att den ska ligga och "spöka" för andra funktioner som har den variabeln, om ni hänger med på vad jag pratar om:)
Användarvisningsbild
Argtomte
Inlägg: 243
Blev medlem: 7 april 2008, 22:49:49
Ort: Linköping
Kontakt:

Re: RGB LED bord

Inlägg av Argtomte »

Så du tycker jag ska skicka in dom som char istället för int?
Han menar nog snarare att du lika gärna kan skriva:

int nChar = 'A';
som
int nChar = 97;

'A' tolkas som ett tal i kompilatorn.
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Aha!

Är det så det funkar.
Tack
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Re: RGB LED bord

Inlägg av Virr3 »

Man kan göra som båda sagt, båda är en bra idé för olika tillfällen. Är det bokstäver du vill hantera och inte
något annat, så använd bokstäver. Gör de så enkelt som möjligt :)
kenntoft
Inlägg: 195
Blev medlem: 5 september 2011, 11:32:45
Ort: Sundbyberg

Re: RGB LED bord

Inlägg av kenntoft »

Nu hoppar jag lite framåt i utvecklingen men hur får jag till en scrollning av texten?
Fick tips om att använda multi-dimensional arrays.

Kod: Markera allt

table = [
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
]
Men då blir det istället för att säga cell#1 så säger jag, (row, col,) 0,0 för cell#1
och 0,11 för cell#11, och 1,0 för cell#12 osv.

Det vore skönt om man kunde ha en funktion som tog emot bokstaven i en array och sen gjorde att den scrollade och även satte ihop bokstav1 med bokstav2....etc.

Funktionen skulle kunna bestå av en for-sats som bara egentligen lägger till eller drar av värden på "column" men "row"-värdet är densamma.

Bild

På bilden ser man ju t.ex att 'A' är 6 pixlar lång, och då skulle ju funktionen veta att på column 8 skulle en ny bokstav börja osv.

Lite svårt att fundera just nu, lättare då man byggt klart bordet och kan labba lite med mjukvaran.
Men ni får gärna inspirera mig om hur jag kan göra.
Skriv svar