Inhoudsopgave:

LED-matrix met schuifregisters: 7 stappen (met afbeeldingen)
LED-matrix met schuifregisters: 7 stappen (met afbeeldingen)

Video: LED-matrix met schuifregisters: 7 stappen (met afbeeldingen)

Video: LED-matrix met schuifregisters: 7 stappen (met afbeeldingen)
Video: 🇳🇱 FUNCTIES EN SCOPES - Arduino theorie #3 2024, Juli-
Anonim
LED-matrix met behulp van schuifregisters
LED-matrix met behulp van schuifregisters
LED-matrix met behulp van schuifregisters
LED-matrix met behulp van schuifregisters
LED-matrix met behulp van schuifregisters
LED-matrix met behulp van schuifregisters

Deze instructable is bedoeld als een completere uitleg dan andere die online beschikbaar zijn. Dit zal met name meer hardware-uitleg geven dan beschikbaar is in de LED Marquee instructable door led555.

doelen

Dit instructable presenteert de concepten die betrokken zijn bij shift registers en high side drivers. Door deze concepten te illustreren met een 8x8 LED-matrix, hoop ik u de tools te bieden die nodig zijn om u aan te passen en uit te breiden naar de grootte en lay-out die uw project vereist.

Ervaring en vaardigheden

Ik zou dit project als een gemiddelde moeilijkheidsgraad beoordelen:

  • Als je al ervaring hebt met het programmeren van microcontrollers en het werken met LED's, zou dit project redelijk eenvoudig voor je moeten zijn om te voltooien en op te schalen naar grotere arrays van lichten.
  • Als je net begint met microcontrollers en een of twee LED's hebt geflitst, zou je dit project moeten kunnen voltooien met wat hulp van onze vriend Google.
  • Als je weinig of geen ervaring hebt met microcontrollers of programmeren, is dit waarschijnlijk meer dan waar je aan zou moeten beginnen. Probeer een paar andere beginnersprojecten uit en kom terug als je wat meer ervaring hebt met het schrijven van programma's voor microcontrollers.

Disclaimer en tegoed

Ten eerste ben ik geen elektrotechnisch ingenieur. Als je iets ziet dat niet klopt, of geen best practice is, laat het me dan weten en ik zal het corrigeren. Doe dit op eigen risico! Je moet weten wat je doet, anders kun je schade toebrengen aan je computer, je microcontroller en zelfs aan jezelf. Ik heb veel geleerd van internet, vooral van de forums op: https://www.avrfreaks.netIk gebruik een lettertypeset die bij de ks0108 universele C-bibliotheek is geleverd. Bekijk dat hier:

Stap 1: Onderdelen

Onderdelen lijst

Algemene onderdelen

Om een 8x8 raster van LED's te maken en ze te bedienen, heb je nodig:

  • 64 LED's naar keuze
  • 8 Weerstanden voor de LED's
  • 1 Shift register voor de kolommen
  • 1 Driver-array voor de rijen
  • 8 Weerstanden voor het wisselen van de driverarray
  • 1 microcontroller
  • 1 klokbron voor microcontroller
  • 1 prototypebord
  • 1 voeding
  • Aansluitdraad

Specifieke onderdelen die hier worden gebruikt:

