Project 1 - Interfacing a 16*2 LCD with Arduino using I2C protocol
//I2C MASTER CODE
//I2C Communication between Two Arduino
#include<Wire.h> //Library for the I2C Communication functions
#include<LiquidCrystal.h> //library for LCD display function
LiquidCrystal lcd(2, 7, 8, 9, 10, 11); //define lcd module pins
void setup()
{
lcd.begin(16,2); //initialize lcd display
lcd.setCursor(0,0); //set cursor at first line of Display
lcd.print("Mallesh"); //print Mallesh in LCD
lcd.setCursor(0,1); //set cursor at second line of display
lcd.print("I2C ARDUINO 2 ARDUINO");
for(int i=0;i<16;i++)
{
lcd.scrollDisplayLeft();
delay(100); //slight delay
}
delay(2000); //delay for 5 seconds
lcd.clear(); //clear LCD display
Serial.begin(9600); //begin serial communication
Wire.begin(); //begin I2C Communication
}
void loop()
{
Wire.requestFrom(8,1); //request 1 byte from slave arduino (8)
byte MasterReceive = Wire.read(); //receive a byte from the slave and store in master
int potvalue=analogRead(A0); //read analog value from pot(0-5v)
byte MasterSend = map(potvalue,0,1023,0,127);
Wire.beginTransmission(8);
Wire.write(MasterSend);
Wire.endTransmission();
lcd.setCursor(0,0);
lcd.print(" Mallesh ");
lcd.setCursor(0,1);
lcd.print("Harijana");
lcd.print(MasterReceive);
Serial.println("Master Received From Slave");
Serial.println(MasterReceive);
delay(500);
lcd.clear();
}
//I2C SLAVE CODE
//I2C Communication between Two Arduino
#include<Wire.h> //Library for the I2C Communication functions
#include<LiquidCrystal.h> //library for LCD display function
LiquidCrystal lcd(2, 7, 8, 9, 10, 11); //define lcd module pins
byte SlaveReceived = 0;
void setup()
{
lcd.begin(16,2); //initialize lcd display
lcd.setCursor(0,0);
lcd.print("Mallesh");
lcd.setCursor(0,1);
lcd.print("I2C 2 ARDUINO");
delay(5000);
Serial.begin(9600); //begins serial communication
Wire.begin(8); //begin I2C Communication with slave address as 8
Wire.onReceive(receiveEvent); //function call when slave receives value from master
Wire.onRequest(requestEvent); //function call when master request value from slave
}
void loop(void)
{
lcd.setCursor(0,0);
lcd.print("Harijana");
lcd.setCursor(0,1);
lcd.print("Mallesh");
lcd.print(SlaveReceived);
Serial.println("Slave Received From Master:");
Serial.println(SlaveReceived);
delay(500);
lcd.clear();
}
void receiveEvent (int howMany)
{
SlaveReceived = Wire.read();
}
void requestEvent()
{
int potvalue = analogRead(A0);
byte SlaveSend = map(potvalue,0,1023,0,127);
Wire.write(SlaveSend);
}
