Tussenliggende Arduino: Ingangen en uitgangen (6 / 9 stap)

Stap 6: LED Matrix Multiplexing


Nu kabellengte tot de grond alle pennen van de LED-matrix te pinnen 6-13 van de Arduino. Hier zijn de pin aansluitingen:

rij 1 - Arduino D6 (digitale pin 6)

rij 2 - Arduino D7

rij 3 - Arduino D8

rij 4 - Arduino D9

rij 5 - Arduino D10

rij 6 - Arduino D11

rij 7 - Arduino D12

rij 8 - Arduino D13

En voer de volgende code:

 void setup(){ //set pins 6-13 as outputs and initialize HIGH (so all LEDs are off to start) for (int pinNum=6;pinNum<14;pinNum++){ pinMode(pinNum, OUTPUT); digitalWrite(pinNum, HIGH); } //set pins A0-A6 as outputs for (int pinNum=A0;pinNum<A6;pinNum++){ pinMode(pinNum, OUTPUT); } //set pins 2 and 3 as outputs for (int pinNum=2;pinNum<4;pinNum++){ pinMode(pinNum, OUTPUT); } } void loop(){ for (int pinNum=6;pinNum<14;pinNum++){ //set columns digitalWrite(A0, LOW); digitalWrite(A1, HIGH); digitalWrite(A2, LOW); digitalWrite(A3, HIGH); digitalWrite(A4, LOW); digitalWrite(A5, HIGH); digitalWrite(2, LOW); digitalWrite(3, HIGH); //pulse row low to light LEDs digitalWrite(pinNum, LOW); delay(500); digitalWrite(pinNum, HIGH); } } 

Je ziet hetzelfde patroon van LEDs oplichten één rij tegelijk (tweede afbeelding) zoals elke rij geaard één voor één is. Probeer nu de vertraging te verkleinen het patroon zal bewegen langs de rijen sneller en sneller. Nu de vertraging volledig te verwijderen, moet u alle rijen ontstoken bij (wat lijkt te zijn) en tegelijkertijd (derde afbeelding). Hier is een video demonstratie (deze keer, met behulp van verschillende patronen aan het licht van elke rij, ik zal uitleggen meer over dat binnenkort):

Dit heet multiplexing. Ook al lijkt het alsof we bent verlichting van vele rijen voor LEDs op hetzelfde moment, weten we dat we eigenlijk bent verlichting elke rij één voor één, maar we het zo snel dat we onze ogen hebt bedrogen in het denken doen, die het gebeurt allemaal tegelijk. Multiplex is handig elk moment wilt controleren van een heleboel dingen met relatief weinig pinnen. In plaats van bedrading individueel op elke LED, kunnen we hen multiplex, bezuinigen op de kosten en gedoe aanzienlijk.

Nu proberen verschillende patronen te sturen naar verschillende rijen:

 void setup(){ //set pins 6-13 as outputs and initialize HIGH for (int pinNum=6;pinNum<14;pinNum++){ pinMode(pinNum, OUTPUT); digitalWrite(pinNum, HIGH); } //set pins A0-A6 as outputs for (int pinNum=A0;pinNum<A6;pinNum++){ pinMode(pinNum, OUTPUT); } //set pins 2 and 3 as outputs for (int pinNum=2;pinNum<4;pinNum++){ pinMode(pinNum, OUTPUT); } } void loop(){ for (int pinNum=6;pinNum<14;pinNum++){ if (pinNum%2==1){//is pinNum is odd //some arbitrary set of states digitalWrite(A0, HIGH); digitalWrite(A1, LOW); digitalWrite(A2, HIGH); digitalWrite(A3, LOW); digitalWrite(A4, HIGH); digitalWrite(A5, LOW); digitalWrite(2, HIGH); digitalWrite(3, LOW); } else { //some arbitrary set of different states digitalWrite(A0, LOW); digitalWrite(A1, HIGH); digitalWrite(A2, LOW); digitalWrite(A3, HIGH); digitalWrite(A4, LOW); digitalWrite(A5, HIGH); digitalWrite(2, LOW); digitalWrite(3, HIGH); } digitalWrite(pinNum, LOW); delay(500); digitalWrite(pinNum, HIGH); } } 

U kunt deze code langzaam uitvoert op het eerste, zien we dat één rij wordt een patroon, verzonden en de volgende rij wordt verzonden een ander patroon, dit wisselt over alle rijen in de matrix. Hier is hoe doe ik dit:

Als (pinNum%2==1){//is pinNum oneven is

% heet "modulo", it's like divisie, maar in plaats van retourneren pinNum/2, wordt de rest van deze operatie. Dus als pinNum = 6, pinNum %2 = 0, omdat 2 in 6 gelijkmatig gaat. Als pinNum = 7, dan is pinNum %2 = 1. Dit geeft mij een gemakkelijke manier van het uitzoeken welke rijen zijn even getallen en welke oneven. Met behulp van deze informatie, kan ik verschillende patronen aan rijen afwisselend sturen.

Nu probeer het verwijderen van de vertraging van de code. U ziet een dambordpatroon ontstaan op de LED-matrix (vierde beeld). Door een ander patroon sturen naar elke rij en de rijen individueel doorlopen, kunt u precies die LEDs in- en uitschakelen. Probeer het volgende:

 void setup(){ //set pins 6-13 as outputs and initialize HIGH for (int pinNum=6;pinNum<14;pinNum++){ pinMode(pinNum, OUTPUT); digitalWrite(pinNum, HIGH); } //set pins A0-A6 as outputs for (int pinNum=A0;pinNum<A6;pinNum++){ pinMode(pinNum, OUTPUT); } //set pins 2 and 3 as outputs for (int pinNum=2;pinNum<4;pinNum++){ pinMode(pinNum, OUTPUT); } } void loop(){ for (int pinNum=6;pinNum<14;pinNum++){ if (pinNum==8){ digitalWrite(A5, HIGH); } else { digitalWrite(A5, LOW); } digitalWrite(pinNum, LOW); digitalWrite(pinNum, HIGH); } } 

Deze code zal alleen voor de rij aangesloten op pin 8 A5 hoog ingesteld. Dit brandt maar één LED in de matrix (vijfde afbeelding).

Gerelateerde Artikelen

Tussenliggende Arduino: In- en uitgangen

Tussenliggende Arduino: In- en uitgangen

Stap 2: Arduino knop DebouncingVoortzetting van de knop debouncing dat ik in mijn laatste Instructable geïntroduceerd, kunnen we millis() gebruiken om debounce knoppen zonder gebruik te maken van delay(): //Button Press Detection - debounce with mill
Arduino Powered Home

Arduino Powered Home

Ik heb een paar updates in dit instructable sinds Aug 2014 ***Heb ik besloten om deze informatie te delen, zodat het anderen die hebben moeite helpen misschien om soortgelijke dingen met hun Arduino doen. Ik heb pas onlangs gekregen die betrokken zij
Hoe de code Arduinos

Hoe de code Arduinos

Dus ik was op zoek via de help-sectie van de Gemeenschap, toen ik zag sommige mensen waar problemen met de codering Arduinos, dus ik ben waardoor dit om te helpen.Voor dit Instructable moet u:ComputerArduino IDESommige delen van dit kunnen afwijken v
DIY Arduino Remote Control en Lego RC voertuig!

DIY Arduino Remote Control en Lego RC voertuig!

UPDATE (8/29/13): dank u lezers voor uw enthousiasme en soort opmerkingen met betrekking tot dit project! Het is een geweldige reis sinds ik begon dit project terug in maart, maar ik ben erg blij met het resulterende product en de opwinding waarmee h
Multiplexing met Arduino en de 74HC595

Multiplexing met Arduino en de 74HC595

de 74HC595 is een makkelijk en goedkoop (op ongeveer 60 cent per stuk) manier om te verhogen van het aantal digitale uitgang pinnen op je Arduino.  In deze tutorial zal ik u tonen hoe te rijden van maximaal 16 LEDs met een 74HC595 met behulp van een
Een beginnersgids voor Arduino

Een beginnersgids voor Arduino

Na enkele jaren van experimenteren met Arduino, besloten heb ik dat het tijd is om te delen van de kennis die ik heb verworven. Dus ik hier het gaat, een gids voor Arduino, met de blote basisprincipes voor beginners en sommige meer geavanceerde uitle
De klok van de wereld in het Duits met behulp van Arduino

De klok van de wereld in het Duits met behulp van Arduino

Terwijl in Duitsland zag vorig jaar ik een wereld klok in een gelijkaardig aan dit één in een winkel die is geprijsd op 900€ winkel. Ik lees verschillende instructables online over het maken van een klok van de wereld, dus heb ik besloten om het een
Arduino animatronics-Maak uw geweldige kostuums meer awesome!

Arduino animatronics-Maak uw geweldige kostuums meer awesome!

Hier is hoe te het licht, geluid en actie toevoegen aan uw favoriete Halloween-project met behulp van de opensource Arduino microcontroller. Arduino is gemakkelijk te leren te gebruiken en het opent een hele nieuwe wereld voor kostuum bouwers en sche
Arduino RC auto met lange afstand en aangepaste zender.

Arduino RC auto met lange afstand en aangepaste zender.

Hallo! Dit is mijn eerste instructable.Daarin zal ik u tonen hoe te maken van een RC auto met Arduino en de draadloze nrf24l01 +-module, of hoe om te upgraden een goedkope 27 MHz RC auto.De oude RC auto, die van I het chassis, en de heli Controller n
Kloppend hart Candy kom met Arduino

Kloppend hart Candy kom met Arduino

Ik wilde een snoep kom voor trick or treat die eruit zag als een spooky hart sloeg onder de snoep. Ik hoop dat de jongere kinderen vindt het spooky en niet te eng. Ik weet zeker dat de tieners met geen kostuum en een kussensloop zal niet onder de ind
De Idiot's Guide to programmering van AVR op de goedkope (met de Arduino IDE!)

De Idiot's Guide to programmering van AVR op de goedkope (met de Arduino IDE!)

Microcontrollers zijn, zonder twijfel, het verbazen van kleine dingen. Ze zijn veelzijdig, krachtig en zeer klein. De laatste karaktertrek is helaas ook gedeeld door zowel mijn portemonnee en mijn programmering vaardigheden. Mijn begrip van C is slec
Personal Assistant met Telegram & Arduino.

Personal Assistant met Telegram & Arduino.

Hallo mensen!Een paar maanden geleden hoorde ik over een project dat een instant messenger bot gebruikt voor het maken van een systeem dat zou automatisch verwerken en ordenen van pizza's verzendingen door de costumieren via Whats app. Ik was als...
DIY I2C LCD Display met ingangen

DIY I2C LCD Display met ingangen

De typische parallelle LCD gebruikt met een Arduino (16 x 2 of 20 x 4) heeft 16 pinnen. Slechts 6 I/O pinnen zijn vereist op de Arduino, maar wat als je kon krijgen dat tot twee I/O pinnen, en nog steeds hebben die pins beschikbaar voor andere appara
Analoge lijn volgeling upgraden naar Arduino met Attiny85

Analoge lijn volgeling upgraden naar Arduino met Attiny85

SamenvattingIn dit Instructable zullen wij tonen u hoe om te upgraden een goedkope analog lijn volgeling in een intelligente Arduino lijn volgeling door de LM393 comparator IC te vervangen door een intelligente Attiny85 en Arduino sketch.IntroductieL