diff --git a/I2C_slave/platformio.ini b/I2C_slave/platformio.ini index c4b493e61ba7eed7a2f71e284d2cbf73bcd46319..7a2d0e2c8417a9cd0d8d6de49ef9f4aa4d77e1e2 100644 --- a/I2C_slave/platformio.ini +++ b/I2C_slave/platformio.ini @@ -12,3 +12,4 @@ platform = espressif32 board = esp32doit-devkit-v1 framework = arduino +monitor_speed = 115200 \ No newline at end of file diff --git a/I2C_slave/src/main.cpp b/I2C_slave/src/main.cpp index 65216a7aa9a77a12a0bff4d2aa350182e84fb252..099f4464f4cd3f5dce7baccc89445546608496d0 100644 --- a/I2C_slave/src/main.cpp +++ b/I2C_slave/src/main.cpp @@ -2,20 +2,40 @@ #include <Arduino.h> char SLAVE_ADRESS = 0x34; +volatile int currentRegister = 0; void requestEvent() { - Wire.write("hi"); + if (currentRegister == 1){ + Wire.write("hi"); + } else if (currentRegister == 2){ + Wire.write ("ok"); + } else{ + Wire.write ("unknown"); + } } +void receiveEvent(int howMany) { + Serial.print("Empfangen: "); + while (Wire.available()) { + currentRegister = Wire.read(); // Lese alle verfügbaren Bytes + Serial.print("Register:"); // Gib den Wert aus (ASCII-Wert des Zeichens) + Serial.println(currentRegister); // Optional: Trennzeichen + } + Serial.println(); // Neue Zeile nach Ausgabe +} + void setup() { - Wire.begin(SLAVE_ADRESS); // join i2c bus with address #8 - Wire.onRequest(requestEvent); // register event + Wire.begin(SLAVE_ADRESS); + Wire.onReceive(receiveEvent); + Wire.onRequest(requestEvent); + Serial.begin(115200); // start serial for output Serial.println("ESP gestartet"); } void loop() { - delay(1000); + delay(10000); } +