Hacka CharlieCube (2 / 5 steg)
Steg 2: Börja hacka koden...
Om du vill ändra kod som innebar att konvertera arduino kod, i ett kalkylblad
separera uppgifterna ut, manipulera tabeller, sedan sätta saker tillbaka tillsammans, och klistra in tillbaka i en textredigerare. För att pad med inledande nollor att hålla kolumner uppradade, du behöver formatera några kolumner om du vill använda inledande nollor, och sedan senare du har att byta dessa nollor för utrymmen eller kompilatorn kommer gnäller på dig. Du måste också vara försiktig när du klistrar in information i kalkylbladet. Ibland måste du se till att du bara klistra in data, inte formeln eller länk. Andra gånger måste du vara noga med att kopiera relationer ner en rad, kolumn eller matris. Jag slutade göra flera processer och flera kalkylblad ark för alla data. Jag behövde 8 kartor över data (4 för gemensam katod och 4 för gemensam anod). Jag kommer förmodligen sluta ändra den till 2 kartor och en linje att justera start z value(z=z+1,2,3), och en annan att hämma overflow problemet (över 192 då z = z-192).
Det finns flera filer som innehåller olika bitar av kod som gör denna LED cube fungerar, och det finns några bord av information som du kan manipulera för att ändra hur det fungerar. Filen cubeplex.h innehåller tabellen flushbuffer, som är vad jag valde att ändra.
Här är ett par exempel spola bufferten.
om (_cube_buffer [0]! = 0) flushElement (copy_frame, 4, 8, _cube_buffer [0]);
om (_cube_buffer [1]! = 0) flushElement (copy_frame, 16, 4, _cube_buffer [1]);
om (_cube_buffer [2]! = 0) flushElement (copy_frame, 12, 16, _cube_buffer [2]);
om (_cube_buffer [3]! = 0) flushElement (copy_frame, 8,12, _cube_buffer [3]);
Du kan se varje rad serialiseras i båda ändar, men mitt i linjen, det finns ett par siffror som är unika för varje rad. Du kan också hända att det finns utrymmen stoppning siffrorna, så att saker rada upp fint, detta är viktigt när du manipulera data senare.
Denna tabell kod sätter upp en relation mellan par av nummer och ordning tända varje LED. Siffrorna i paren representerar microcontroller stiften men senare få översatt till portadresser för snabb belysning.
Varje LED kan kontrolleras i denna tabell, och ingen sifferkombinationer kommer att upprepas. Sekvensen bör förbli detsamma, men antalet par som representerar microcontroller stiften kommer att behöva ordnas åter arbeta med gemensam anod lysdioder med original (gemensam anod) kod och ledningar. Jag använda brukar en textredigerare för att skriva program, men i det här fallet en textredigerare inte skulle fungera mycket bra för att manipulera data. Eftersom jag hade att göra med en tabell med siffror, 2 kolumner av 192 rader, ett kalkylblad verkar lämpligast.
Detta är inte första gången jag har gjort detta, detta är andra tid att jag har gjort detta, det var lite lättare denna gång. Den andra gången som jag gjorde detta var att skapa 4 tabell att kompensera för hur kuben är inriktad med kub ledningarna. Beroende på hur du ansluter kablarna, det finns 4 vanliga sätt att göra det, varje tabell fungerar med var och en av de 4 olika sätt du kan ställa in dessa ledningar.
För att göra en gemensam anod kub arbeta med gemensam katod programvaran, du naturligt antar att Invertera stiften skulle göra exakt vad du vill, men om man tittar på hur komplicerat ett stort antal charlieplexed LED scheman utseende, du antar att Invertera stiften inte kan göra rätt sak alls.
När du undersöker en den LED spiror, du hitta att den använder 4 stift till ljus 12 lysdioder, detta är perfekt i att varje möjlig kombination av sätt att koppla upp en singe positiv, och en enda negativa bly, kommer att resultera i en LED som lyser. Formeln för beräkning av hur många lysdioder kan tändas från ett givet antal microcontroller pins, är N fyrkant minus N eller N gånger (N-1). En enda spiran har 4 leder, så är den maximala kunna styra 12 lysdioder (4 x 4 = 16, 16-4 = 12, eller 4 gånger 3 = 12. 4 RGB lysdioder medel totalt 12 lysdioder. Kuben är mindre än idealisk, eftersom det använder 16 stift för att styra 192 lysdioder, ännu max antal lysdioder bör en 240, om de var fast i en aning mode.
När du tittar på koden, kan du se att varje 4 rader är en grupp, eftersom de microcontroller 4 pins styra en enda spira.
Nu kan titta på hur man ska hantera data med ett kalkylblad och en text redaktör, att få önskat resultat.