Merhaba arkadaşlar. Arduino Uno ve Gsm Shield ile bir odanın sıcaklığını kontrol edecek sistem tasarlamaya çalışıyorum . Programda benim telefondan gönderdiğim derece komutlarını yorumlayarak LM35’ den gelen sıcaklık değeri ile karşılaştırıp o anki sıcaklığa göre odanın sıcaklığını arttırıp yada azaltan programı yazmaya çalışıyorum. Yani Şöyle "Oda sıcaklığını 25 C yap! "gibi telefondan mesaj yollayacağım. Sensörden ölçülen sıcaklık 28 derece ise fan çalışacak. Tek sorun benim gönderdiğim mesajın içindeki string ve sayıları ayırt edip nasıl çıkış sunacak ? Yardım ederseniz sevinirim. #include <gsm.h>
define PINNUMBER “”//simde pin varsa buraya yazın
const int fan = 4;
GSM gsmAccess;
GSM_SMS sms;
char senderNumber[20];
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
boolean notConnected = true;
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println(“baglanamadi”);
delay(100);
}
}
sms.print(“AT+CMGD=1,4”);//tüm smsleri sil
delay(1000);
Serial.println(“GSM baglandi”);
}
void loop() {
char c;
if (sms.available()) {
sms.remoteNumber(senderNumber, 20);
while (c = sms.read())
{
Serial.print(c);
if (c == 'O') // Oda kaç derece ? Telefondan mesaj yolla
{
sms.flush();
smsat();
}
else if(c=='S') // Sıcaklık("istediğimiz derece" C) Yap ! diye telefonla mesaj yolla
{
sms.flush();
smsat3();
}
else
{
sms.flush();
smsat2();
}
}
Serial.println("MESSAGE DELETED");
}
delay(100);
}
void smsat() {
String txtMsg = “”;
float derece = (( analogRead(A0) / 1024.0) * 5000 ) / 10;
txtMsg = "ODA SICAKLIGI: “;
txtMsg = txtMsg + derece;
txtMsg = txtMsg + " C”;
Serial.println(“SENDING”);
Serial.println(“derece:”);
Serial.println(txtMsg);
sms.beginSMS(“05423584203”);//sms atılacak telefon numarası
sms.print(txtMsg);
sms.endSMS();
Serial.println(“\nCOMPLETE!\n”);
delay(100);
}
void smsat2() {
String txtMsg = “”;
txtMsg = "Yanlış Mesaj! ";
Serial.println(“SENDING”);
Serial.println(txtMsg);
sms.beginSMS(“05321234567”);//sms atılacak telefon numarası
sms.print(txtMsg);
sms.endSMS();
Serial.println(“\nCOMPLETE!\n”);
delay(100);
}
void smsat3()
{
int i=0;
double derece_dizisi[1]=" ";
float sicaklik; //Analog değeri dönüştüreceğimiz sıcaklık
float derece = (( analogRead(A0) / 1024.0) * 5000 ) / 10;
derece=(analogRead(A1)/1023)*5000;//değeri mV’a dönüştr
sicaklik = derece /10,0; // mV’u sicakliğa dönüştür
for(i=0;i<100;i++) //Alınan mesajı anlamak için for döngüsü başlat
{
char m = sms.read(); //sms’den okuduğu sayıları m değişkenine ata
delay(4); //4 ms bekle
Serial.print(m); //Serial Monitor’e m değişkenini yaz
derece_dizisi[i]=m; // m değişkenini derece_dizisi dizisine ata
sms=derece_dizisi; //sms değişkenini derece_dizisi’ne eşitle
if(sms.indexOf(m)>=0) //sms değişkeninin içerisinde sayı ifadesi var ise
{
Serial.println(“Derece bilgisi okundu”); //Serial Monitor’e “Derece bilgisi okundu” yaz
if (sicaklik < m) {
digitalWrite(fan, LOW);//Sıcaklık 34 derecenin altında ise fan durur.
} else {
digitalWrite(fan, HIGH); //Sıcaklık 34 derecenin üstünde ise fan çalışır.
}
}
delay(1000);
String txtMsg = “”;
txtMsg = "İşlem Onaylandı ! ";
Serial.println(“SENDING”);
Serial.println(txtMsg);
sms.beginSMS(“05321234567”);//sms atılacak telefon numarası
sms.print(txtMsg);
sms.endSMS();
Serial.println(“\nCOMPLETE!\n”);
delay(100);
}
</gsm.h>