So langsam gehen einem die Ausgänge beim Programmieren mit dem Arduino? Schieberegister bieten hier Abhilfe und mit der Bibliothek Schieberegister eine einfache Möglichkeit die Ausgänge am Microcotroller zu erweitern. Genau wie beim Arduino Framework mit digitalWrite() lassen sich die Register ansteuern.
Die Bibliothek zur Ansteuerung mehrer Schieberegister steht auf Github zum Download bereit. Die Bibliothek übernimmt das Bitshifting und ermöglicht es mehrere Register des Typs 74HC595 in Reihe zuschalten.
Inhalt
Anschluss des Schieberegisters
Das Schieberegister wird an den Microcontroller angeschlossen. Hierzu finden sich viele Anleitungen im Netz. Nach dem Anschluss kann die Programmierung mit Hilfe der Bibliothek Schieberegister erfolgen.
Anwendung der Bibliothek
Füge den Ordner mit der Bibliothek zunächst unter /Dokumente/Arduino/libraries/ ein. So wird die Bibliothek in der Arduino IDE sichtbar. Nachdem die Bibliothek unter /Dokumente/Arduino/libaries/ eingefügt wurde kann Sie in der Arduino IDE mit #include eingebunden werden.
#include <shiftregister.h>
Außerdem kannst du nun unter Datei – Beispiele ein Blinkbeispiel direkt öffnen. Du findest es allerdings auch am Ende dieser Seite.
Konstruktor
Die Registerreihe wird zunächst definiert. Hier wird als erster Parameter die Anzahl der Register, die in Reihe angeschlossen sind angegeben. Dann folgen die Pins SH_CP, ST_CP und DS an denen das Register angeschlossen ist.
shiftregister register1(1, 8, 9, 10); //initilisiere ein Objekt von shiftregister: register(number of Registers, SH_CP, ST_CP, DS-Pin)
Pins steuern
Über die Methode setPin können Pins mit Pinnummer und gewünschtem Status HIGH oder LOW gesteuert werden. Die Nummerierung der Pins am Schieberegister beginnt bei eins am ersten Pin des Registers.
register1.setPin(1, HIGH); //Pin 1 wird auf HIGH gesetzt
Pinstatus seriell ausgeben
printPinStatus() gibt die Stati aller Register in Reihe über den Seriellen Monitor aus. Dies kann bei der Fehlersuche helfen.
register1.printPinStatus(); //Methode um alle Werte eines Schieberegisterverbunds anzuzeigen
Pinstatus abfragen
Die Methode gibt den Pinstatus eines Pins am Register zurück.
register1.getPinStatus(2);//Ausgabe des Pinstatus an Pin 2
Die Methode getPinStatus() und printPinStatus() gibt lediglich den Status zurück, der durch die Methode setPin() angegeben wurde. Eigene Änderungen an der Ansteuerung am Schieberegister werden nicht ausgegeben.
Dokumentation
Auf Github findet sich zusätzlich eine pdf-Dokumentation zu der Bibliothek mit allen Methoden und entsprechenden Erklärungen.
Blink Beispiel
Eine Led an Pin 1 des Schieberegisters blink im Takt von 250 Millisekunden.
/* Libary: shiftregister, blink
Die Funktionen eines Schieberegisters sollen einfacher genutzt werden können.
- einfaches erstellen von Schieberegistern
- einfaches Abrufen aller Daten
- wenig sichtbarer Programmieraufwand --> weniger Fehler
Source: makeandcreate.4lima.de
GitHub: https://github.com/lk-16/shiftregister
*/
#include <shiftregister.h> //include into libary
shiftregister register1(1, 8, 9, 10); //definieren an object of class shiftregister:
// register(number of Registers, SH_CP, ST_CP, DS-Pin)
void setup()
{
Serial.begin(9600);
}
void loop()
{
register1.setPin(1, HIGH); //Methode um einen Pin an- bzw. auszuschalten
delay(250);
register1.printPinStatus(); //Methode um alle Werte eines Schieberegisterverbunds anzuzeigen
register1.setPin(1, LOW); //....setPin(PinNr. , neuerWert)
delay(250);
register1.printPinStatus(); //Methode um alle Werte eines Schieberegisterverbunds anzuzeigen
Serial.println(register1.getPinStatus(2));//Methode um Pins auszulesen
}
Weitere Projekte
- Let it snow – Winterlandschaft in einer LaterneBegonnen hat dieses Projekt in einem Dekomarkt. Die Laterne, die es hier zu kaufen gab, inspirierte mich: In dieser Laterne sollte eine Winterlandschaft entstehen sodass man selbst liebend gern in den Schnee springt.
- Solax X3 Hybrid G4 API in Home Assistant einbindenDie Integration der PV-Anlage in Home Assistant bringt neue Möglichkeiten.… Solax X3 Hybrid G4 API in Home Assistant einbinden weiterlesen