INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schieberegister für Relaiskarte
20.03.2015, 12:36
Beitrag #1
Schieberegister für Relaiskarte
Guten Tag,
ich heisse Robert und bin neu hier Wink

Ich habe bisher immer nur als Gast meine Infos uA. auf dieser Seite zusammengesucht, nun leider bin ich jetzt an einem Punkt angekommen, an dem es für mich erstmal nicht weiter geht:

Ich möchte über einen Schieberegister eine 8-Fach Relaiskarte ansteuern. Mein Problem dabei ist nun, dass ich es nicht hinbekomme, die Bitreihe, die an den Schieberegister geschickt wird Variabel zu gestalten.

Hier mal mein bisheriger Code, der für den Schieberegister verantwortlich ist:


Code:
int clockPin = 8; //SH_CP Schieberegister
int latchPin = 9; //ST_CP Schieberegister
int dataPin = 10; //DS Schieberegister

void_setup()
   {
   pinMode(latchPin, OUTPUT); //Schieberegister
   pinMode(clockPin, OUTPUT); //Schieberegister
   pinMode(dataPin, OUTPUT); //Schieberegister
   }

void_loop()
  {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, B11110111);
  digitalWrite(latchPin, HIGH);
  }


Soweit also nichts neues. Jetzt muss ich nur noch wissen wie ich die Bitreihe sinnvoll manipulieren kann.
Ziel ist es am Ende, dass ich für jedes Relais hinterher eine Variable habe die 1 oder 0 sein kann.


Vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2015, 13:12
Beitrag #2
RE: Schieberegister für Relaiskarte
Hi,
schau Dir mal diesen Beitrag an: http://www.arduinoforum.de/arduino-Threa...1#pid12911.
Mit der Funktion sollte es moeglich sein, einzelne Bits im Schieberegister zu setzen. D.h. Du kannst damit auf das Schieberegister wie mit digitalWrite zugreifen.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2015, 13:28
Beitrag #3
RE: Schieberegister für Relaiskarte
Danke für die schnelle Antwort! Werde ich nachher gleich ausprobieren Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2015, 14:48
Beitrag #4
RE: Schieberegister für Relaiskarte
Hallo Thorsten,

ich habe mich jetzt an dem Beispiel von dir versucht. Leider habe ich keine Idee wie ich jetzt die Pins benennen muss damit das läuft. Wäre es möglich dass du mir das zeigst wie es richtig geht? Ich verstehe den Gedanken hinter dem Code noch nicht so ganz. Confused

Code:
int clockPin = 8; //SH_CP des 74HC595 Schieberegisters
int latchPin = 9; //ST_CP des 74HC595 Schieberegisters
int dataPin = 10; //DS des 74HC595 Schieberegisters

void setup()
{
   pinMode(latchPin, OUTPUT); //Schieberegister
   pinMode(clockPin, OUTPUT); //Schieberegister
   pinMode(dataPin, OUTPUT); //Schieberegister
   byte srState = 255;  // am Anfang alles aus, Relaiskarte negiert
};

void srDigitalWrite(int pin, int state)
{
   if(pin < 0 || pin > 7) return; // check for Overflow
  bitWrite(srState,pin,state);  // set or reset bit nr. "pin"
  digitalWrite(latchPin, LOW); // write to shift register
  shiftOut(dataPin, clockPin, MSBFIRST, srState);  
  digitalWrite(latchPin, HIGH);
};

void loop() {

}



Hier mal ein Bild von meinem kleinen Aufbau, soll mal ne elektrische Gießkanne für den Balkon werden. knapp 60l Wassertank und 6 kleine Pumpen^^


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2015, 15:15
Beitrag #5
RE: Schieberegister für Relaiskarte
Hi,
das hier:
Code:
byte srState = 255;  // am Anfang alles aus, Relaiskarte negiert
...muss eine globale Variable sein, also z.B. direkt hinter der Deklaration von dataPin.
Die Pins benennst Du einfach von 0 bis 7.
Das hier wuerde z.B. Pin 5 des Schieberegister-Ausgangs (immer wieder) auf LOW setzen.
Code:
void loop() {
  srDigitalWrite(5, LOW)
}
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2015, 15:35
Beitrag #6
RE: Schieberegister für Relaiskarte
Schubba, läuft! Vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hilfe beim Schieberegister MKnet83 2 418 22.02.2016 18:34
Letzter Beitrag: MKnet83
Music Problem Schieberegister, Midi Controller Vittelboy 20 1.842 29.09.2015 13:01
Letzter Beitrag: Vittelboy
  Hilfe bei einem Schieberegister Max32 15 2.428 20.03.2015 22:00
Letzter Beitrag: Thorsten Pferdekämper
  GLCD per Schieberegister 74595 mega-hz 1 1.256 23.07.2014 19:39
Letzter Beitrag: rkuehle
  Serielle Verbindung + Relaiskarte = Problem little_olli 2 1.786 22.07.2013 17:49
Letzter Beitrag: malerlein

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste