From 81eb08a8ed794e5b7da90c49d89b362b1e69e6ba Mon Sep 17 00:00:00 2001 From: Lukas Schoen <qef18hoc@rhrk.uni-kl.de> Date: Mon, 25 Nov 2024 13:46:56 +0100 Subject: [PATCH] Slave mit Register versehen --- I2C_slave/platformio.ini | 1 + I2C_slave/src/main.cpp | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/I2C_slave/platformio.ini b/I2C_slave/platformio.ini index c4b493e..7a2d0e2 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 65216a7..099f446 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); } + -- GitLab