Files
Michael Wesemann a07ff1c3d6 first commit
2026-02-12 15:32:50 +01:00

38 lines
1.1 KiB
Arduino

// ==================================================== interlock, second arduino, returns only inputs over wire
#include <Wire.h>
#define IMIN 22
#define IMAX 46
int byte_return_arr[4];
void setup() { // ---------------------------------------------------------------------------------------- setup
Wire.begin(0x55);
Wire.onReceive(calculate_bytes);
Wire.onRequest(send_bytes);
for (int pinnr = IMIN; pinnr <= IMAX; pinnr++){
pinMode(pinnr, INPUT_PULLUP);
}
Serial.begin(9600);
}
void calculate_bytes(int numBytes) { // ------------------------------------------ command from controller event
while (Wire.available()) Wire.read();
for (int i = 0; i < 4; i++) byte_return_arr[i] = 0;
for (int j=IMIN;j<=IMAX;j++) byte_return_arr[(j-IMIN)/8]+=(!digitalRead(j)*1<<((j-IMIN)%8));
}
void send_bytes(){
for (int i = 0; i < 4; i++){
Wire.write(byte_return_arr[i]);
}
}
void loop() { // ------------------------------------------------------------------------------------------ loop
}
// ========================================================================================================= END