Mit Bits aus Byte eine Funktion "beschreiben"

Hallo,

ich benötige eine Funktion, welche mir aus einem Byte die einzelnen Bits ausliest, damit ich mit den einzelnen "Werten" eine weitere Funktion "beschreiben" kann.

eingabe(B00100010);

ausgabe(0,0,1,0,0,0,1,0)

In der Funktion ausgabe würden die ehemaligen Bits dann als einzelne Bytes (mit dem Wert 0 oder 1) weiterverarbeitet werden.

Hoffe, man kann mich verstehen.

Gruß Chris

Edit: So?

void eingabe(byte input)     // Konverter um ankommende Bits in Bytes umzuwandeln
{
  ausgabe(bitRead(input, 7),bitRead(input, 6),bitRead(input, 5),bitRead(input, 4),bitRead(input, 3),bitRead(input, 2),bitRead(input, 1),bitRead(input, 0));
}

Hast du schon mal versucht, deine Funktion zu compilieren?
das ist immer der erste Hinweis, ob etwas so geht oder nicht. In deinem Fall: Nicht.

Ich würde es eher so machen:
Du übergibst an die Funktion da zu zerlegende Byte und eine Array für die einzelnen Ergebnisse.
Dann werden in einer for-Schleife die einzelnen Bits abgefragt und an dem entsprechende Arraypaltz gespeichert.

Hier der complette Code inklusive Testsketch.

void isolateBit(byte _input, int _out[8]){
  for (int i = 0; i<8;i++){
    _out[7-i] = bitRead(_input, i);
  }
}

void setup(){
  Serial.begin(57600);
  byte input = 0xFD;
  int out[8] = {9, 9, 9, 9, 9, 9, 9, 9};
  Serial.print("Input: ");Serial.print(input); Serial.print("  Bin: ");Serial.println(input,BIN);
  isolateBit(input, out);
  Serial.print("out: "); for (int i=0; i<8; i++) {Serial.print(out[i]);Serial.print(", ");}Serial.println();
  
}
void loop(){}

Anmerkung:
Das funktioniert weil Array Variablen Zeiger auf das erste Element sind. Normalerweise sind Parameter call-by-value und können in der Funktion nicht verändert werden da nur eine Kopie übergeben wird.

Deshalb gibt es Zeiger/Pointer und Referenzen. Arrays sind eben verstecke Zeiger, deshalb kann man sie einfach so übergeben und die Änderung ist außen sichtbar.