Jetzt sollte es verständlicher sein:
[Code der ersten Bedienstelle]
#include <Wire.h>
extern TwoWire Wire1;
int test1=0;
int r1=0;
int r2=0;
int r3=0;
int r4=0;
int relais1=0;
int relais2=0;
int relais3=0;
int relais4=0;
int Relais1_zustand=0;
int state=0;
int lastState=0;
int Relaisstate=0;
void receiveEvent(int howMany)
{
r1 = Wire1.read();
r2 = Wire1.read();
r3 = Wire1.read();
r4 = Wire1.read();
state = digitalRead(Taster7);
if (state != lastState)
{
if (state == HIGH)
{
if (Relais7 == HIGH)
{
Relaisstate = LOW;
Serial.println("LED AUS");
}
else
{
Relaisstate = HIGH;
}
}
lastState = state;
}
if((digitalRead(Relais7)==LOW)&&((r1==HIGH)||(Relaisstate==HIGH))){
Relais1_zustand=1;
}
if((digitalRead(Relais7)==HIGH)&&((r1==LOW)||(Relaisstate==HIGH))){
Relais1_zustand=0;
}
digitalWrite(Relais7,Relais1_zustand);
}
void requestEvent()
{
Wire1.write(relais1);
Wire1.write(relais2);
Wire1.write(relais3);
Wire1.write(relais4);
}
void Kommunikation(int *relaisstatus) {
relais1=relaisstatus[7];
relais2=relaisstatus[8];
relais3=relaisstatus[9];
relais4=relaisstatus[10];
}
#include <OneButton.h>
#include <Wire.h>
//extern TwoWire Wire1;
const int PC_eins=3;
const int PC_zwei=4;
const int PC_drei=6;
const int PC_vier=5;
const int LED1=11;
const int LED2=10;
const int LED3=8;
const int LED4=9;
const int SLAVE_ADDRESS = 8; //Slave arduino ID
int relais[5];
//Taster einlesen
OneButton button1(PC_eins, false);
OneButton button2(PC_zwei, false);
OneButton button3(PC_drei, false);
OneButton button4(PC_vier, false);
int LED1_alt=0;
int taster1_alt=0;
int zustand1=0;
int taster2_alt=0;
void setup()
{
pinMode(PC_eins, INPUT);
pinMode(PC_zwei, INPUT);
pinMode(PC_drei, INPUT);
pinMode(PC_vier, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
Serial.begin(9600);
button1.attachClick(Taster1);
button1.setClickTicks(10);
button2.attachClick(Taster2);
button2.setClickTicks(10);
button3.attachClick(Taster3);
button3.setClickTicks(10);
button4.attachClick(Taster4);
button4.setClickTicks(10);
Wire.begin();
}
void Taster1(){
LED1_alt=digitalRead(LED1);
zustand1=!digitalRead(LED1);
digitalWrite(LED1,zustand1);
}
void Taster2(){
int zustand2=!digitalRead(LED2);
digitalWrite(LED2,zustand2);
}
void Taster3(){
int zustand3=!digitalRead(LED3);
digitalWrite(LED3,zustand3);
}
void Taster4(){
int zustand4=!digitalRead(LED4);
digitalWrite(LED4,zustand4);
}
void loop(){
button1.tick();
button2.tick();
button3.tick();
button4.tick();
delay(5);
Wire.requestFrom(SLAVE_ADDRESS, 4);// request 3 bytes from slave device #8
int relais1 = Wire.read(); // receive a byte as character
int relais2 = Wire.read(); // receive a byte as character
int relais3 = Wire.read(); // receive a byte as character
int relais4 = Wire.read(); // receive a byte as character
Serial.println("*******************");
Serial.print("Relais 1 :");
Serial.println(relais1);
Serial.print("Relais 2 :");
Serial.println(relais2);
Serial.print("Relais 3 :");
Serial.println(relais3);
Serial.print("Relais 4 :");
Serial.println(relais4);
Serial.println("*******************");
// transmit just this variable to the slave
Wire.beginTransmission (8);
Wire.write (digitalRead(LED1));
Wire.write (digitalRead(LED2));
Wire.write (digitalRead(LED3)); //andere Nummern
Wire.write (digitalRead(LED4)); //andere Nummern
Wire.endTransmission ();
if((digitalRead(LED1)==LOW) && (relais1==HIGH)){ //Falls LED aus ist, und Taster über I2C (relais1=AN) kommt-> LED an;
LED_zustand=1; //LED AN
}
delay(100);
if((digitalRead(LED1)==HIGH) && (relais1==LOW)){ //Falls LED aus ist, und Taster über I2C (relais1=AUS) kommt-> LED an;
LED_zustand=0; //LED AUS
}
delay(100);
digitalWrite(LED1, LED_zustand);
}