Witam.
Poniższy kod steruje 2 przekaźnikami za pomocą sms-a i działa jak na moje potrzeby.Chciałbym rozbudować ten kod o dodatkową funkcje,chodzi mi o smsa zwrotnego ze dane polecenie zostało wykonane np.jeżeli wyśle sms o treści "ON" to na wyjściu 5 pojawi się stan "WYSOKI" i chciałbym dostać sms-a na konkretny nr. o treści np. " Pin 5 HIGH".
[/code]
Poniższy kod steruje 2 przekaźnikami za pomocą sms-a i działa jak na moje potrzeby.Chciałbym rozbudować ten kod o dodatkową funkcje,chodzi mi o smsa zwrotnego ze dane polecenie zostało wykonane np.jeżeli wyśle sms o treści "ON" to na wyjściu 5 pojawi się stan "WYSOKI" i chciałbym dostać sms-a na konkretny nr. o treści np. " Pin 5 HIGH".
Kod:
[code]
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11,12); // (Rx,Tx > Tx,Rx)
char incomingByte;
String inputString;
int relay = 5;// Wyjście do sterowania przekaźnikiem
int relaya = 4;
void setup()
{
pinMode(relay, OUTPUT);
pinMode(relaya,OUTPUT);
digitalWrite(relay, LOW); // Stan wyjścia przekaźnikowego po uruchomieniu układu
digitalWrite(relaya,LOW);
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1"); //Ustawiamy SMSy w tryb tekstowy
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0"); //Procedura, która obsługuje nadchodzące wiadomości
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\""); // Komdenda odczytu nowych wiadomości
}
void loop()
{
if(mySerial.available()){
delay(100);
// Serial Buffer
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase(); // Zmiana wszystkich liter na wielkie w odebranej wiadomości
//turn RELAY ON or OFF
if (inputString.indexOf("ON") > -1){
digitalWrite(relay, HIGH);
}
if (inputString.indexOf("OFF") > -1){
digitalWrite(relay, LOW);
}
delay(50);
if (inputString.indexOf("WL") > -1){
digitalWrite(relaya, HIGH);
}
if (inputString.indexOf("WY") > -1){
digitalWrite(relaya, LOW);
}
delay(50);
// Tutaj kasujemy wiadomości w modemie, aby oszczędzać pamięć
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";
}
}
[/code]