Also ganz kurz, mein Fehler lag darin, das ich den "onReceive-Handler" nicht aufgerufen hatte:
Code:
Wire.onReceive(receiveEvent);
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:
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));
}
/******************************************************************************/
Lesezeichen