Включение/выключение светодиода с помощью SIM808 с Arduino Mega

Я пытаюсь включить / выключить светодиод с помощью модуля GSM 808. Здесь #a0 = СВЕТОДИОД выключен, а #a1 = светодиод включен. Я использовал функцию lcdShow для отображения символов на ЖК-дисплее. Но на дисплее ничего не появляется. Что не так в этом коде?

#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);

}

, 👍0


1 ответ


-1

Во-первых, ваш код был действительно плохо отформатирован, что затрудняло понимание того, что он делает.

После переформатирования мое лучшее предположение о том, почему ваш ЖК-дисплей пуст, заключается в том, что SIM808 не имеет никаких доступных данных. выведите что-нибудь в операторе else.

Далее может случиться так, что ЖК-дисплей не работает, распечатайте что-нибудь в setup().

Возможно, вы также захотите добавить задержку в loop(), чтобы Arduino не спамил ваш SIM808.

,