#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#define rxpin 12
#define txpin 13
LiquidCrystal_I2C lcd(0x27,16,2);
SoftwareSerial myserial(rxpin, txpin);
// Define the LED pin
const int ledPin = 10;
const int ledPin1= 11;
const int ledPin2= A1;
const int ledPin3= A0;
// Define the keypad size and keys
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns
String inputString = ""; // a String to hold incoming data
bool stringComplete = false; // whether the string is complete
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // Connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; // Connect to the column pinouts of the keypad
// Create the Keypad object
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial.begin(9600);
myserial.begin(9600);
lcd.init();
lcd.backlight();
// lcd.clear();
// lcd.setCursor(0, 0);
lcd.noCursor();
lcd.cursor_off();
lcd.blink_on();
lcd.print(F("Cursor blink"));
inputString.reserve(200);
//Serial.println(Serial.list());
//Serial.begin(9600); // Serial1 is connected to the custom chip
//Serial.print("Uryyb, HNEG!");
//Serial.print("Uryyb, HNEG!");
//Serial.println("Data received from UART chip:");
}
void loop() {
if (stringComplete) {
lcd.setCursor(0,0);
lcd.cursor_off();
lcd.blink_off();
lcd.print(inputString);
// clear the string:
inputString = "";
stringComplete = false;
}
while (myserial.available()) {
//Serial.print((char)myserial.read());
char inChar = (char)myserial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
Serial.print(inputString);
stringComplete = true;
}
}
char key = keypad.getKey();
if (key) {
if (key == '1') {
digitalWrite(ledPin, HIGH);
//Serial.println("Uryyb, HNEG!");
//Serial.write("Uryyb, HNEG!");
myserial.print("Uryyb, HNEG!\n");
}
if (key == '2') {
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, HIGH); }
if (key == '3') {
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH); }
if (key == '4') {
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
}
if (key == 'A') {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
digitalWrite(ledPin1, HIGH);
delay(500);
digitalWrite(ledPin1, LOW);
delay(500);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin2, LOW);
delay(500);
digitalWrite(ledPin3, HIGH);
delay(500);
digitalWrite(ledPin3, LOW);
delay(500);
}
if (key == 'B') {
digitalWrite(ledPin3, HIGH);
delay(500);
digitalWrite(ledPin3, LOW);
delay(500);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin2, LOW);
delay(500);
digitalWrite(ledPin1, HIGH);
delay(500);
digitalWrite(ledPin1, LOW);
delay(500);
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
if (key == '0') {
digitalWrite(ledPin, LOW);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
}
}
}
//void serialEvent() {
// void serialEvent() {
// while (Serial.available()) {
// // get the new byte:
// char inChar = (char)Serial.read();
// // add it to the inputString:
// inputString += inChar;
// // if the incoming character is a newline, set a flag so the main loop can
// // do something about it:
// if (inChar == '!') {
// Serial.print(inputString);
// stringComplete = true;
// }
// }
// }