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
Funktion mit Schieberegister
02.02.2020, 11:19
Beitrag #1
Funktion mit Schieberegister
Hey Leute,

ich habe ein kleines Problem mit der Verwendung einer Funktion mit einem Schieberegister. Als Beispiel folgendes Programm.

Wie muss ich die "Bit´s" schreiben, dass sie in der Funktion verwendet werden?
Bzw geht das überhaupt?

Wenn ich es so zum beginn des Programms deklariere wird es in der Funktion sauber verwendet, doch ich würde die Bit´s wie die anderen Parameter beim aufrufen der Funktion beschreiben
int muster[8] = {0,0,0,0,0,1,1,0};

Code:
byte taster;

byte storePin = 6;
byte dataPin = 5;
byte shiftPin = 7;


void setup(){
  
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(taster, INPUT);

  

}




void loop()
{

  taster = digitalRead(2);
  
  if(taster == HIGH){
    
    blinken(4,600, {0,0,0,0,0,1,1,0});
    
    
  }
  

}






void blinken(byte pin, int dauer, byte muster[8]){
  
  digitalWrite(pin, HIGH);
  delay(dauer);
  digitalWrite(pin, LOW);
  delay(dauer);
  
  digitalWrite(storePin, LOW);
  for( int i=0; i<8; i++)
  {
    digitalWrite(shiftPin, LOW);
    digitalWrite(dataPin, muster[i]);
    digitalWrite(shiftPin, HIGH);  
  }
  digitalWrite(storePin, HIGH);
  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2020, 11:31
Beitrag #2
RE: Funktion mit Schieberegister
Warum nimmst Du nicht einfach ein Byte, dessen einzelne Bits den Zustand darstellen. Auf die Bits kannst Du mit bitSet und dessen Verwandten zugreifen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2020, 12:00
Beitrag #3
RE: Funktion mit Schieberegister
Und wenn ich mit 16 bit's arbeiten möchte?
Int muster[16] = {0,0,0,0,......0};
Also bei der Verwendung von 2 Schieberegistern in reihe um Pins zu sparen. (Ausgang 8 auf Ausgang 1(
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2020, 12:04
Beitrag #4
RE: Funktion mit Schieberegister
Dann nimmst Du halt ein uint16_t. uint32_t, uint64_t geht auch. Byte wäre uint8_t.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  PID-Regler PID als Funktion nimmzwei 3 817 27.04.2020 20:39
Letzter Beitrag: nimmzwei
  Frage zum richtigen verwenden einer Funktion Gerdchen03 3 596 10.04.2020 19:37
Letzter Beitrag: Tommy56
  Funktion aufrufen senseman 14 1.291 09.02.2020 21:42
Letzter Beitrag: senseman
  Funktion random() Bau3r 1 422 02.02.2020 16:23
Letzter Beitrag: Tommy56
  MBI5039 16Bit Schieberegister für Videowall Horst2275 2 633 29.10.2019 11:05
Letzter Beitrag: Horst2275
  array aus Methode/Funktion sepp01 3 1.303 14.10.2018 19:16
Letzter Beitrag: Tommy56
  Funktionen mit der millis() Funktion Zis 3 2.691 16.05.2018 21:50
Letzter Beitrag: Tommy56
  Map funktion bei Fernsteuerung marsmännchen 7 1.878 23.04.2018 12:42
Letzter Beitrag: hotsystems
  Millis verzögern Funktion? malsehen 14 4.325 29.03.2018 21:47
Letzter Beitrag: hotsystems
  Taster schalten LEDs mit Schieberegister Sonne 3 2.471 26.03.2018 20:08
Letzter Beitrag: hotsystems

Gehe zu:


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