Stap 6: De belangrijkste Code
Sluit van het circuit zoals afgebeeld. Vervolgens upload de gegeven code die kan worden gebruikt om individuele pinnen van de registers. Deze code is speciaal ontworpen om te controleren van de Relais. Ze kunnen ook worden gebruikt om een grote LED chaser, die je alleen hoeft te wijzigen van de code op basis van de toepassing.
Ten eerste zal ik het uitleggen van de fundamentele regels die moeten worden gewijzigd, afhankelijk van het aantal Shift registreert. De coderegel die heeft
//How many of the shift registers - change this #define number_of_74hc595s 1
Zoals de naam al dat u dient het aantal shift register-modules die u gebruikt suggereert. Het programma is beperkt tot een maximum van 40 + Shift registreert.
setRegisterPin(2, HIGH); setRegisterPin(3, HIGH); setRegisterPin(4, LOW); setRegisterPin(5, HIGH); setRegisterPin(7, HIGH); writeRegisters();
Deze coderegel is de primaire functie die u gebruiken kunt om te controleren de pinnen van de shift register. De regel "writeRegisters()" is de functie die moet worden aangeroepen inorder om te sturen de gegevens naar de Shift-Register.Suppose die u wilt beheren de 24e pin van de derde werktijd registreren module vervolgens de code zal worden
setRegisterPin(24, HIGH);
Stel dat u wilt instellen van de pinnen, zodat ze allemaal laag worden en vervolgens de functie zal worden
clearRegisters();
Tot slot de algemene code voor het beheersen van de pennen is hieronder gegeven en ik heb ook de code voor het programma bijgevoegd. Dus in deze code de volgende pinnen zijn hoog ingesteld en kunnen opnieuw worden ingesteld met behulp van de functie duidelijk register. Ik gebruik 3 shift register modules, dus je hebt om te veranderen van de code als u 2 shift registers. Als alle gaat ook de output als zijn zal weergegeven in de video hierboven. Gebruik dit basisidee dat kunt u cool microcontroller projecten ontwerpen.
CODE:
int SER_Pin = 11; 14 pin op de 75HC595 int RCLK_Pin = 8; pin 12 op de 75HC595 int SRCLK_Pin = 12; PIN 11 op de 75HC595 //How veel van de registers van de shift - wijzigen deze #define number_of_74hc595s 3 //do niet aanraken #define numOfRegisterPins number_of_74hc595s * 8 Booleaanse registers [numOfRegisterPins]; void setup {pinMode (SER_Pin, OUTPUT) pinMode (RCLK_Pin, OUTPUT); pinMode (SRCLK_Pin, OUTPUT); //reset alle pinnen registreren int SER_Pin = 11; //pin 14 on the 75HC595 int RCLK_Pin = 8; //pin 12 on the 75HC595 int SRCLK_Pin = 12; //pin 11 on the 75HC595 //How many of the shift registers - change this #define number_of_74hc595s 3 //do not touch #define numOfRegisterPins number_of_74hc595s * 8 boolean registers[numOfRegisterPins]; void setup(){ pinMode(SER_Pin, OUTPUT); pinMode(RCLK_Pin, OUTPUT); pinMode(SRCLK_Pin, OUTPUT); //reset all register pins clearRegisters(); writeRegisters(); } //set all register pins to LOW void clearRegisters(){ for(int i = numOfRegisterPins - 1; i >= 0; i--){ registers[i] = LOW; } writeRegisters(); } //Set and display registers //Only call AFTER all values are set how you would like (slow otherwise) void writeRegisters(){ digitalWrite(RCLK_Pin, LOW); for(int i = numOfRegisterPins - 1; i >= 0; i--){ digitalWrite(SRCLK_Pin, LOW); int val = registers[i]; digitalWrite(SER_Pin, val); digitalWrite(SRCLK_Pin, HIGH); } digitalWrite(RCLK_Pin, HIGH); } //set an individual pin HIGH or LOW void setRegisterPin(int index, int value){ registers[index] = value; } void loop(){ setRegisterPin(0, LOW); setRegisterPin(1, HIGH); setRegisterPin(2, LOW); setRegisterPin(3, HIGH); setRegisterPin(4, LOW); setRegisterPin(5, HIGH); setRegisterPin(6, LOW); setRegisterPin(7, HIGH); setRegisterPin(8, LOW); setRegisterPin(9, HIGH); setRegisterPin(10, LOW); setRegisterPin(11, HIGH); setRegisterPin(12, LOW); setRegisterPin(13, HIGH); setRegisterPin(14, LOW); setRegisterPin(15, HIGH); setRegisterPin(16, LOW); setRegisterPin(17, HIGH); setRegisterPin(18, LOW); setRegisterPin(19, HIGH); setRegisterPin(20, LOW); setRegisterPin(21, HIGH); setRegisterPin(22, LOW); setRegisterPin(23, HIGH); writeRegisters(); delay(500); clearRegisters(); setRegisterPin(0, HIGH); setRegisterPin(1, LOW); setRegisterPin(2, HIGH); setRegisterPin(3, LOW); setRegisterPin(4, HIGH); setRegisterPin(5, LOW); setRegisterPin(6, HIGH); setRegisterPin(7, LOW); setRegisterPin(8, HIGH); setRegisterPin(9, LOW); setRegisterPin(10, HIGH); setRegisterPin(11, LOW); setRegisterPin(12, HIGH); setRegisterPin(13, LOW); setRegisterPin(14, HIGH); setRegisterPin(15, LOW); setRegisterPin(16, HIGH); setRegisterPin(17, LOW); setRegisterPin(18, HIGH); setRegisterPin(19, LOW); setRegisterPin(20, HIGH); setRegisterPin(21, LOW); setRegisterPin(22, HIGH); setRegisterPin(23, LOW); writeRegisters(); delay(500); clearRegisters(); } writeRegisters(); } //set alle registreren pinnen te lage nietig clearRegisters() {voor (int ik = numOfRegisterPins - 1; ik > = 0; i--) {registers [i] = laag;} writeRegisters();} //Set en display registers //Only bellen nadat alle waarden zijn ingesteld hoe u zou willen (anders langzame) nietig writeRegisters() {digitalWrite (RCLK_Pin, laag); voor (int ik = numOfRegisterPins - 1; ik > = 0; i--) {digitalWrite (SRCLK_Pin, laag); int val = registers [i]; digitalWrite (SER_Pin val); digitalWrite (SRCLK_Pin, hoge); } digitalWrite (RCLK_Pin, hoge); } //set een persoonlijke pin hoog of laag void setRegisterPin (int index, int value) {registers [index] = waarde;} void loop {setRegisterPin (0, laag); setRegisterPin (1, hoog) setRegisterPin (2, LOW); setRegisterPin (3, hoog); setRegisterPin (4, LOW); setRegisterPin (5, hoog); setRegisterPin (6, LOW); setRegisterPin (7, hoge); setRegisterPin (8, LOW); setRegisterPin (9, hoge); setRegisterPin (10, laag); setRegisterPin (11, hoge); setRegisterPin (12, laag); setRegisterPin (13, hoge); setRegisterPin (14 LAAG); setRegisterPin (15, hoge); setRegisterPin (16, laag); setRegisterPin (17, hoge); setRegisterPin (18, laag); setRegisterPin (19, hoge); setRegisterPin (20, laag); setRegisterPin (21, hoge); setRegisterPin (22, laag); setRegisterPin (23, hoge); writeRegisters(); delay(500); int SER_Pin = 11; //pin 14 on the 75HC595 int RCLK_Pin = 8; //pin 12 on the 75HC595 int SRCLK_Pin = 12; //pin 11 on the 75HC595 //How many of the shift registers - change this #define number_of_74hc595s 3 //do not touch #define numOfRegisterPins number_of_74hc595s * 8 boolean registers[numOfRegisterPins]; void setup(){ Serial.begin(9600); pinMode(SER_Pin, OUTPUT); pinMode(RCLK_Pin, OUTPUT); pinMode(SRCLK_Pin, OUTPUT); //reset all register pins clearRegisters(); writeRegisters(); } //set all register pins to LOW void clearRegisters(){ for(int i = numOfRegisterPins - 1; i >= 0; i--){ registers[i] = LOW; } writeRegisters(); } //Set and display registers //Only call AFTER all values are set how you would like (slow otherwise) void writeRegisters(){ digitalWrite(RCLK_Pin, LOW); for(int i = numOfRegisterPins - 1; i >= 0; i--){ digitalWrite(SRCLK_Pin, LOW); int val = registers[i]; digitalWrite(SER_Pin, val); digitalWrite(SRCLK_Pin, HIGH); } digitalWrite(RCLK_Pin, HIGH); } //set an individual pin HIGH or LOW void setRegisterPin(int index, int value){ registers[index] = value; } void loop(){ for(int i = 0;i < numOfRegisterPins;i++) { setRegisterPin(i , HIGH); Serial.println(i); writeRegisters(); delay(70); clearRegisters(); } clearRegisters(); for(int i = 24; i > 0; i--) { setRegisterPin(i , HIGH); writeRegisters(); Serial.println(i); delay(70); clearRegisters(); } clearRegisters(); } setRegisterPin (0, hoge); setRegisterPin (1, laag); setRegisterPin (2, HIGH); setRegisterPin (3, laag); setRegisterPin (4, HIGH); setRegisterPin (5, laag); setRegisterPin (6, hoge); setRegisterPin (7, laag); setRegisterPin (8, hoge); setRegisterPin (9, laag); setRegisterPin (10, hoge); setRegisterPin (11, laag); setRegisterPin (12, hoge); setRegisterPin (13, laag); setRegisterPin (14, hoge); setRegisterPin (15, laag); setRegisterPin (16, hoge); setRegisterPin (17, laag); setRegisterPin (18, hoge); setRegisterPin (19, laag); setRegisterPin (20, hoge); setRegisterPin (21, laag); setRegisterPin (22, hoge); setRegisterPin (23, laag); writeRegisters(); delay(500);