Hello, I have a problem with communication between my Arduino Nano and Arduino Uno using I2C. The Nano is supposed to send characters to the Uno, but when I try to read the characters I sent, I only get the "⸮" thing in the serial monitor. I used pins 4 and 5 (analog).
Master (Arduino nano)
#include <WSWire.h>
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'#','0','*','D'}
};
byte rowPins[ROWS] = { 12, 11, 10, 9 };
byte colPins[COLS] = { 8, 7, 6, 5 };
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define ledpin 13
void setup(){
Wire.begin();
pinMode(ledpin,OUTPUT);
digitalWrite(ledpin, HIGH);
Serial.begin(9600);
}
void loop()
{
char key = kpd.getKey();
if(key)
{
switch (key)
{
case '#':
digitalWrite(ledpin, LOW);
Wire.beginTransmission(9);
Wire.write(key);
Wire.endTransmission();
break;
case '*':
digitalWrite(ledpin, HIGH);
Wire.beginTransmission(9);
Wire.write(key);
Wire.endTransmission();
break;
default:
Serial.println(key);
Wire.beginTransmission(9);
Wire.write(key);
Wire.endTransmission();
}
delay(100);
}
}
Slave (Arduino Uno)
#include <WSWire.h>
char key = 0;
void setup(){
pinMode (13, OUTPUT);
Wire.begin(9);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
}
void receiveEvent( int bytes ){
char key = Wire.read();
Wire.endTransmission();
}
void loop(){
char key = Wire.read();
if(key)
{
switch (key){
case '#':
digitalWrite(13, LOW);
Serial.println(key);
break;
case '*':
digitalWrite(13, HIGH);
Serial.println(key);
break;
default:
Serial.println(key);
}
delay(100);
}
}
I used the WSWire library because I had problems with my Nano locking up every time I send the wire.endTransmission .
Can someone help me identify the problem?