Hello! I write this code. Everything works :except: wont dial numbers. Can someone please take a look on my code?
Thanks in advance
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
String inputString;
long inputInt;
const int ROW_NUM = 4; // four rows
const int COLUMN_NUM = 4; // four columns
char keys[ROW_NUM][COLUMN_NUM] = {
{'1','2','3', 'A'},
{'4','5','6', 'B'},
{'7','8','9', 'C'},
{'*','0','#', 'D'}
};
byte pin_rows[ROW_NUM] = {11, 10, 9, 3}; // connect to the row pinouts of the keypad
byte pin_column[COLUMN_NUM] = {2, 12, 5, 4}; // connect to the column pinouts of the keypad
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
int cursorColumn = 0;
void setup(){
Serial.begin(19200);
lcd.begin(); // initialize the lcd
lcd.backlight();
SIM900.begin(19200);
inputString.reserve(20);
}
void loop(){
char key = keypad.getKey();
if (key) {
lcd.setCursor(cursorColumn, 0); // move cursor to (cursorColumn, 0)
lcd.print(key); // print key at (cursorColumn, 0)
Serial.print(key);
cursorColumn++;
if (key >= '0' && key <= '9') { // only act on numeric keys
inputString += key; // append new character to input string
} else if (key == 'D') {
if (inputString.length() > 0) {
inputInt = inputString.toInt(); // YOU GOT AN INTEGER NUMBER
SIM900.println("ATD + +inputInt;");
Serial.print(inputInt);
lcd.setCursor(0, 1);
lcd.print("SEND");
delay(100);
SIM900.println();
}
} else if (key == 'B') {
lcd.clear(); // clear input
cursorColumn = 0;
}
else if (key == 'A') {
SIM900.println("ATHrn");
lcd.setCursor(0, 1);
lcd.print("HANG UP");
}
}
}