Mellanliggande Arduino: Ingångar och utgångar (6 / 9 steg)

Steg 6: Ledde matrisen Multiplexing



Nu tråd upp alla marken stiften LED matris till stift 6-13 på Arduino. Här är pin-anslutningar:

rad 1 - Arduino D6 (digital stift 6)

rad 2 - Arduino D7

rad 3 - Arduino D8

rad 4 - Arduino D9

rad 5 - Arduino D10

rad 6 - Arduino D11

rad 7 - Arduino D12

rad 8 - Arduino D13

Och köra följande kod:

void setup() {
stift 6-13 som utgångar och initiera högt (så alla lampor släckta att starta)
för (int pinNum = 6; pinNum < 14; pinNum ++) {
pinMode (pinNum, produktionen);
digitalWrite (pinNum, hög);
}
ställa in stift A0-A6 som utgångar
för (int pinNum = A0; pinNum < A6; pinNum ++) {
pinMode (pinNum, produktionen);
}
ställa in stift 2 och 3 som utgångar
för (int pinNum = 2; pinNum < 4; pinNum ++) {
pinMode (pinNum, produktionen);
}
}

void loop() {
för (int pinNum = 6; pinNum < 14; pinNum ++) {

Ställ in kolumner
digitalWrite (A0, låg);
digitalWrite (A1, hög);
digitalWrite (A2, låg);
digitalWrite (A3, hög);
digitalWrite (A4, låg);
digitalWrite (A5, hög);
digitalWrite (2, låg).
digitalWrite (3, hög).

puls rad låg till light lysdioder
digitalWrite (pinNum, låg);
Delay(500);
digitalWrite (pinNum, hög);
}
}

Du bör se samma mönster av lysdioder lyser upp en rad i taget (andra bilden) som varje rad är jordad en efter en. Nu försöker du minska förseningen, mönstret kommer att flytta över raderna snabbare och snabbare. Ta nu bort fördröjningen helt, bör du se alla rader tände på (något som verkar vara) samma tid (tredje bilden). Här är en video demonstration (denna gång, med olika mönster för att lysa upp varje rad, jag ska förklara mer om att snart):

Detta kallas multiplexing. Även om det ser ut som vi tända upp många rader av lysdioder på samma gång, vet vi att vi faktiskt belysning varje rad en efter en, men vi gör det så snabbt som vi har våra ögon luras tänkande det allt händer samtidigt. Multiplexing är användbart helst vill styra en hel del saker med relativt få stift. Istället för kabeldragning upp varje LED individuellt, kan vi multiplex dem och skära ner på kostnader och krångel betydligt.

Prova nu att skicka olika mönster till olika rader:

void setup() {
stift 6-13 som utgångar och initiera högt
för (int pinNum = 6; pinNum < 14; pinNum ++) {
pinMode (pinNum, produktionen);
digitalWrite (pinNum, hög);
}
ställa in stift A0-A6 som utgångar
för (int pinNum = A0; pinNum < A6; pinNum ++) {
pinMode (pinNum, produktionen);
}
ställa in stift 2 och 3 som utgångar
för (int pinNum = 2; pinNum < 4; pinNum ++) {
pinMode (pinNum, produktionen);
}
}

void loop() {
för (int pinNum = 6; pinNum < 14; pinNum ++) {

om (pinNum%2==1){//is pinNum är udda
en godtycklig uppsättning stater
digitalWrite (A0, hög);
digitalWrite (A1, låg);
digitalWrite (A2, hög);
digitalWrite (A3, låg);
digitalWrite (A4, hög);
digitalWrite (A5, låg);
digitalWrite (2, hög).
digitalWrite (3, låg).
} annat {
en godtycklig uppsättning olika stater
digitalWrite (A0, låg);
digitalWrite (A1, hög);
digitalWrite (A2, låg);
digitalWrite (A3, hög);
digitalWrite (A4, låg);
digitalWrite (A5, hög);
digitalWrite (2, låg).
digitalWrite (3, hög).
}

digitalWrite (pinNum, låg);
Delay(500);
digitalWrite (pinNum, hög);
}
}

Kör denna kod långsamt först, ser vi att en rad skickas ett mönster, och nästa rad skickas olika mönster, detta växlar över alla rader i matrisen. Här är hur jag gör detta:

