11-07-2018, 20:10
(11-07-2018, 19:40)es2 napisał(a):(11-07-2018, 19:28)mojojek napisał(a): Byłeś na elektrodzie więc dobrze wiesz kto. Skoro Ci to tak bardzo potrzebne abym napisał to pomógł użytkownik nowyARM.Pomógł? Czemu więc nie kliknąłeś "pomógł" ani nawet pomocny post?
Najmocniej przepraszam i dziękuję za wszystkie wskazówki, nie wiedziałem, że piszę z tą samą osobą. Oczywiście cofam to co wcześniej napisałem i bez Twojej pomocy pewnie bym tego nie ogarnął. Mam nadzieję, że nie żywisz żadnej urazy i stosowne podziękowania oczywiście na elektrodzie kliknę.
Nie wiem tylko gdzie mam teraz odpisywać, tutaj, czy tam.
Wkleję również tutaj omawiany kod (może komuś się przyda):
Kod:
#include <SoftwareSerial.h>
SoftwareSerial GPRS(11, 12);
boolean state, lastState;
void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
state = digitalRead(2);
lastState = state;
GPRS.begin(9600);
Serial.begin(9600);
GPRS.println("AT+CMGF=1");
delay(1000);
}
void loop()
{
while(GPRS.available()) {
Serial.write(GPRS.read());
}
lastState = state;
state = digitalRead(2);
if ( state != lastState ) {
sendSMS();
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
delay(500);
}
void sendSMS() {
Serial.print("ALARM ");
Serial.println(state ? "WLAMANIE!" : "UZBROJONY" );
GPRS.println("AT+CMGS=\"+48xxxxxxxxx\"");
delay(500);
GPRS.print("ALARM ");
GPRS.println(state ? "WLAMANIE!" : "UZBROJONY" );
GPRS.write( 0x1a ); // ctrl+Z character
delay(500);
}
Odnośnie zawieszenia programu po "AT+CMGS", o którym wspomniałeś. Nic takiego póki co się nie wydarzyło jednak jak temu zaradzić? Co konkretnie należałoby dopisać do kodu?
Jest jakieś inne wyjście prócz zapamiętaniem stanu pinu? Rozumiem, że zapamiętać musi za każdym razem w pamięci flash?