Daft Punk tabell replika Graphics Controller
* ljud används under creative commons-licens, se youtube för detaljer.
Graphics controller gör tre saker:
1) Accepts Visa instruktioner från en USB-port (virtuell com-port kompatibel med gamla winamp plugins).
2) läser Visa skript från ett SD-kort. Visa skript görs på en PC med hjälp av seq_txt programmet (och källa) kopplad till detta instructable.
3) avkodar display instruktioner och skickar dem till föraren överklagandenämnder.
USB
Styrelsen använder en 28 pin PIC med USB-maskinvaran. Detta är super lätt att genomföra med hjälp av microchip USB CDC föraren. Jag har inte brytt sig om att implementera detta ännu. Jag planerar inte att använda det och en bit av minnet svek krävs. 18fX550 USB-bilder bara ha 2K RAM. FAT-filsystemet (nedan) använder 2 512K buffertar för att läsa SD-kortet. Som tas från övre 1k normalt reserverad för USB av mikrochip CDC föraren. SO: eftersom USB använder kommer alltid prioriteras (dvs SD kort Spelningen slutar och bordet väntar instruktioner efter USB är inkopplad) vi kan bara återanvända fett minnesbuffertar för USB när du är ansluten. Observera också: USB Vcc pin är faktiskt ansluten till en PIC pin. Detta är så vi kan upptäcka en USB-kabel utan fullständig uppräkning (kanske?).
SD-kort
Animeringsfiler kan göras med seq_txt.exe (windows) program (och källa) bifogas detta instructable. De ursprungliga filerna finns här. Jag skrev inte dessa. Jag tror de har skapats av instructables användare Mathieu Roncheau. Dess en bare EXE-fil från en okänd källa. Använd på egen risk (men jag har haft några problem). Klicka på rutorna i detta program för att skapa bilder som kommer att visas i tabellen daft punk, klicka på ">" att göra en ny bildruta. Klicka på disken för att spara en oformaterad textrepresentation av de bilder som du ritade.
Här är ett exempel på den fil som går med bilden som visas i bilden nedan:
1 2 4 8 16
Detta är en ASCII-representation av den binära motsvarigheten till varje kolumn, med toppen som 0. Den första kolumnen är 10000 = 1, tredje är 00100 = 4, och så vidare. Varje rad representerar en ram, varje rad avslutas med både \r och \n.
Dessa animation filer kopieras till ett SD-kort (som din digitalkamera använder) precis som alla andra diskar. Registeransvarige accepterar SD-kort i någon av de vanliga format (FAT12/16/32) tack vare en bantad version av DOSFS av Lewin Edwards.
Registeransvarige läser igenom alla *.dpt (daft punk tabell) filer i rotkatalogen på SD-kortet och "spelar" var och en. När alla filer läses börjar det över i början.
Visa avkodning
Oavsett hur informationen blir till kontrollern, ankommer det som ASCII-representationer av bitmappsbilder. Usch.
Vi behöver konvertera ASCII-data till en riktig heltal. I exemplet ovan sist representeras kolumnen (00001 i binär) av 16 i decimal. 16 är faktiskt representeras av två byte på en PC - 1 & 6. Dessutom dessa byte är kodade som ASCII, 1 är faktiskt 0x31 och 6 är faktiskt 0x36.
En) subtrahera 0x30 från varje siffra (| = 0x30... xor?).
B) lägga till första siffran i nya variabeln X
C) multipliceras X 10
D) Lägg till andra siffran, upprepa C & D som behövs för att bearbeta alla siffror.
När det är klart det är bara en fråga om banka bitar ut några stift.
Koden Status
Koden är bara knappt alfa. Jag ville få PCB och kod Inlagd eftersom några personer har skrivit att uttrycka intresse. USB-drivrutinen har inte implementerats ännu och kräver viss uppmärksamhet till minne organisation. FETT & SD libs arbetet stor, det läser filer i en slinga utan problem, men endast FAT 16 har testats. Koden har ännu inte flyttats in i snygg funktion, dess helt enkelt "som är" från min första fungerande prototyp.
Framtida förbättringar:
- USB-anslutning genom CDC (virtuella com/seriell port).
- Inbyggda teckensnitt för rendering oformaterad text via USB eller läsa .txt-filer från SD-kortet.
- Använda inbyggda teckensnitt för att Visa nr kort/dåligt kort meddelanden.
- Felhantering på SD läsningar och animation parsning.
- ADC hamnar lämnades för beat påvisande baserat varvtalsreglering.
- ADC/DIO portar vänster gratis för växlar eller potentiometrar.
- Lägg till loop och hastighet instruktioner till animation skriptet format... eftersom bitmapp värden är alltid 0-31, 32 värdet kan utlösa en slinga N gånger bestäms av nästa siffra. Ett värde på 33 kan ange en ny uppdateringsfrekvens (hastighet).
- Hårdvara test/effekt på själv testa (POST) - skriva byte till IO expander, och läsa utdata från förra styrelsen i kedjan. Om byte ut = byte i sedan hårdvara fungerar korrekt (kräver loopback-anslutning till sista utgång expander ombord i kedjan).
Hårdvara översikt
PCB och banan är i Cadsoft Eagle format.
Programvara skriven med MPLAB & C18 kompilator.
För nördar: mikrokontroller är en 28 pin 8 bit PIC18f2550 med USB-maskinvaran och 2K ram. Det körs på 5 volt eftersom den behöver 48 MHZ att göra USB-gränssnittet (via en 20Mhz kristall). SD-kortet är 3.3V bara logik. SD-kortet har en egen + 3,3 utbudet från en LM317 foder från den 5.1V som delas av PIC och lysdioder. Det är inte helt perfekt, men det fungerar. Signalerna till SD-kortet delas upp till runt 3V med en 2.2K och 3.3K resistor avdelare. Data utdata från kortet till PIC är kvar kala, 3.3V hög är tillräckligt för att utlösa Vh på bild. Jag plockade upp spänningsavdelare designen från MikroeBasic kompilator manual. Detta är inte ett perfekt arrangemang, jag var tvungen att skära SPI hastighet ner till klocka/64 innan jag kunde på ett tillförlitligt sätt kommunicera med SD-kortet. Dock är detta läsa enda operation där hastighet spelar egentligen ingen roll så det fungerade perfekt (och billiga!).