Forum
Arduino Programmierung "speciale" (Elektronik)
» » Vielleicht kann der Kollege Schleifstein ja nochmal helfen (gerne auch
» » gegen eine Aufwandsentschädigung)
»
» Gerne. (Und ohne Aufwandsentschädigung, ich mache das rein aus Spaß an
» der Freude
).
Da kann ich ja gar nicht genug danken
Dies ist der Code für den BCD-Schalter (wird über einen Parallel-SPI-Wandler MCP23017 ausgelesen)
#include "Wire.h"
byte GPIOA, GPIOB, dig1, dig2, dig3, dig4;
void setup()
{
Wire.begin(); // start up I2C bus
}
void loop()
{
// Bank A auslesen
Wire.beginTransmission(0x20);
Wire.write(0x12);
Wire.endTransmission();
Wire.requestFrom(0x20, 1);
GPIOA=Wire.read();
// Bank B auslesen
Wire.beginTransmission(0x20);
Wire.write(0x13);
Wire.endTransmission();
Wire.requestFrom(0x20, 1);
GPIOB=Wire.read();
//einzelne Digits 'bit-shiften'
dig4=GPIOB >> 4;
dig3=GPIOB & B00001111;
dig2=GPIOA >> 4;
dig1=GPIOA & B00001111;
}
Hier noch das Timing-Diagramm. Ein START-Impuls wird bestimmt 100ms lang sein (da die LOGO nicht die Schnellste ist)

Gesamter Thread:
