#include "ProcessImage.h"
#include "Timer.h"
#include "BinaerSkript.h"
#include "LogicFunctions.h"
LogicFunctions logicFunc;
ProcessImage prcimage;
void debug()
{
Serial.print("INPUTS: ");
Serial.println(prcimage.GetInputs(0));
Serial.print("OUTPUTS: ");
Serial.println(prcimage.GetOutputs(0));
Serial.println("*****");
}
void setup() {
Serial.begin(115200);
//Eingänge
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
//Ausgänge
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
updateInputs(); //Alle Eingangswerte einlesen.
logicFunc.RunScript(script, scriptLen, &prcimage); //Skript zeilenweise ausführen
updateOutputs(); //Ausgänge setzen/ rücksetzen
delay(10); // Zykluszeit
debug();
}
/* Alle Eingänge einlesen */
void updateInputs(void)
{
uint8_t inputs = 0;
inputs = digitalRead(2); //Bit 0 wird der Wert von Pin 2 zugewiesen
inputs |= digitalRead(3) << 1; //Bit 1 wird der Wert von Pin 3 zugewiesen
inputs |= digitalRead(4) << 2; //Bit 2 wird der Wert von Pin 4 zugewiesen
inputs |= digitalRead(5) << 3; //Bit 3 wird der Wert von Pin 5 zugewiesen
inputs |= digitalRead(6) << 4; //Bit 4 wird der Wert von Pin 6 zugewiesen
inputs |= digitalRead(7) << 5; //Bit 5 wird der Wert von Pin 7 zugewiesen
prcimage.SetInputs(0, ~inputs & 0x3F); //Speicherabbild
}
/* */
void updateOutputs(void)
{
int a0, a1, a2, a3;
uint8_t outputs = prcimage.GetOutputs(0);
//Ausmaskieren der einzelnen Bits
a0 = bitRead(outputs, 0);
a1 = bitRead(outputs, 1);
a2 = bitRead(outputs, 2);
a3 = bitRead(outputs, 3);
digitalWrite(8, (a0 == 1) ? HIGH : LOW);
digitalWrite(9, (a1 == 1) ? HIGH : LOW);
digitalWrite(10, (a2 == 1) ? HIGH : LOW);
digitalWrite(11, (a3 == 1) ? HIGH : LOW);
}
/*********** (C) Copyright 2026 by Fritze Engineering LLC ************ END OF FILE **********/