Also ganz kurz, mein Fehler lag darin, das ich den "onReceive-Handler" nicht aufgerufen hatte:Die Testverbindung zw. 2 Arduino über ca 30cm verbunden geht definitiv auch ohne ext. PullUpsR's, wie folgendes beweist der Empfang einer Zählschleife 0..255:Code:Wire.onReceive(receiveEvent);
Da ich aber längere Verbindungen , um die 5..7m benötige wird dasdann in der Praxis nicht so gehen, aber um mal empfangende Daten enzuzeigen reicht mir das schon um I2C-Sendemodule zu kontrollieren.
Vielen Dank
Gerhard
Hier nun der funktionierende Code für meine Tests:
Code://Listing Master & Slave(ID=4) // Wire Master Writer // by Nicholas Zambetti <http://www.zambetti.com> // Demonstrates use of the Wire library // Writes data to an I2C/TWI slave device // Refer to the "Wire Slave Receiver" example for use with this // Created 29 March 2006 // This example code is in the public domain. #include <Wire.h> void setup() { Wire.begin(); // join I2C bus (address optional for master) } byte x = 0; void loop() { Wire.beginTransmission(4); // transmit to device #4 Wire.write("x is "); // sends five bytes Wire.write(x); // sends one byte Wire.endTransmission(); // stop transmitting x++; delay(500); } /******************************************************************************/ //Listing Slave mit LCD #include <LiquidCrystal.h> #include <Wire.h> LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); void setup() { lcd.clear(); lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print("I2C-Verbindung"); Wire.begin(4); // join I2C bus with address #4 Wire.onReceive(receiveEvent); // register event } void loop() { delay(100); } void receiveEvent(int howMany) { while(1 < Wire.available()) // loop through all but the last { char c = Wire.read(); // receive byte as a character Serial.print(c); // print the character } int x = Wire.read(); // receive byte as an integer Serial.println(x); // print the integer lcd.setCursor(0, 1); lcd.print("Empfange : "); lcd.setCursor(11,1); lcd.print (char(x)); } /******************************************************************************/







Zitieren

Lesezeichen