Hello i have got an Arduino Mega 2560 running with the skript below and a Arduino running grbl. The two arduinos connected by rx and tx (Rx of Mega to Tx of Uno and Tx of Mega to Rx from Uno)
My skript on the Mega is running without connection to the Uno like it should, also the Grbl works fine without connection to the Uno an getting commands from the serial monitor. When both are connected the Rx Led on the Mega is burning and on the Uno nothing happend
Where is the problem?
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
int pos = 0;
int target = 0;
int target1 = 0;
byte digitCount = 0;
char incomingByte;
char incomingByteB;
char incomingByteC;
char incomingByteD;
//SETUP THE LCD
LiquidCrystal_I2C lcd(0x27, 20, 4);
//SETUP THE KEYPAD
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
'1','2','3','\a',
'4','5','6','\b',
'7','8','9','\e',
'*','0','#','\f'
};
//byte rowPins[ROWS] = {22, 24, 26, 28}; //connect to the row pinouts of the keypad
//byte colPins[COLS] = {30, 32, 34, 36}; //connect to the column pinouts of the keypad
byte rowPins[ROWS] = {5, 4, 6, 7}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 9,10, 11}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(115200);
Serial1.begin(115200);
Serial3.begin(115200);
//LETS SETUP THE LCD TEXT
lcd.begin();
lcd.backlight();
lcd.print("ENTER LENGTH IN mm");
lcd.setCursor(0,1);
lcd.print("--------------------");
lcd.setCursor(0, 2);
lcd.print("===> mm");
lcd.setCursor(0, 3);
lcd.print("STOP POSITION= 0");
lcd.setCursor(5, 2);
}
void loop() {
//this simply sends serial3(esplink wifi) input to serial1 (GRBL) and sends the GRBL(serial1) outputs to Serial3(esplink wifi)
if (Serial3.available() > 0) {
// read the incoming byte from esplink
incomingByte = Serial3.read();
// send to grbl
Serial1.print(incomingByte);
Serial3.print(incomingByte);
}
if (Serial1.available() > 0) {
// read the incoming from grbl
incomingByteB = Serial1.read();
// send to esplink
Serial3.print(incomingByteB);
}
if (Serial.available() > 0) {
// read the incoming from usb
incomingByteC = Serial.read();
// send to grbl
Serial1.print(incomingByteC);
}
if (Serial.available() > 0) {
// read the incoming from grbl
incomingByteD = Serial.read();
// send to esplink
Serial3.println(incomingByteD);
}
//FUNCTION TO HOMME WHEN THE * IS PRESSED
char keypressed = keypad.getKey();
if (keypressed == '*'){
Serial1.println("$H");
Serial3 .print("Homming....");
lcd.setCursor(14, 3);
lcd.print(" ");
lcd.setCursor(14, 3);
lcd.print("HOMME");
lcd.setCursor(5, 2);
}
//FUNCTION TO ADD 0.1MM WHEN THE B IS PRESSED
if (keypressed == '\b'){
Serial1.println("G91X+0.1");
Serial3.print("+0.1");
lcd.setCursor(14, 3);
lcd.print(" ");
lcd.setCursor(14, 3);
lcd.print(target+0.1);
lcd.setCursor(5, 2);
}
//FUNCTION TO REMOVE 0.1MM WHEN E IS PRESSED
if (keypressed == '\e'){
Serial1.println("G91X-0.1");
Serial3.print("-0.1mm");
lcd.setCursor(14, 3);
lcd.print(" ");
lcd.setCursor(14, 3);
lcd.print(target-0.1);
lcd.setCursor(5, 2);
}
// FUNCTION TO FEED HOLD WHEN ! IS PRESSED
if (keypressed == '\f'){
Serial1.println("!");
Serial3.print("Feed Hold !!");
}
// FUNCTION TO RESUME AFTER FEED HOLD WHEN # IS PRESSED
if (keypressed == '#'){
Serial1.println("~");
Serial3.print("Resuming");
}
// FUNCTION TO DELETE THE INPUT DIMENTION WHEN A IS PRESSED
if (keypressed == '\a'){
digitCount=0;
target1= 0;
lcd.setCursor(5, 2);
lcd.print(" ");
lcd.setCursor(5, 2);
}
//FUNCTION TO INPUT DIRECTION TO MOVE AFTER 4 DIGITS IS ENTERED
if (keypressed >= '0'){// && Key <= '9') {
lcd.print(keypressed);
target1 = (target1 * 10) + keypressed -'0';
digitCount++;
delay(300);
if (digitCount == 4) {
target = target1;
Serial1.print("G90X");
Serial1.println(target1);
Serial3.println(target1);
lcd.setCursor(5, 2);
lcd.print(target);
Serial3.print(target);
digitCount = 0;
target1= 0;
lcd.setCursor(5, 2);
lcd.print(" ");
keypressed = 0;
lcd.setCursor(14, 3);
lcd.print(" ");
lcd.setCursor(14, 3);
lcd.print(target);
lcd.setCursor(5, 2);
}}
}