8X8X8 3D RGB LED Cube (7 / 18 steg)
Steg 7: Dokumentation och Firmware för programmering och ansluta din styrelser
På chipkit finns det ett diagram på Nicks sida av vad som sker där, men här är det igen iallafall.
På Kevins webbplats, du behöver för att kunna läsa schematiskt (och göra vissa tolkning) att veta vad som händer där. Jag tänkte att jag skulle göra det lättare för alla och bara göra detta praktiskt diagram.
När jag gick för att skriva FIREWORKS effekten, jag rusade ut i rymden, och var tvungen att ta bort en animering för att få det att passa - så istället jag portade Arduino koden till Arduino MEGA2560. Nu passar allt. Också, nu vi har koden för MEGA2560!
Chipkit / bas och drivrutiner / Arduino UNO / Arduino MEGA2560
3 / AKTIVERA / D3 / PWM3
5 / SPÄRR / D2 / PWM2
6 / KLOCKA / D13 / D52
7 / röd-inte ansluten
8 / grön-inte ansluten
9 / BLÅ / D11 / D51
26-33 / layer 1 till lager 8 / D4 D10 och A5(D19) / PWM4 till PWM11
GND / GND / GND / GND
5V / 5V / 5V / 5V (Anslut inte din 5V till VIN - VIN är en referensspänningen för A/D omvandlare)
Layer stiften för Arduino UNO valdes specifikt att lämna A0 till A4 gratis och att lämna RX och TX för serial gratis för framtida expansion. Eftersom analoga stift kan också vara digital, jag tyckte det var bäst att lämna så många analoga stift gratis när jag tog Skiktdata ur SPI strömmen och gjorde det parallella.
Det finns 2 olika koder för Atmega328P. En är för Arduino som fristående eller Arduino Eliminator utan extra skiftregister, och den andra är för Arduino UNO Eliminator som har en extra SKIFT register på den.
Eliminatorn gjordes detta sätt eftersom vad Kevin gör för att göra Arduino tillräckligt snabbt för att hantera den stora mängden seriella data är lysande. Han använder hårdvaran SPI i stället för manuellt bit-banka data ut. Detta innebar ursprungligen att han sände även lagerdata ut samma ström - så skiftregister på Arduino UNO eliminator markeringshandtagen som.
Så koden med SPI lager kontroll kräver UNO Eliminator (eller eliminatorn kräver denna kod) och koden utan SPI lager kontroll körs på ett lager Arduino UNO.
Arduino eliminator med extra skiftregister och koden för det, jag kommer att utfasning.
Källkoden för ChipKit kräver MPIDE för ChipKit att ladda upp den till styrelsen.
HEX filen kräver en PicKit3 programmerare att ladda upp koden till ChipKit Eliminator.
Kom ihåg, eliminatorer är valfria, och inte behövs om du vill att koppla din proto-styrelse direkt till base/föraren.
Din mästare panel ska se ut denna video med ChipKit UNO eller PIC UNO eliminator programmerad och ansluten.
http://www.youtube.com/watch?v=xecPxVD7WPk
INTE FORGET hoppare data stream konfiguration byglar om du använder Arduino eller Arduino UNO Eliminator! Det måste finnas en bygel över gröna- och blå-out stiften och de röd- och grön-out stift. Annars visas endast blå sekvenser, och möjligen slumpmässiga rött och grönt i mixen.
I själva verket, är chanserna du kan alltid lämna dessa byglade som jag inte har märkt detta som påverkar den PIC controller, men jag är säker på den udda bit kan vara avstängd då och då om du lämnade dem på.
Jag mycket misstänker dock att om du aldrig planera på att kontrollera mer än en kub, du kan permanent sätta en 1K motstånd över varje par av stift som anges ovan och som i princip skulle göra det auto-switch så du kan köra antingen processorn utan att behöva konfigurera om styrelsen varje gång.
För att köra på universal styrelser måste du använda koden från denna sida. Små ändringar var nödvändiga för att säkerställa full kompatibilitet.
Vi har också fast röd / blå omsvängningen i den ursprungliga koden.
Om du bygger styrelsen hur de säger på HNTE han har röda och blå stiften omvänd - så den enklaste fix för oss är snarare än fastställer styrelsen, helt enkelt fixa koden. OM DU HÄMTADE PIC FIRMWARE INNAN AUGUSTI 29,2014 DÅ DU BEHÖVER LADDA NER ERSÄTTER KODEN HÄR.
Speciellt tack till Doug Domke för att inte bara hitta felet, men för att peka ut exakt hur till sätta fast den.
Han skriver också några nya kod för oss som förhoppningsvis kommer att vara mycket mer intuitivt för att göra egna animationer. (nu finns)
*******************************************************************************
VIKTIGT!
*******************************************************************************
Om du har kopplat Reset linjerna tillsammans mellan bas/förare ombord och en Arduino UNO, Arduino kommer att misslyckas att programmet använder USB! Detta gäller också för Arduino MEGA2560.
Alternativa metoden: när du går att skicka ny kod från IDE, håll RESET-knappen på Arduino UNO/MEGA2560 (eller på bas/förare ombord) tills IDE börjar försöka skicka programmet och släpp sedan Återställ. Du kan också behöva ta bort modulen musik.
Annars kan du bara koppla linjen till Återställ från Arduino base/föraren innan programmering har slutförts. Likaså har du återställa länken bygeln på plats på brädan bridge, kan du behöva ta bort den för att programmera din styrelse.
För att spara dessa filer från den här sidan till din computern system, minns du kan behöva använda spara länk under i din webbläsare. (eller du kan få en "Förbjudna" meddelande). Kom ihåg att byta namn på filen till något relevant, eftersom Instructables tenderar att byta namn på filerna till ett hexadecimalt tal.
Jag har nu Doug Domke ChipKit "RGB_8x8x8_CubeAppTemplateV3_0" firmware plus några demos som han skrev och några jag skrev. Detta inkluderar de nya funktionerna. Hålla kolla här men för buggfixar eller nya versioner!.
UPPDATERING - jag tror han är upp till V9 nu.
V4.5 musik modul kod för ChipKit UNO32 / Arduino MEGA2560 är äntligen gjort.
Baserat på V4 koden, detta använder den virtuella vinsten / buller gräns / slå tröskel potentiometer som ansluter till A5 input snarare än att begränsa själva faktiska signalen. Detta är användbart för lägre signaler, men kan öka signalen svaret till den grad att det svarar på linje och krets omgivningsljud. Generellt dock fungerar med signaler på nivåer som det var tänkt för, det bra! Variabler som VUtop [x] som bara går från 0 till 8 möjliggör lätt programmering utan att behöva kontrollera om den inkommande signalen driver förbi 8 LED gränsen. Du kan fortfarande använda VU [x] för att läsa det faktiska värdet från 0 till 1023. Detta är passande namnet mallen V4_5.