3 Arduino Pins to 24+ Output Pins (6 / 7 steg)
Steg 6: Huvudkoden
Anslut upp kretsen som visas. Sedan ladda upp den viss kod som kan användas till att styra enskilda stift av register. Denna kod är särskilt utformade för att styra reläer. De kan också användas för att göra en stor LED chaser behöver du bara ändra koden grundad på tillämpningen.
För det första kommer att jag förklara de grundläggande linjer som måste ändras beroende på antalet SKIFT register. Kodraden som har
Hur många av skiftet register - ändra detta
#define number_of_74hc595s 1
Som namnet antyder du bör ge antalet SKIFT registrera moduler du använder. Programmet är begränsat till max 40 + SKIFT register.
setRegisterPin (2, hög).
setRegisterPin (3, hög).
setRegisterPin (4, låg).
setRegisterPin 5, hög,
setRegisterPin (7, hög).
writeRegisters();
Denna kod är den primära funktionen där du kan kontrollera stiften SKIFT register. Raden "writeRegisters()" är den funktion som ska anropas inorder att skicka data till SKIFT Register.Suppose måste du kontrollera den 24 pin av tredje skiftet registrera modulen sedan koden kommer att
setRegisterPin (24, hög).
Anta att du måste återställa stiften så att alla av dem blir låg då funktionen kommer att
clearRegisters();
Slutligen den övergripande kod för att kontrollera stiften ges nedan och jag har också bifogat koden för programmet. Så i den här koden följande stiften sätts högt och kan återställas med hjälp av registreringsfunktionen rensa. Jag använder 3 Skift register moduler så du måste ändra koden om du använder 2 SKIFT register. Om allt går väl produktionen kommer att vara som visas i videon ovan. Använd denna grundläggande idé kan du designa cool microcontroller projekt.
KOD:
int SER_Pin = 11; stift 14 på 75HC595
int RCLK_Pin = 8; stift 12 på 75HC595
int SRCLK_Pin = 12; stift 11 på 75HC595
Hur många av skiftet register - ändra detta
#define number_of_74hc595s 3
rör inte
#define numOfRegisterPins number_of_74hc595s * 8
Boolean registrerar [numOfRegisterPins];
void setup() {
pinMode (SER_Pin, OUTPUT);
pinMode (RCLK_Pin, OUTPUT);
pinMode (SRCLK_Pin, OUTPUT);
Återställ alla register stift
clearRegisters();
writeRegisters();
}
alla register stift inställd på låg
void clearRegisters() {
för (int jag = numOfRegisterPins - 1; i > = 0; i--) {
register [i] = låg;
}
writeRegisters();
}
Ange och Visa register
Bara ringa när alla värden är hur du vill ha (långsam annars)
void writeRegisters() {
digitalWrite (RCLK_Pin, låg);
för (int jag = numOfRegisterPins - 1; i > = 0; i--) {
digitalWrite (SRCLK_Pin, låg);
int val = register [i];
digitalWrite (SER_Pin, val);
digitalWrite (SRCLK_Pin, hög);
}
digitalWrite (RCLK_Pin, hög);
}
ställa in en individuell pin högt eller lågt
void setRegisterPin (heltal index, int värde) {
register [index] = värde;
}
void loop() {
setRegisterPin (0, låg);
setRegisterPin (1, hög);
setRegisterPin (2, låg).
setRegisterPin (3, hög).
setRegisterPin (4, låg).
setRegisterPin 5, hög,
setRegisterPin (6, låg).
setRegisterPin (7, hög).
setRegisterPin 8, låg.
setRegisterPin (9, hög).
setRegisterPin (10, låg).
setRegisterPin (11, hög).
setRegisterPin 12, låg.
setRegisterPin 13, hög.
setRegisterPin (14, låg).
setRegisterPin (15, hög).
setRegisterPin (16, låg).
setRegisterPin (17, hög),
setRegisterPin (18, låg).
setRegisterPin (19, hög).
setRegisterPin (20, låg);
setRegisterPin (21, hög).
setRegisterPin (22, låg).
setRegisterPin (23, hög).
writeRegisters();
Delay(500);
clearRegisters();
setRegisterPin (0, hög);
setRegisterPin (1, låg);
setRegisterPin (2, hög).
setRegisterPin (3, låg).
setRegisterPin (4, hög).
setRegisterPin (5, låg).
setRegisterPin (6, hög).
setRegisterPin (7, låg).
setRegisterPin 8, hög.
setRegisterPin (9, låg).
setRegisterPin 10, hög.
setRegisterPin (11, låg).
setRegisterPin 12, hög.
setRegisterPin 13, låg.
setRegisterPin (14, hög).
setRegisterPin (15, låg).
setRegisterPin (16, hög).
setRegisterPin (17, låg);
setRegisterPin (18, hög).
setRegisterPin (19, låg).
setRegisterPin (20, hög);
setRegisterPin (21, låg).
setRegisterPin (22, hög).
setRegisterPin (23, låg).
writeRegisters();
Delay(500);
clearRegisters();
}