/*Senden (write) von Daten ueber die I2C serielle Schnittstelle von ESP8266 NodeMCU zu Arduino Nano und zurueck. ESP fungiert als Master, Nano als Slave. ESP sendet jede Sekunde die Zeichenfolge "Wert ist jetzt: " sowie einen Zahlenwert 0...255. Im Gegenzug sendet Nano die Zeichenfolge "Hello ESP from Nano! ". Diese Daten werden jeweils im seriellen Monitor angezeigt(fuer die Anzeige das jeweilige COM-Port auswaehlen). SDA (Serial Data): ESP Pin D2 - Nano Pin A4 SCL (Serial Clock): ESP Pin D1 - Nano Pin A5 Auf ESP wird dieser sketch geladen, auf Nano sketch_65_I2C_nanoslave_zaehlen. Die Spannungsversorgung von ESP als auch von Nano erfolgt ueber USB-Kabel. Beachte, fuer diesen Sketch muss bei "Werkzeugen" eingetragen sein: Board "NodeMCU 1.0" und das richtige COM-Port. */ #include <Wire.h> // Das Bibliotheksprogramm steht unter: arduino-1.8.8\hardware\arduino\avr\libraries\Wire byte wert = 0; // Variable "wert" wird definiert, sie kann ein Byte (0...255) aufnehmen void setup() { Wire.begin(); // Initialisierung der Library Wire.h Serial.begin (9600); // Start des seriellen Monitors zur Anzeige der vom Slave (Nano) empfangenen Daten } void loop() { /*Senden zum Slave:*/ Wire.beginTransmission(8); // Vorbereiten Senden ; Empfaenger-Adresse des Slave ist #8 (dezimal), festgelegt im sketch_65 Wire.write("Wert ist jetzt: "); // Schreiben in den Sendepuffer von 16 Bytes Zeichenfolge(String). Auch moeglich: Wire.send Wire.write(wert); // Schreiben in den Sendepuffer von 1 Byte (aktueller Wert) Wire.endTransmission(); // Jetzt erst Senden aller Bytes aus dem Sendepuffer des ESP, dann Stop der Uebertragung wert++; // Wert erhoehen delay(1000); // Warten 1 Sek, dann beginnt der Sendeablauf erneut /*Empfangen vom Slave:*/ Wire.requestFrom(8,21); // Anfragen und Lesen vom Slave, Adresse #8 , 21 Zeichen (max 32 Zeichen moeglich) while(Wire.available()) { char c = Wire.read(); Serial.print(c); } Serial.println(); delay(1000); }