Ok., let it be:
allDisplays.h
// display factory class
#include <genieArduino.h>
Genie uLCD90DCT;
// my classes
#include "InvDisplay.h"
InvDisplay* invDisplays = new InvDisplay[6];
#include "smallDisplay.h"
smallDisplay display;
allDisplays.ino
#include "allDisplays.h"
void setup() {
Serial1.begin(9600);
uLCD90DCT.Begin(Serial1);
uLCD90DCT.AttachEventHandler(displayEventHandler); // Attach the user function Event Handler for processing events
for (uint8_t i = 0; i < 6; i++) {
invDisplays[i].init(i);
}
}
void displayEventHandler() {
genieFrame Event;
uLCD90DCT.DequeueEvent(&Event);
// later do something, if a button is pressed
}
void loop() {
uLCD90DCT.DoEvents(); // This calls the library each loop to process the queued responses from the display
}
my classes
smallDisplay.h
#ifndef smallDisplay_h
#define smallDisplay_h
#include <Arduino.h>
#include <String.h>
#include <genieArduino.h>
const uint8_t a1aktI_LeddigitsID = 6;
class smallDisplay {
public:
smallDisplay();
void setA1aktI(uint16_t value);
private:
void _setGENIE_OBJ_LED_DIGITS(uint8_t _LeddigitsID, uint16_t value);
};
#endif
smallDisplay.cpp
#include "smallDisplay.h"
smallDisplay::smallDisplay() {
}
void smallDisplay::setA1aktI(uint16_t value) {
_setGENIE_OBJ_LED_DIGITS(a1aktI_LeddigitsID, value);
}
void smallDisplay::_setGENIE_OBJ_LED_DIGITS(uint8_t _LeddigitsID, uint16_t value) {
uLCD90DCT.WriteObject(GENIE_OBJ_LED_DIGITS, _LeddigitsID, value);
}
InvDisplay.h
#ifndef InvDisplay_h
#define InvDisplay_h
#include <Arduino.h>
#include <String.h>
#include <genieArduino.h>
const uint8_t invSetU_LeddigitsID_arr[] = { 2, 8, 9, 10, 11, 12 };
class InvDisplay {
public:
InvDisplay();
void init(uint8_t arrIdx);
void setInvSetU(uint16_t value);
private:
void _setGENIE_OBJ_LED_DIGITS(uint8_t _LeddigitsID, uint16_t value);
uint8_t _invSetU_LeddigitsID;
};
#endif
InvDisplay.cpp
#include "InvDisplay.h"
InvDisplay::InvDisplay() {
}
void InvDisplay::init(uint8_t arrIdx) {
_invSetU_LeddigitsID = invSetU_LeddigitsID_arr[arrIdx];
}
void InvDisplay::setInvSetU(uint16_t value) {
_setGENIE_OBJ_LED_DIGITS(_invSetU_LeddigitsID, value);
}
void InvDisplay::_setGENIE_OBJ_LED_DIGITS(uint8_t _LeddigitsID, uint16_t value) {
uLCD90DCT.WriteObject(GENIE_OBJ_LED_DIGITS, _LeddigitsID, value);
}
This is the complete test code.