I am trying to turn an LED on/off by using GSM 808 module. Here #a0 = LED off
and #a1 = LED on
. I have used lcdShow
function to display characters in LCD display. But nothing appears on display. What is wrong in this code?
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
//I2C pins declaration
LiquidCrystal_I2C lcd (0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
SoftwareSerial SIM808 (10, 11);
char inchar;
const int LED = 2;
void setup ()
{
Serial.begin (9600);
SIM808.begin (9600);
delay (10000);
SIM808.print ("AT+CMGF=1\r");
delay (100);
SIM808.print ("AT+CNMI = 2,2,0,0,0\r");
delay (100);
lcd.begin (16, 2);
lcd.backlight ();
delay (1000);
pinMode (LED, OUTPUT);
digitalWrite (LED, HIGH);
}
void loop ()
{
if (SIM808.available () > 0)
{
inchar = SIM808.read ();
if (inchar == '#')
{
lcdShow (inchar);
delay (10);
inchar = SIM808.read ();
if (inchar == 'a')
{
lcdShow (inchar);
delay (10);
inchar = SIM808.read ();
if (inchar == '0')
{
lcdShow (inchar);
digitalWrite (LED, LOW);
}
else if (inchar == '1')
{
lcdShow (inchar);
digitalWrite (LED, HIGH);
}
}
}
SIM808.println ("AT+CMGD = 1,4");
}
}
void lcdShow (char i)
{
lcd.setCursor (0, 0);
lcd.print (i);
delay (5000);
}
1 Answer 1
Firstly your code was really poorly formatted, making it difficult to see what it did.
After reformatting my best guess as to why you LCD is blank is that the SIM808 is does not have any data available. print something in the else
statement.
Next it could be that the LCD is not working, print something out in setup()
.
You might also want to add a delay to loop()
to prevent the Arduino spamming your SIM808.