Voor deze instructable heb ik het volgende gebruikt:

  • 64 groene LED's (Mouser-onderdeel #604-WP7113GD)
  • 8 220ohm 1/4 watt weerstanden voor de LED's (Mouser-onderdeel #660-CFS1/4CT52R221J)
  • 1 HEF4794 LED-driver met schuifregister (Mouser-onderdeel #771-HEF4794BPN)
  • 1 mic2981 High-Voltage High-Current Source Driver Array (Digikey-onderdeel #576-1158-ND)
  • 8 3,3kohm 1/4 watt weerstanden voor het schakelen van de driver array (Radio Shack onderdeel #271-1328)
  • 1 Atmel ATmega8-microcontroller (Mouser-onderdeel #556-ATMEGA8-16PU)
  • 1 12MHz-kristal voor de klokbron van de microcontroller (Mouser-onderdeel #815-AB-12-B2)
  • 1 prototypebord met 2200 gaten (Radio Shack-onderdeel #276-147)
  • Geconverteerde ATX-voeding: Zie dit Instructable
  • Massieve kern 22-awg aansluitdraad (Radio Shack onderdeel #278-1221)
  • Soldeerloze breadboard (Radio Shack onderdeel #276-169 (niet meer beschikbaar, probeer: 276-002)
  • AVR Dragon (Mouser-onderdeel #556-ATAVRDRAGON)
  • Dragon Rider 500 door Ecros Technologies: Zie dit Instructable

Opmerkingen over onderdelen

Rij- en kolomstuurprogramma's: waarschijnlijk het moeilijkste deel van dit project is het kiezen van de rij- en kolomstuurprogramma's. Ten eerste denk ik niet dat een standaard 74HC595-schuifregister hier een goed idee is, omdat ze het soort stroom dat we door de LED's willen sturen niet aankunnen. Daarom heb ik voor de HEF4794 driver gekozen omdat deze de aanwezige stroom makkelijk kan wegzinken als alle 8 leds op een rij aan staan. Het schuifregister is aan de lage kant aanwezig (de massapin van de leds). We hebben een rijstuurprogramma nodig dat voldoende stroom kan leveren om meerdere kolommen aan elkaar te rijgen. De mic2981 kan tot 500mA leveren. Het enige andere onderdeel dat ik heb gevonden dat deze taak uitvoert, is de UDN2981 (digikey-onderdeel #620-1120-ND), dat hetzelfde onderdeel is van een andere fabrikant. Stuur me een bericht als je andere high-side drivers kent die goed zouden werken in deze applicatie. LED Matrix: Deze matrix is 8x8 omdat de rij- en kolomdrivers elk 8 pinnen hebben. Een grotere LED-array kan worden gebouwd door meerdere matrices aan elkaar te rijgen en zal worden besproken in de stap "modulaire concepten". Als u een grote reeks wilt, bestel dan alle benodigde onderdelen in één keer. Er zijn 8x8, 5x7 en 5x8 LED-matrices beschikbaar in één handig pakket. Deze moeten gemakkelijk te vervangen zijn door een doe-het-zelf matrix. Ebay is hiervoor een goede bron. Mouser heeft enkele 5x7-eenheden beschikbaar, zoals onderdeel #604-TA12-11GWA. Ik gebruikte goedkope groene LED's omdat ik gewoon aan het spelen ben en plezier heb. Als u meer uitgeeft aan zeer heldere, zeer efficiënte LED's, kunt u een veel spectaculairder scherm produceren… dit is echter goed genoeg voor mij!Besturingshardware: de matrix wordt bestuurd door een Atmel AVR-microcontroller. Hiervoor heb je een programmeur nodig. Omdat ik aan het prototypen ben, gebruik ik de Dragon Rider 500 waarvoor ik zowel montage- als gebruiksinstructie heb geschreven. Dit is een eenvoudig hulpmiddel voor het maken van prototypes en ik raad het ten zeerste aan.

Stap 2: De matrix

De Matrix
De Matrix
De Matrix
De Matrix
De Matrix
De Matrix

Ik zal voor dit project mijn eigen LED-matrix bouwen met 5 mm leds en een prototyping-bord van Radio Shack. Opgemerkt moet worden dat u 8x8 dot matrix led-modules kunt kopen bij verschillende bronnen, waaronder ebay. Ze zouden prima moeten werken met deze instructable.

Overwegingen bij de constructie

Uitlijning De LED's moeten zodanig worden uitgelijnd dat ze in dezelfde richting onder dezelfde hoek staan. Ik vond dat de gemakkelijkste optie voor mij was om het lichaam van de LED gelijk met het bord te plaatsen en het daar vast te houden met een klein stukje plexiglas en een klem. Ik plaatste een paar LED's op een paar centimeter afstand van de rij waaraan ik werkte om ervoor te zorgen dat het plexiglas parallel was met het prototypebord. Rijen en kolommen We moeten een gemeenschappelijke verbinding hebben voor elke rij en elke kolom. Vanwege onze rij- en kolomdriverkeuze moeten we de anode (positieve kabel van de LED) verbonden hebben door een rij en de kathode (negatieve kabel van de LED) verbonden door een kolom. Besturingsdraden Voor dit prototype gebruik ik een aansluitdraad met een vaste kern (enkele geleider). Dit is heel eenvoudig te koppelen met een soldeerloze breadboard. Gebruik gerust een ander type connector voor uw project.

De matrix bouwen

1. Plaats de eerste kolom LEDS in het prototypebord.2. Controleer nogmaals of uw polariteit voor elke LED correct is, dit zal erg moeilijk te repareren zijn als u dit later beseft.3. Soldeer beide draden van de LED op het bord. Controleer of ze correct zijn uitgelijnd (niet in vreemde hoeken) en knip de kathodedraden af. Zorg ervoor dat u de anodekabel niet afknipt, die hebben we later nodig, dus laat hem gewoon naar boven wijzen.4. Verwijder de isolatie van een stuk massieve kerndraad. Soldeer dit stuk draad aan elke kathode op bordniveau.

  • Ik plakte dit aan elk uiteinde vast en ging toen terug en voegde bij elke kruising een beetje soldeer toe.
  • Deze draad moet langs uw laatste LED lopen om een gemakkelijke interface te maken wanneer we besturingsdraden toevoegen.

5. Herhaal deel 1-4 totdat u alle LED's op hun plaats hebt en alle kolombussen gesoldeerd.6. Om een rijbus te maken, buigt u verschillende anodedraden in een hoek van 90 graden zodat ze de andere anodedraden in dezelfde rij raken.

  • Hieronder staan gedetailleerde foto's hiervan.
  • Zorg ervoor dat deze niet in contact komen met de kolombussen, waardoor er kortsluiting ontstaat.

7. Soldeer de draden op elke kruising en knip de overtollige anodedraden af.

Laat de laatste anode voorbij de laatste LED steken. Dit wordt gebruikt om de bedieningsdraden van de rijbestuurder aan te sluiten

8. Herhaal deel 6 & 7 totdat alle rijen bussen zijn gesoldeerd.9. Bevestig de bedieningsdraden.

  • Ik gebruikte rode massieve kerndraad voor de rijen en zwart voor de kolommen.
  • Sluit één draad aan voor elke kolom en één voor elke rij. Dit kan eenvoudig aan het einde van elke bus.

Belangrijk

Deze LED-matrix heeft geen stroombegrenzende weerstanden. Als u dit zonder weerstanden test, zullen uw LED's waarschijnlijk doorbranden en is al dit werk voor niets geweest.

Stap 3: De besturingshardware

De besturingshardware
De besturingshardware
De besturingshardware
De besturingshardware

We moeten de kolommen en de rijen van onze LED-matrix besturen. De matrix is zo geconstrueerd dat de anodes (spanningszijde van de led) de rijen vormen en de kathoden (aardzijde van de led) de kolommen. Dit betekent dat onze rijdriver stroom moet sourcen en onze kolomdriver moet deze laten zinken. Om op pinnen te besparen, gebruik ik een schuifregister om de kolommen te besturen. Op deze manier kan ik een bijna onbeperkt aantal kolommen aansturen met slechts vier microcontroller-pinnen. Het is mogelijk om er slechts drie te gebruiken als de Enable Output-pin direct aan de spanning is gekoppeld. Ik heb gekozen voor de HEF4794 LED driver met schakelregister. Dit is een betere optie dan een standaard 74HC595 omdat hij gemakkelijk de aanwezige stroom kan laten zinken als alle 8 LED's tegelijk branden. Aan de hoge kant (stroombron voor de rijen) gebruik ik een mic2981. Het schema toont een UDN2981, ik geloof dat deze twee uitwisselbaar zijn. Deze driver kan tot 500mA stroom leveren. Omdat we maar 1 rij per keer aansturen geeft dit veel mogelijkheid tot uitbreiding, tot 33 kolommen voor deze chip (daarover meer in de stap "modulaire concepten").

De besturingshardware bouwen

Voor deze instructable heb ik dit circuit net breadboarded. Voor een meer permanente oplossing wil je ofwel je eigen printplaat etsen of een prototyping board gebruiken.1. Roeirijder

  • Plaats de mic2981 (of UDN2981) in het breadboard
  • Sluit pin 9 aan op spanning (dit is verwarrend in het schema)
  • Sluit pin 10 aan op aarde (dit is verwarrend in het schema)
  • plaats 3k3-weerstanden die aansluiten op pinnen 1-8
  • Verbind van poort D van de ATmega8 (PD0-PD8) met de 8 weerstanden
  • Sluit de 8 rijen besturingsdraden van de LED-matrix aan op pinnen 11-18 (merk op dat ik de laagste rij LED's heb aangesloten op pin 18 en de hoogste rij op pin 11).

2. Kolomstuurprogramma

  • Plaats de hef4794 in het breadboard
  • Sluit pin 16 aan op spanning
  • Verbind Pin 8 met aarde
  • Sluit 220 ohm weerstanden aan op pinnen 4-7 en 11-14.
  • Sluit de 8-koloms besturingsdraden van de LED-matrix aan op de 8 weerstanden die u zojuist hebt aangesloten.
  • Sluit Pin1 (Latch) aan op PC0 van de ATmega8
  • Sluit Pin2 (Data) aan op PC1 van de ATmega8
  • Sluit Pin3 (Clock) aan op PC2 van de ATmega8
  • Sluit Pin15 (Enable Output) aan op PC3 van de ATmega8

3. Klokkristal

Sluit een 12MHz-kristal aan en laad condensatoren zoals weergegeven in het schema

4. ISP

Sluit de programmeerkop aan zoals weergegeven in het schema

5. Filtercondensator en optrekweerstand

  • Het is het beste om de aan de ATmega8 geleverde spanning te filteren. Gebruik een 0.1uf condensator tussen Pin 7 & 8 van de ATmega8
  • De reset-pin mag niet zwevend blijven, omdat dit willekeurige resets kan veroorzaken. Gebruik een weerstand om het op spanning aan te sluiten, alles van 1k zou goed moeten zijn. Ik heb een weerstand van 10k gebruikt in het schema.

6. Zorg ervoor dat u +5v gereguleerde stroom gebruikt. Het is aan jou om de regelaar te ontwerpen.

Stap 4: Software

De truc

Ja, zoals alles, is er een truc. De truc is dat er nooit meer dan 8 LED's tegelijk branden. Om dit goed te laten werken, is een beetje handig programmeren nodig. Het concept dat ik heb gekozen is het gebruik van een timer-interrupt. Hier is hoe de weergave-interrupt werkt in gewoon Engels:

  • De timer telt tot een bepaald punt, wanneer de onderbrekingsserviceroutine is bereikt.
  • Deze routine bepaalt welke rij de volgende is die moet worden weergegeven.
  • De informatie voor de volgende rij wordt opgezocht vanuit een buffer en verschoven naar de kolomdriver (deze informatie is niet "vergrendeld" en wordt dus nog niet weergegeven).
  • De row driver is uitgeschakeld, er branden momenteel geen LED's.
  • De kolomdriver is "vergrendeld" om in de informatie die we in twee stappen geleden hebben verschoven de huidige informatie weer te geven.
  • Het rijstuurprogramma levert vervolgens stroom aan de nieuwe rij die we weergeven.
  • De onderbrekingsserviceroutine eindigt en het programma keert terug naar de normale stroom tot de volgende onderbreking.

Dit gebeurt heel erg snel. De interrupt wordt elke 1 mSec gegooid. Dit betekent dat we het hele scherm ongeveer eens per 8 mSec verversen. Dit betekent een weergavesnelheid van ongeveer 125 Hz. Er is enige bezorgdheid over de helderheid, omdat we de LED's in wezen met een 1/8 duty cycle laten werken (ze zijn 7/8 van de tijd uit). In mijn geval krijg ik een voldoende helder scherm zonder zichtbaar knipperen. Het volledige LED-display is in een array in kaart gebracht. Tussen interrupts kan de array worden gewijzigd (houd rekening met de atomiciteit) en zal tijdens de volgende interrupt op het display verschijnen. van dit instructable. Ik heb de broncode (geschreven in C en gecompileerd met AVR-GCC) en het hex-bestand toegevoegd om direct te programmeren. Ik heb alle code becommentarieerd, dus je zou dit moeten kunnen gebruiken om eventuele vragen op te lossen over hoe je gegevens in het ploegenregister kunt krijgen en hoe de rijvernieuwing werkt. Houd er rekening mee dat ik een lettertypebestand gebruik dat bij de ks0108 universele C-bibliotheek. Die bibliotheek is hier te vinden:

Shift Registers: Hoe?

Ik heb besloten iets toe te voegen over het programmeren met schuifregisters. Ik hoop dat dit alles opheldert voor degenen die er nog niet eerder mee hebben gewerkt. Wat ze doen Schuifregisters nemen een signaal van één draad en geven die informatie door aan veel verschillende pinnen. In dit geval is er één datadraad die de gegevens opneemt en 8 pinnen die worden bestuurd afhankelijk van welke gegevens zijn ontvangen. Om het nog beter te maken, is er voor elk schuifregister een uitgang die kan worden aangesloten op de ingangspen van een ander schuifregister. Dit wordt cascadering genoemd en maakt het uitbreidingspotentieel bijna onbeperkt. De Control PinsShift registers hebben 4 controlepinnen:

  • Latch - Deze pin vertelt het schuifregister wanneer het tijd is om over te schakelen naar nieuw ingevoerde gegevens
  • Gegevens - De enen en nullen vertellen het schuifregister welke pinnen moeten worden geactiveerd op deze pin.
  • Klok - Dit is een puls die door de microcontroller wordt verzonden en die het schuifregister vertelt om een gegevensmeting uit te voeren en naar de volgende stap in het communicatieproces te gaan
  • Uitgang inschakelen - Dit is een aan/uit-schakelaar, Hoog=Aan, Laag=Uit

Waardoor het uw bieden doet: Hier is een spoedcursus in de werking van de bovenstaande bedieningspinnen: Stap 1: Zet vergrendeling, gegevens en klok laag

Door de Latch laag in te stellen, vertelt het schuifregister dat we er naartoe gaan schrijven

Stap 2: Stel de datapin in op de logische waarde die u naar het Shift Register wilt sturen

Alle andere waarden die momenteel in het schuifregister staan, worden 1 plaats verschoven, waardoor er ruimte wordt gemaakt voor de huidige logische waarde van de datapin

Stap 4: Zet de klokpen op Laag en herhaal stap 2 en 3 totdat alle gegevens naar het schuifregister zijn verzonden.

De klokpen moet laag worden ingesteld voordat naar de volgende gegevenswaarde wordt overgeschakeld. Door deze pin tussen hoog en laag te schakelen, wordt de "klokpuls" gecreëerd die het schuifregister moet weten wanneer het naar de volgende stap in het proces moet gaan

Stap 5: Zet de vergrendeling hoog

Dit vertelt het schuifregister om alle gegevens die zijn verschoven te nemen en te gebruiken om de uitgangspinnen te activeren. Dit betekent dat u geen gegevens zult zien terwijl deze binnenkomen; er zal geen verandering in de uitgangspinnen plaatsvinden totdat de vergrendeling hoog is ingesteld

Stap 6: Stel Uitgang inschakelen hoog in

  • Er zal geen pin-output zijn totdat de Enable Output is ingesteld op hoog, wat er ook gebeurt met de andere drie controle-pinnen.
  • Deze pin kan altijd hoog worden gelaten als je dat wilt

CascadingEr zijn twee pinnen die u kunt gebruiken voor cascadering, Os en Os1. Os is voor snel stijgende klokken en Os1 is voor langzaam stijgende klokken. Haak deze pin aan de datapin van het volgende schuifregister en de overloop van deze chip wordt in de volgende ingevoerd. Einde update

Het display adresseren

In het voorbeeldprogramma heb ik een array van 8 bytes gemaakt met de naam row_buffer. Elke byte komt overeen met één rij van het 8x8-display, waarbij rij 0 de onderste is en rij 7 de bovenste. Het minst significante bit van elke rij staat aan de rechterkant, het meest significante bit aan de linkerkant. Het wijzigen van het display is net zo eenvoudig als het schrijven van een nieuwe waarde naar die data-array, de interruptserviceroutine zorgt voor het verversen van het display.

Programmeren

De programmering wordt hier niet in detail besproken. Ik zou u willen waarschuwen om geen DAPA-programmeerkabel te gebruiken, omdat ik denk dat u de chip niet kunt programmeren als deze eenmaal op 12 MHz draait. Alle andere standaardprogrammeurs zouden moeten werken (STK500, MKII, Dragon, parallelle/seriële programmeurs, enz.). Zekeringen: Zorg ervoor dat u de zekeringen programmeert om de 12MHz-kristalzekering te gebruiken: 0xC9lfuse: 0xEF

In actie

Nadat u de chip hebt geprogrammeerd, moet op het display een "Hallo wereld!" verschijnen. Hier is een video van de LED-matrix in acties. De videokwaliteit is vrij laag omdat ik dit heb gemaakt met de videofunctie van mijn digitale camera en niet met een goede video of webcam.

Stap 5: Modulaire concepten

Modulaire concepten
Modulaire concepten
Modulaire concepten
Modulaire concepten
Modulaire concepten
Modulaire concepten
Modulaire concepten
Modulaire concepten

Dit project is schaalbaar. De enige echte beperkende factor is hoeveel stroom uw voeding kan leveren. (De andere realiteit is hoeveel LED's en registerverschuivers je beschikbaar hebt).

Wiskunde

Ik stuur de LED's aan op ongeveer 15mA (5V-1.8vDrop/220ohms=14.5mA). Dit betekent dat ik tot 33 kolommen kan besturen met de mic2981 driver (500mA/15mA=33,3). Gedeeld door 8 kunnen we zien dat dit ons in staat stelt om 4 schuifregisters aan elkaar te rijgen. Houd er ook rekening mee dat u niet alle 32 kolommen van links naar rechts hoeft uit te strekken. U kunt in plaats daarvan een 16x16-array maken die op dezelfde manier is bedraad als een 8x32-array. Dit zou worden verholpen door in 4 bytes te verschuiven …. de eerste twee zouden helemaal naar de leds voor de 9e rij verschuiven, de tweede twee bytes zouden naar de eerste rij verschuiven. Beide rijen zouden afkomstig zijn van één pin op de rij-driver.

Trapsgewijze schuifregisters

De gebruikte schuifregisters zijn trapsgewijze schuifregisters. Dit betekent dat wanneer u gegevens inschakelt, de overloop op de Os-pin verschijnt. Het wordt erg handig omdat een set schuifregisters met elkaar kan worden verbonden, Os-pin naar Data-pin, waarbij 8 kolommen worden toegevoegd met elke nieuwe chip. Alle schuifregisters zullen verbinding maken met dezelfde Latch-, Clock- en Enable Output-pinnen op de microcontroller. Het "cascadering"-effect wordt gecreëerd wanneer de Os van het eerste schuifregister is verbonden met de data-pin van de tweede. De programmering moet worden gewijzigd om het toegenomen aantal kolommen weer te geven. Zowel de buffer die de informatie opslaat als de functie die de informatie voor elke kolom verschuift, moeten worden bijgewerkt om het werkelijke aantal kolommen weer te geven. Hieronder wordt als voorbeeld een schema hiervan gegeven.

Meerdere roeiers

De rijdriver (mic2981) kan voldoende stroom leveren om 32 kolommen aan te sturen. Wat als u meer dan 32 kolommen wilt? Het zou mogelijk moeten zijn om meerdere rijstuurprogramma's te gebruiken zonder meer microcontroller-pinnen te gebruiken. We hebben de rijstuurprogramma's nodig om voldoende stroom te leveren om de LED's te verlichten. Als u meer kolommen gebruikt dan er in één keer kunnen worden verlicht, kunnen extra rijstuurprogramma's de benodigde stroom leveren. Dezelfde invoerpinnen van de microcontroller worden gebruikt, dus het is niet nodig om het scannen van de rijen te wijzigen. Met andere woorden, elke bestuurder bestuurt de rijen voor een 8x32-blok. Hoewel 64 kolommen dezelfde FYSIEKE rijplaatsing kunnen hebben, verdelen we de rijbussen in tweeën, waarbij we één driver gebruiken voor de 8 rijen van de eerste 32 kolommen, en een tweede driver voor de 8 rijen van de tweede 32 kolommen, enzovoort. Een schema hiervan wordt hieronder als voorbeeld gegeven. Mogelijke misstappen:1. Gebruik niet meerdere rijstuurprogramma's met hetzelfde aantal kolommen. Dit zou betekenen dat elke schuifregisterpen meer dan één LED tegelijk zou aansturen.2. U moet een set van 8 weerstanden (3k3) hebben voor elke rijdriver, één set voor meerdere rijdrivers zal niet werken omdat deze niet de benodigde stroom levert om de poorten te schakelen.

Bijvoorbeeld

Ik besloot uit te breiden op de matrix die ik eerder heb gebouwd. Ik heb nog 7 rijen toegevoegd voor een totaal van 15, want dat is alles wat ik op dit protoboard kan passen. Ik ben ook net te weten gekomen over een wedstrijd die Instructables doet, genaamd "Let it Glow". Hier is een video van mijn kijk daarop. Nogmaals, de digitale camera die ik heb gebruikt om de video te maken, doet het geen recht. Dit ziet er geweldig uit voor het menselijk oog, vooral waar alle LED's knipperen, maar ziet er lang niet zo goed uit in de video. Veel plezier: de broncode voor dit grotere scherm is hieronder opgenomen.

Stap 6: Conclusie

Mogelijke toevoegingen

I2CI heeft de Two Wire Interface (I2C) pinnen ongebruikt gelaten in dit ontwerp. Er zijn verschillende interessante prospects die deze twee pinnen kunnen gebruiken. Door toevoeging van een I2C EEPROM kunnen veel grotere berichten worden opgeslagen. Er is ook het vooruitzicht van het ontwerpen van programmering om de mega8 in een I2C-compatibele display-driver te veranderen. Dit zou de mogelijkheid openen om een USB-apparaat te hebben om gegevens op uw LED-array weer te geven door deze over de I2C-bus te leiden. Invoer Er zijn nog veel pinnen over die kunnen worden gebruikt voor knoppen of een IR-ontvanger. Hierdoor zouden berichten via een menusysteem kunnen worden geprogrammeerd. Display Voor deze instructable heb ik slechts een paar weergavefuncties geïmplementeerd. De een schrijft gewoon karakters naar het display, de ander scrolt karakters op het display. Het belangrijkste om te onthouden is dat wat u in de lichten ziet, wordt weergegeven in een gegevensarray. Als je slimme manieren bedenkt om de gegevensarray te veranderen, zullen de lichten op dezelfde manier veranderen. Enkele verleidelijke mogelijkheden zijn het maken van een grafische meter uit de kolommen. Dit zou kunnen worden gebruikt als een signaalanalysator met een stereo. Scrollen kan van boven naar beneden of van onder naar boven worden geïmplementeerd, zelfs van links naar rechts. Veel geluk veel plezier!

Stap 7: Follow-up

Opvolgen
Opvolgen
Opvolgen
Opvolgen
Opvolgen
Opvolgen
Opvolgen
Opvolgen

Nadat ik het controllercircuit maandenlang in het breadboard had laten zitten, heb ik eindelijk een paar printplaten ontworpen en geëtst om dit prototype samen te stellen. Alles is goed verlopen, ik denk niet dat ik iets anders had gedaan.

Functies van de printplaat

  • Shift-registers bevinden zich op afzonderlijke borden die aan elkaar kunnen worden gekoppeld om de grootte van het display te vergroten.
  • Het controllerbord heeft zijn eigen stroomregelaar, dus deze kan worden bediend door elke stroombron die 7v-30v levert (9v batterij of 12v bankvoeding, beide werken prima voor mij).
  • Inclusief 6-pins ISP-header, zodat de microcontroller opnieuw kan worden geprogrammeerd zonder deze van het bord te verwijderen.
  • 4-pins header beschikbaar voor toekomstig gebruik van de I2C-bus. Dit kan worden gebruikt voor een eeprom om meer berichten op te slaan of zelfs om dit een slave-apparaat te maken dat wordt bestuurd door een andere microcontroller (RSS-ticker iemand?)
  • In het ontwerp zijn 3 momentane drukknoppen opgenomen. Ik kan de firmware in de toekomst aanpassen om het gebruik van deze knoppen op te nemen.

samenkomst

Geef me plexiglas, hoekbeugels, 6x32 machineschroeven, moeren en ringen, evenals een tapset om gaten in te schroeven en ik kan alles maken.

Tweede prijs in de Let It Glow!

Aanbevolen: