Textübertragung mit I2C



Aufgabe:

Ein erster Arduino (als I2C-Master betrieben) empfängt vom seriellen Monitor Text (den der Benutzer eingibt).
Diesen Text sendet der Master über I2C an einen zweiten Arduino (als Slave betrieben).
Der Slave gibt den Text auf seinem LCD-Shield aus.


       


/*
  MASTER
 
  Arduino1 (Master) sendet Text vom Serial
  Monitor ueber I2C zu Arduino2 (Slave)
 
  Matthias Harnisch: mhr83<at>gmx.de
 
  www.arduinospielwiese.de
*/

#include <Wire.h>

void setup()
{
Serial.begin(9600);
Wire.begin();
}

void loop()
{
   while(Serial.available())
   {
    char x[16];
    x[16] = Serial.read();
 
    Wire.beginTransmission(5);                    
    Wire.write(x[16]);
    Wire.endTransmission();                    
   }
}



/*
  SLAVE

  Arduino1 (Master) sendet Text   vom Serial
  Monitor ueber I2C zu Arduino2 (Slave)

  Matthias Harnisch: mhr83<at>gmx.de

  www.arduinospielwiese.de
*/

#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

void setup()
{
   lcd.clear();     
   lcd.begin(16, 2);   
   lcd.setCursor(0,0);
   Wire.begin(5);
   Wire.onReceive(receiveEvent);
}

void loop()
{
}

void receiveEvent(int howMany)

  while(Wire.available())
  {
   char x[16];
   x[16] = Wire.read();         
   lcd.print(x[16]); 
  
     if(x[16] == '#') //wird eine "#" gesendet, loescht dies das LCD
     {     
       lcd.clear();
     }
  } 
}