Hallo miteinander,
ich werde so langsam depressiv bei dem Problem.
Kurz dazu eine Einleitung:
Ich habe 8 Taster über ein Eingangsregister 4021 BE eingelesen.
Über das Arduino gebe ich die Binärwerte dem Ausgangsregister und dieses lässt parallel dazu acht LED's leuchten, in Abhängigkeit was für Taster gedrückt wurden!!!
Nun mein Problem. Ich möchte die Ausgänge (LED's) binär codieren. Um so 256 Taster anschließen zu können.
Gibt es vielleicht dazu eine elegantere Lösung? Zu beachten ist, das ich ein dauerhaftes paralleles Signal am Ausgangsregister haben muss und ich nicht mehr Ausgänge zur nutzen darf, da danach ein System kommt.
Beispiel:Taster 1 gedrückt---> LSB LED leuchtet--> übergebener Strom von Eingangsregister 0000 0001
Taster 6 gedrückt---> LED 2, LED 3 leuchten---> übergebener Strom von ER 0000 0110
Taster 8 gedrückt---> LED 4 leuchten---> übergebener Strom von ER 0000 1000
Ich habe alles probiert switch case, und if Abfragen, doch nichts führte zum Ziel.
Gibt es Vielleicht dafür eine Bitoperation?
Weiß jemand wie man das Problem lösen kann?
Ich danke euch im Vorraus für eure Lösungen.

Hier das Listing:
//**********************************
//Pin connected to ST_CP of 74HC595
int latchPin_out = 7;
//Pin connected to SH_CP of 74HC595
int clockPin_out = 8;
//Pin connected to DS of 74HC595
int dataPin_out = 9;
// Pin connected
int latchPin_in = 10;
// Pinconnection to 74HC4021BE
int clockPin_in = 11;
// Pinconnection to 74HC4021BE
int dataPin_in = 12;
// Pinconnection to 74HC4021BE
//**********************************
void setup() {
//set pins to output so you can control the shift register
pinMode(latchPin_out, OUTPUT);
pinMode(clockPin_out, OUTPUT);
pinMode(dataPin_out, OUTPUT);
pinMode(dataPin_in, INPUT);
pinMode(clockPin_in, OUTPUT);
pinMode(latchPin_in, OUTPUT);
Serial.begin(9600);
}
//**********************************
void loop() {
int switchVar1 = 0;
digitalWrite(latchPin_in,1);
delayMicroseconds(10);
digitalWrite(latchPin_in,0);
switchVar1 = shiftIn(dataPin_in, clockPin_in);
Serial.println(switchVar1, BIN);
shift_Out (switchVar1, dataPin_out, clockPin_out, latchPin_in);
//delay(500);
}
byte shiftIn(int myDataPin, int myClockPin) {
int i;
int temp = 0;
int pinState;
byte myDataIn = 0;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, INPUT);
for (i=7; i>=0; i--)
{
digitalWrite(myClockPin, 0);
delayMicroseconds(0.2);
temp = digitalRead(myDataPin);
if (temp) {
pinState = 1;
myDataIn = myDataIn | (1 << i);
}
else {
pinState = 0;
}
digitalWrite(myClockPin, 1);
}
return myDataIn;
}
byte shift_Out(byte var, int Dpout, int Cpout, int Lpout){
digitalWrite(Lpout, LOW);
// shift out the bits:
shiftOut(Dpout, Cpout, LSBFIRST, var);
//take the latch pin high so the LEDs will light up:
digitalWrite(Lpout, HIGH);
}