Stap 1: theorie
Voor een meer diepgaande uitleg van hoe LED matrices werk, bezoek deze pagina. Zoals u in het circuit diagram hierboven zien kunt, bestaat een LED-matrix uit een aantal LEDs wired samen in een grid-achtige manier. Natuurlijk, hun definitieve regeling hoeft niet te worden in de vorm van een raster, maar hun bedrading doet. In wezen de LEDs in elke rij hebben hun anoden verbonden met elkaar, en alle van de LEDs in elke kolom alles hun kathoden wired samen. Om elke één LED inschakelt, moet u de de anode (via haar gemeenschappelijke verbinding voor rij) naar V + en de kathode (via haar gemeenschappelijke kolom verbinding) verbinden met GND. Op deze manier kan elke LED afzonderlijk worden aangepakt. Dit veroorzaakt een probleem bijna onmiddellijk, echter. Wat als je wilde twee LED's inschakelen op dezelfde, degene die in de eerste kolom een down van de bovenkant en een ander in de derde kolom twee neer vanaf de bovenkant? Nou, zou u verbinden met de tweede en derde rij aan V + en de eerste en de derde kolom GND. Maar nu plots vier LED's zijn op, in plaats van de twee die u oorspronkelijk hebt gewenst. Als u dit probleem kunt u oplossen, wordt rij of kolom scannen gebruikt.
Met rij- en kolom scannen, is slechts één rij orcolumn ooit verbonden met V + of GND tegelijk (in rij scanning, slechts één rij is verbonden met V + en in kolom scannen slechts één kolom is verbonden met GND). Op deze manier zijn de enige LEDs die zal worden verlicht die in de rij/kolom die is op dit moment wordt verbonden met V +/ GND. Zodat het lijkt alsof meer dan één rij/kolom op een moment brandt, worden de rijen/kolommen gescand; Zodra één rij/kolom is ingeschakeld en de bijbehorende LED's zijn uitgeschakeld op /, het weer is uitgeschakeld en hetzelfde gebeurt met de volgende rij/kolom. Deze pulserende van de verlichting gebeurt zo snel dat je oog niet zien wat zich uitschakelen in wat bekend staat als de persistentie van vision (POV), en onze hersenen-proces dat meerdere rijen/kolommen staan op een moment.
Ik besliste te gebruiken rij scannen voor dit project. Ik dacht dat het zou gemakkelijkste, zoals ik ben met behulp van een matrix die bestaat uit vijf rijen en 11 kolommen en vijf rijen zijn in staat om te passen in de 8-uitvoer-maximaal de shift-registers die worden gebruikt voor het bepalen van de matrix. De reden dat ik ben met behulp van shift is dat een standaard Arduino Uno hoeft niet genoeg I/O voor zowel de LED-matrix en de drukknoppen gebruikt om te bepalen van de klok. De shift-registers gebruik 6 Arduino pinnen in plaats van de 16 die nodig zou zijn om direct rijden elke kolom en rij. Drie shift registers worden gebruikt: een voor het scannen van de rij en een ander 2 voor de kolom tot zinken brengen. Omdat het scannen van de rij in wezen onafhankelijk van alles draait, moet het afzonderlijk worden gecontroleerd uit de registers van de kolom. De kolom registers kunnen daadwerkelijk worden daisy-chained samen met behulp van de uitgang voor seriële van een van de shift-registers, waardoor we het aantal pinnen van de Arduino te verminderen. Dit project wordt het 74HC595 shift register gebruikt.
Voor een handleiding over welke shift registreert zijn en hoe ze te gebruiken met een Arduino, Klik hier.
De zonsopgang alarm circuits is vrij eenvoudig, en alleen bestaat uit een basis RC-kring dat geleidelijk de stroom op de poort van een IRF510-MOSFET, waardoor op zijn beurt meer en meer huidige verhoogt stroom door een LED-array, door de afvoer-bronpad, en in GND. Hoe meer actuele stroomt door de array, helderder zijn LED's zijn en hoe dichter je wakker in de ochtend.