Multiplexering med Arduino och 74HC595 (13 / 14 steg)
Steg 13: Mer Firmware
I koden nedan satt jag upp array "ledData". Varje nummer i ledData motsvarar en rad med lysdioder i 4 x 4-matris. Det första numret (som standard 1) motsvarar den översta raden, andra numret (som standard 3) till andra raden och så vidare... Värdena i ledData kan variera mellan 0 - 15, där 0 är alla lysdioder avstängd i den raden och 15 är alla lysdioder på i den raden. Du kan få valfri kombination av och på lysdioder genom att hitta dess binära motsvarande och lagra detta värde i arrayen ledData. Standardvärdena i ledData kommer att generera mönstret visas i figur 2. Prova att ändra standardinställningarna och se resultaten, genom att ändra ledData till {5,3,7,15} jag genererade mönstret visas i figur 3.
LED TEST 2 w / 74HC595
Amanda Ghassaei 2012
/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 2 av licensen, eller
* (på ditt alternativ) någon senare version.
*
* Detta program är distribuerat i hopp om att det kommer att vara användbar,
* men utan garantier; utan att ens underförstådd garanti om
* SÄLJBARHET eller lämplighet för ett visst ändamål. Se den
* GNU General Public License för mer detaljer.
*/
denna kod visar värden för ledData över en led 4 x 4-matris
PIN-anslutningar-#define tag kommer att ersätta alla förekomster av "latchPin" i koden med A1 (och så vidare)
#define latchPin A1
#define clockPin A0
#define dataPin A2
looping variabler
byte i.
byte j;
lagring variabel
byte dataToSend;
lagring för ledde staterna, 4 byte
byte ledData [] = {1, 3, 7, 15};
void setup() {
Ange stift
pinMode (latchPin, produktionen);
pinMode (clockPin, produktionen);
pinMode (dataPin, produktionen);
}
void loop() {
för (jag = 0; jag < 4; i ++) {
Skicka data från ledData till varje rad, en i taget
byte dataToSend = (1 << (jag + 4)) | (15 & ~ ledData[i]);
setlatch pin låg så lysdioderna inte ändra samtidigt skickas i bitar
digitalWrite (latchPin, låg);
flytta ut bitarna av dataToSend till 74HC595
shiftOut (dataPin, clockPin, LSBFIRST, dataToSend);
Ställ in spärren pin hög - detta skickar data till utgångar så lamporna tänds
digitalWrite (latchPin, hög);
}
}