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