Stap 4: De Charliegrid... lay-out en programmering
Voor degenen die niet vertrouwd zijn met dit, het is een manier van controlerende veel LED's met slechts een paar pinnen door te profiteren van de tri-state aard van een microcontrollers pinnen en de voorwaartse spanning voor de LEDs. Er zijn talloze verklaringen van de charliegrid en hun toepassingen op het net dus ik zal niet meer dan een korte uitleg geven.
Opmerking de configuratie van de LED's op de charliegrid.
Kun je een + ve spanning op één besturingselement lijn, en u kunt een 0V zetten op een andere lijn. U laat de andere lijnen van de controle niet opvolgende middellage aan om het even wat. Veronderstel hebbend de charligrid op een breadboard en u twee regels van het besturingselement verbinden met een batterij. In het geval van de microcontroller, u deze twee pinnen als uitgangen program en een pincode instellen om een logica '1' en de andere naar een logica '0'.
U laat de andere controle-lijnen los, of in het geval van een micrcontroller u deze pinnen als ingangen instellen.
De LED met de meest directe verbinding aan deze verbinding zal oplichten. Hoewel er meerdere paden via deze pinnen via andere LEDs, zal slechts één licht want als dat zo is, de voorwaartse spanning die LED altijd lager dan een willekeurige combinatie van andere LEDs zijn zal.
Wanneer de positie van de logica '1' en '0' worden omgekeerd en de dezelfde regels van controle zijn geselecteerd, wordt de LED in de omgekeerde positie oplicht. Deze in het circuit diagram kunt u zien als paren van LEDs tussen elke combinatie van controle-ingangen. Zo 6 control lijnen kunnen bedienen 30 LEDs individueel... niet op hetzelfde moment natuurlijk!
Als u wilt een LED oplichten is het gewoon een kwestie voor het programmeren van de microcontroller te sturen een logica '1' of een logica '0' die ooit twee controle lijnen overeenkwam met dat LED en de anderen op ingangen instellen.
Door kort het verlichten van elke gewenste LED op zijn beurt, kunt u bouwen een display als een monitor als gevolg van de persistentie van visie effect. Omdat slechts één LED kan tegelijkertijd worden aangestoken, is dit altijd noodzakelijk in een charliegrid.
In de code de porta/portb output registreert en tris registers worden geladen met de waarden die vooraf berekend om het licht van een LED. Duurde een tijdje voor het berekenen van ze allemaal. Hier is een fragment:
LED1 LED2 LED3 LED4
unsigned char LEDS_TRISA [31] = {0xfd, 0xee, 0xf7, 0xfd,
unsigned char LEDS_PORTA [31] = {0x02, 0x01, 0x08, 0x00, 0
unsigned char LEDS_TRISB [31] = {0xfb, 0xff, 0xfb, 0xfb, 0
unsigned char LEDS_PORTB [31] = {0x00, 0x00, 0x00, 0x04, 0 x
Als er iemand weet van een veralgemeende charliegrid algoritme, zal ik zeer geïnteresseerd.
Maar eerst moest het raster worden gelegd uit. Voor de microdot was dit een grote uitdaging wegens het gebrek aan ruimte. De belangrijkste foto toont hoe deze beheersbaar werd.
Aanvankelijk ik de LEDs in paren in het raster en de componenten van de bodem in zo goed waar ik wilde hen. Dit was erg verwarrend toen proberen uitzoeken van de beste, meest efficiënte connectiviteit van de complexe charliegrid. Door het bewegen van de LED's uit de buurt van de onderste onderdelen, werd de ratsnest gemakkelijker te lezen. Daarna was het eenvoudig om het raster weer op de bodem kant onderdelen verplaatsen en de indeling van de bodem met een minimum van laag naar laag vias en crossover tracks doen. Hier ziet u het effect van bewegen en draaien van de LEDs om de beste regeling in de gekke naamgeving opeenvolging van de schematische charliegrid na de hernummering van de LED's op het bord.