Re: Управление внешними устройствами с Arduino при помощи СМС
Попробуй вот так
PHP код:
char inchar;
int led1 = 10;
int led2 = 11;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Serial1.begin(9600);
delay(30000);
Serial1.println("AT+CMGF=1\r");
delay(200);
Serial1.println("AT+CNMI=3,0,0,0\r");
delay(200);
}
void loop()
{
device_1();
device_2();
}
void device_1()
{
if(Serial1.available() >2)
{
inchar=Serial1.read();
if (inchar=='#')
{
inchar=Serial1.read();
if (inchar=='a')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(led1, LOW);
}
else if (inchar=='1')
{
digitalWrite(led1, HIGH);
}
}
}
Serial1.flush();
Serial1.println("AT+CMGD=1,4\r");
}
}
void device_2()
{
if(Serial1.available() >2)
{
inchar=Serial1.read();
if (inchar=='#')
{
inchar=Serial1.read();
if (inchar=='b')
{
delay(10);
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(led2, LOW);
}
else if (inchar=='1')
{
digitalWrite(led2, HIGH);
}
}
}
Serial1.flush();
Serial1.println("AT+CMGD=1,4\r");
}
}
Re: Управление внешними устройствами с Arduino при помощи СМС
Как-то непонятно... Отправляю #b1-работает. Потом #a1-не работает. Потом #b0 - опять не работает. Ставлю >0 - вооюще не работает.
Re: Управление внешними устройствами с Arduino при помощи СМС
Вот еще вариант кода на 4 устройства только я его не проверял на ошибки
PHP код:
#define led1 10
#define led2 11
#define led3 12
#define led4 13
char instring[3];
void setup()
{
for(byte i=10; i<14; i++) pinMode(i, OUTPUT);
Serial1.begin(9600);
delay(30000);
Serial1.println("AT+CMGF=1\r");
delay(200);
}
void loop()
{
Serial1.println("AT+CNMI=3,0,0,0\r");
delay(200);
device();
delay(1000);
}
void device()
{
if(Serial1.available() >2)
{
for(byte i=0; i<3; i++) instring[i]=Serial1.read();
if (instring[1]=='a') digitalWrite(led1, (instring[2]-48));
if (instring[1]=='b') digitalWrite(led2, (instring[2]-48));
if (instring[1]=='c') digitalWrite(led3, (instring[2]-48));
if (instring[1]=='d') digitalWrite(led4, (instring[2]-48));
Serial1.flush();
Serial1.println("AT+CMGD=1,4\r");
}
}
Re: Управление внешними устройствами с Arduino при помощи СМС
Вообще не подает признаков жизни...
Re: Управление внешними устройствами с Arduino при помощи СМС
А что делает команда AT+CMGD=1,4\r
Я не исключаю что мог допустить ошибку , проверить мне не начем, но логика должна быть как в моем примере. Возможно что модем больше данных отправляет чем 3 байта
Re: Управление внешними устройствами с Arduino при помощи СМС
AT+CMGD=1,4\r удаляет все полученные СМС. Ее можно и по иному написать, но так работает более корректно.
Re: Управление внешними устройствами с Arduino при помощи СМС
А какой командой делать запрос СМС?
Этой AT+CNMI=3,0,0,0\r ?
Если да, то попробуй подправленный код
Re: Управление внешними устройствами с Arduino при помощи СМС
Да, как раз эта команда, сразу (при поступлении) открываес СМС.
Re: Управление внешними устройствами с Arduino при помощи СМС
Чуть позже, попробую, только напиши, в каком виде отпрвлять СМС. Я пробовал: (а1), (#а1) и (а).
Re: Управление внешними устройствами с Arduino при помощи СМС
в таком #а1 где 1 или 0 это значение для цифрового выхода