Binärdaten

Hallo, ich hab 2 Probleme. 1. Wie kann ich einen Integerwert von 0-255 in Binär umwandeln? (50=110010) 2. Wie kann ich den erhaltenen Wert dann auf die Pins von 2 - 9 packen? 3. Wie kann ich einen binären Wert von den Pins 2-9 lesen? 4. Wie wandele ich ihn in einen integer um?

Hoffe jemand kann da helfen. Danke, Tobias

  1. Was willst du tun - sofern es nicht für eine Ausgabe ist, ist eine Umwandlung von decimal zu binär selten vonnöten

  2. entweder liest du die einzelnen Bits des Integers mit bitRead und schreibst sie auf den entsprechenden Pin mit digitalWrite

byte data = B00110010; // Dein 8Bit Wert
int cnt;

// Pin 2-9 als Ausgang definieren
for(cnt = 2; cnt < 10; cnt++) {
  pinMode(cnt,OUTPUT);
}

for(cnt = 0; cnt < 8; cnt++) {
  digitalWrite(cnt+2,bitRead(data,cnt));  
}

oder du versuchst dich in der Portmanipulation: etwa so:

byte data = B00110010; // Dein 8Bit Wert

DDRD = DDRD | B11111100; // Pin 2-7 als Ausgang definieren
DDRB = DDRB | B00000011; // Pin 8-9 als Ausgang definieren

PORTD = (PORTD & B00000011) | (data << 2); // Pin 2-7 löschen und mit Bit 1-6 beschreiben
PORTB = (PORTB & B11111100) | (data >> 6); // Pin 8&9 löschen und mit Bit 7 & 8 beschreiben

beide Versionen sind nicht getestet