om (pinNum%2==1){//is pinNum är udda

% kallas "modulo", det är som division, men istället för att återvända pinNum/2, den returnerar resten av insatsen. Så om pinNum = 6, pinNum %2 = 0, eftersom 2 går in i 6 jämnt. Om pinNum = 7, då pinNum %2 = 1. Detta ger mig ett enkelt sätt att räkna ut vilka rader som är jämna nummer och som är udda. Med denna information kan skicka jag olika mönster för alternerande rader.

Nu tar du bort förseningen från koden. Du bör se ett schackbrädesmönster dyka upp på LED matrix (fjärde bilden). Genom att skicka ett annat mönster till varje rad och cykling genom raderna individuellt, kan du styra exakt vilka lysdioder är på och av. Försök med följande:

void setup() {
stift 6-13 som utgångar och initiera högt
för (int pinNum = 6; pinNum < 14; pinNum ++) {
pinMode (pinNum, produktionen);
digitalWrite (pinNum, hög);
}
ställa in stift A0-A6 som utgångar
för (int pinNum = A0; pinNum < A6; pinNum ++) {
pinMode (pinNum, produktionen);
}
ställa in stift 2 och 3 som utgångar
för (int pinNum = 2; pinNum < 4; pinNum ++) {
pinMode (pinNum, produktionen);
}
}

void loop() {
för (int pinNum = 6; pinNum < 14; pinNum ++) {

om (pinNum == 8) {
digitalWrite (A5, hög);
} annat {
digitalWrite (A5, låg);
}

digitalWrite (pinNum, låg);
digitalWrite (pinNum, hög);
}
}

Denna kod kommer bara in A5 hög för raden ansluten till stift 8. Detta lyser upp endast ett LED i matrisen (femte bild).

Se Steg
Relaterade Ämnen

Hur man styr en bearbetning skiss med två Arduino ingångar

Denna tutorial ska show dig hur man bygger en grundläggande Arduino krets som kan styra en rolig färgade bollen skiss bearbetning.Du behöver:1 x Arduino ombord (jag använder en Uno)1 x skärbräda1 x foto-motstånd1 x 10 k Ohm motstånd (brun-svart-Orang...

Extra ingångar för Arduino med ett tangentbord

Arduino är kanske häftigaste på jorden. Det finns många typer, Uno, Mega, Pro, Pro Mini, etc. etc.Men en sak som ofta kan vara ett problem är att du bara har ett begränsat antal in- och utgångar. Det finns många lösningar för det, allt från multiplex...

Att komma igång med Xilinx Vivado w / Digilent Nexys 4 FPGA 1 - bygga flera ingångar och logik utfärda utegångsförbud

Jag gör detta instructable eftersom det ser ut som det inte är enkelt att komma igång handledning för att lära människor att använda den senaste Xilinx Vivado CAD-verktyget. Så, jag vill använda den enkla flera ingångar gate design att gå igenom Xili...

Verkligen enkel audio switch (2 ingångar, 1 utgång)

detta är ett projekt som utvecklats under våra "Taller de Inventos" (AKA augusti bygga natt), sponsras av Instructables och Jameco, som några av komponenterna för detta instructable.Det är ett fall där en audio ingång och två utgångar, så att du...

Med hjälp av The PCF8575 i2c i/o Expander till Läs ingångar med Arduino

detta Instructable visar dig hur enkelt det är att lägga till extra ingångar till din Arduino. Du kan använda denna teknik för att lägga till hundratals extra ingångar till din Arduino med bara två kablar med hjälp av en fancy kommunikationsprotokoll...

DIY I2C LCD-Display med ingångar

Den typiska parallella LCD används med en Arduino (16 x 2 eller 20 x 4) har 16 stift. Endast 6 I/O pins krävs på Arduino, men tänk om du kunde få det ner till två I/O stift, och har fortfarande de stift som är tillgänglig för andra enheter?I2C gränss...

Dubbla över MakeyMakey - ännu fler ingångar!

Ibland, bara en MakeyMakey är inte nog för ditt projekt!Här är hur du använder två på samma gång.EDIT:(Ignorera detta Instructable om du har problem med drivrutiner, & huvud tillwww.makeymakey.com/REMAPAnvända Chrome, kan du mappa om tangenttryckning...

Joystick Modding för snabbare ingångar Fightsticks/Arcadesticks

Få snabbare ingångar genom att installera en spänning våren och överdimensionerade manöverdonet till din styrspak.De flesta Fightsticks komma med Sanwa Joysticks. I denna tutorial jag lära dig hur man installerar ett överdimensionerade ställdon, och...

Enklaste sättet att få stereoljud från Mono mikrofoner / ingångar (utan programvara)

köpa den: http://amzn.to/ncofO1Episod 1 - www.thoughtgrenades.comEtt snabbt och praktiskt sätt att få stereoljud från Mono mikrofoner / ingångar.Redigeringsprogram används: After Effects & Sony VegasBakgrundsmusik sammanställt av: youtube.com/user/Mr...

Minecraft hemliga ingångar: Hemliga Outrance

MINECRAFT! Lemme sätta min blick tillbaka i--jag slags förlorade efter timmars spel: POm ni minns mitt senaste projekt, Minecart upptäckt ingången, är detta ett bra sätt att få ut. Jag föreslår att göra detta i din hus/dungeon/slott/jätte bok / vad d...

DIY Arduino fjärrkontroll och Lego RC bil!

Uppdatera (8/29/13): tacka er läsare för din entusiasm och typ kommentarer angående detta projekt! Det har varit en enorm resa sedan jag började detta projekt redan i mars, men jag är mycket glad med den resulterande produkten och spänningen som det...

Hur komma åt 5 knappar genom 1 Arduino ingång

med den här metoden jag ska visa dig hur du kan använda 5 (eller ännu mer) ingångar via 1 Arduino stift. Dessa knappar kommer endast läsas korrekt om bara en skjuts när som helst ändå.När vi går igenom det jag ska förklara vad bakgrunden info du behö...

Arduino nybörjare och grundläggande elektronik Kit Primer

lärde jag mig att en av mina systerdöttrar hade ett intresse för programmering. Hon arbetade med robotics på gymnasiet och har en sommar praktikplats där de hade Arduinos. Jag tror att hon kunde låna en Arduino för att experimentera med hemma men var...

Online grafer med ingenting men en Arduino, Ethernet Shield och Sensor

Slutligen har jag beslutat att lägga några av mina befintliga projekt på instructables. Här är anpassade från mitt Super Graphing Data Logger projekt.Vad är Super Graphing Data Logger (SGDL)? Det är en Arduino projekt som integrerar dataloggning och...

Automatiska bevattningssystem med kapacitiv sond och Arduino på billiga (och jag menar det)

Varning: Jag är inte en elektronikingenjör, så jag inte kan ge någon garanti för design (mycket mindre en implementering). Jag vet bara presenteras lösningen fungerade för mig minst 5-6 månader (så jag inte kan ens garantera dess tillförlitlighet öve...

Arduino få upp och flytta

som vi alla tillbringa en ökande mängd tid sitta vid vårt bord är det lätt att bli uppslukad av det vi gör och lös reda på tid.Det sägs att vi ska få upp och flytta från vår plats minst en gång varje timme, men vem vill titta på klockan?Med en mycket...

Arduino OLED termometer och Hygrometer med DHT11 för nybörjare

Hej! Jag ska visa dig hur man gör en Arduino OLED termometer och hygrometer * med DHT11.OLED vi använder idag är 1.3″ tum i storlek, funktioner 128 × 64 pixlar och använder SPI bussen. På nästa steg hittar du mer nyttig information om OLED tech och d...

ARDUINO gränssnitt och konverterare för INPUT/OUTPUT digital/analog

CE schéma réunit toutes les gränssnitt ou convertisseurs que j'utilise avec mes microcontrôleurs Häll piloter mes systèmes (gaine de ventilation chauffante régulation de température, portail automatisé, fyra thermique, monte avgift, station de pompag...

Arduino cykel larm och ljus

detta larm är ett bra sätt att varna dig om någon bråkar med din cykel. Jag hade en cykel stulen ett tag tillbaka och beslutade att det måste finnas ett bättre sätt att hålla min cykel säkert. När jag sökte för cykel larm, var allt jag kunde hitta la...