Lödning
I väntan på kretskort har jag lött en massa.
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..