Цитата(Aner @ Apr 9 2013, 12:52)

А что в сим900 заливаете? Да и поподробнее как на ардуино ревлизовали. Может ваша программа в озу крутиться?
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);
void setup()
{
gprsSerial.begin(19200);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
// Настраиваем приём сообщений с других устройств
// Между командами даём время на их обработку
gprsSerial.write("AT+CMGF=1\r");
delay(300);
gprsSerial.write("AT+IFC=1, 1\r");
delay(300);
gprsSerial.write("AT+CPBS=\"SM\"\r");
delay(300);
gprsSerial.write("AT+CNMI=1,2,2,1,0\r");
delay(500);
}
String currStr = "";
// Переменная принимает значение True, если текущая строка является сообщением
boolean isStringMessage = false;
void loop()
{
if (!gprsSerial.available())
return;
char currSymb = gprsSerial.read();
if ('\r' == currSymb) {
if (isStringMessage) {
//если текущая строка - SMS-сообщение,
//отреагируем на него соответствующим образом
if (!currStr.compareTo("On")) {
digitalWrite(13, HIGH);
digitalWrite(11, 1);
delay(400);
digitalWrite(11, 0);
delay(400);
digitalWrite(11, 1);
delay(400);
digitalWrite(11, 0);
delay(400);
digitalWrite(11, 1);
delay(400);
digitalWrite(11, 0);
} else if (!currStr.compareTo("Off")) {
digitalWrite(13, LOW);
} else if (!currStr.compareTo("On1")) {
digitalWrite(12, HIGH);
} else if (!currStr.compareTo("Off1")) {
digitalWrite(12, LOW);
}
isStringMessage = false;
} else {
if (currStr.startsWith("+CMT")) {
//если текущая строка начинается с "+CMT",
//то следующая строка является сообщением
isStringMessage = true;
}
}
currStr = "";
} else if ('\n' != currSymb) {
currStr += String(currSymb);
}
}
вот все с комментами как есть.
Заливаю "ат" команды через сериал ардуиновский. ответы тоже приходят, все работает, но стоит отключить модуль.. именно модуль! все перестает работать ((
забыл добавить ) я использую gprs шидд. там джамперы для sSerial.
Сообщение отредактировал David_Ali - Apr 9 2013, 08:28