User manual
113 114
0x08, // 5E _
0 // 5F OHNE
};
// Umrechnen ASCII Code in Tabellenindex
unsigned int get_7seg(unsigned char asciicode)
{
// Umrechnen 0..255 auf
// 7 seg Tabellenindex
// Dabei nur Zahlen und Grossbuchstaben
// 20..5F
// Rest wird auf diese gemappt
asciicode = asciicode & 0x7f; // 7 bit only
if (asciicode < 0x20) return (0); // Sonderzeichen nicht
if (asciicode >= 0x60) asciicode = asciicode - 0x20; // KLeinbuchstaben
return((~siebensegtable[asciicode-0x20])&0xff); // Index zurueck
}
// Anzeige eines einzelnen ASCII Zeichen, dass wird als
// char übergeben. Ausgabe ueber den 7 Segmentbrick
// Dazu die Segmentadresse als Parameter uebergeben
// Ohne DezimalPunkt ausgeben.
void display_seg1x(unsigned char i2cbaseadr, unsigned char ch1)
{
Wire.beginTransmission(i2cbaseadr); // I2C Adresse
Wire.write(get_7seg(ch1)); // Tabellenidnex nehmen und dann ausgeben
Wire.endTransmission(); // Ende I2C
}
// Ausgabe ohne Umrechnung, wenn eigene Zeichen verwendet werden
// sollen. Parameter ist der Bianry Code
void display_seg1xbin(unsigned char i2cbaseadr, unsigned char ch1)
{
Wire.beginTransmission(i2cbaseadr); // I2C Adresse
Wire.write(ch1); // Binaercode direkt am Port ausgeben
Wire.endTransmission(); // Ende I2C
}
// Start
void setup() {
Wire.begin(); /// I2C Initialisieren
}
void loop() {
// Anzeigen 8574T alle potentiellen Addressen ausgeben
// Man kann so sehen welche Adresse man besetzt hat
display_seg1x(i2cseg7x2amsb1,‘4‘); // eigene Adresse
display_seg1x(i2cseg7x2alsb1,‘0‘); // ausgeben
display_seg1x(i2cseg7x2bmsb1,‘4‘); // sind immer PAARE
display_seg1x(i2cseg7x2blsb1,‘4‘); // Zwei Befehle fuer ein BRICK
display_seg1x(i2cseg7x2cmsb1,‘4‘);
display_seg1x(i2cseg7x2clsb1,‘8‘); // von 40-4C
display_seg1x(i2cseg7x2dmsb1,‘4‘);
display_seg1x(i2cseg7x2dlsb1,‘C‘);
// falls 8574AT vorhanden dann auch diese ausgeben
display_seg1x(i2cseg7x2amsb2,‘7‘); // eigene Adresse
display_seg1x(i2cseg7x2alsb2,‘0‘); // ausgeben
display_seg1x(i2cseg7x2bmsb2,‘7‘); // hier
display_seg1x(i2cseg7x2blsb2,‘4‘); // von
display_seg1x(i2cseg7x2cmsb2,‘7‘); // 70..7C
display_seg1x(i2cseg7x2clsb2,‘8‘);
display_seg1x(i2cseg7x2dmsb2,‘7‘);
display_seg1x(i2cseg7x2dlsb2,‘C‘);
}










