arduino gsm control

merhaba ben dün elektrik elektronik mühendisliğinden mezun oldum. bitirme projesi olarak arduino ile sms atarak tarla sulama projesi yapmıştık. şimdi bir müşteri buldum bunu tarlasına yaptırmak istiyor. fakat ben yaptığımda ledleri yakıp söndürdüm ve yağmur sensörü kullanmıştım. fakat müşteri mesaj atıldığında motorun çalısmasını ve 2 saat sonra kendilğinden kapanmasını istiyor. motoru çalıştırma ve geri bildirimleri ben hallederim. fakat 2 saatlik süreyi nasıl ayarlayacağımı bilmiyorum. aslında yaparım ama 2 saat içerisinde müşteri kapatmak isterse bu nasıl olacak. delay 2 saat deyip bunu yapamayız zannediyorum bu konuda yardımcı olursanız sevinirim. birde dalgıç pompa kntrol edilecek bunu da arduino çıkışından röle ile 220v süreceğim onunlada kontaktör tetiklemeyi planlıyorum sizce bu mantık uygunmudur yoksa daha kullanışlı bir yöntem mevcutmudur. teşekkürler

1 sn lik delay koy bunu 2 saat olana kadar say her saniye veya gerektiği zamanda sms gelmişmi kontrol edersin

diplomayı okula geri bırak yada otur biraz daha düşün :slight_smile:

:slight_smile: zor aldık zaten bitirdin bizi sende hemen. biraz yazayım programı buraya atarım

okoman tam anlamadım demek istediğini ama deniycem

timer interruptı kullanarak yapabilirsin. Aşağıdaki kodda her bir saniyede timer interrupt çalışır. her defasında i’yi bir artırıp 7200 (2 saatin saniye cinsinden değeri) olunca istediğin işlemi yaptırırsın. Böyle yaparak arduino nu istediğin diğer işlemler için kullanırken arkada tarafta sistem kontrol eder yoksa delay kullanarak yapmak çok da verimli olmaz. ///////////////// int i=0; void setup() { Serial.begin(9600); cli(); //interreptlar durduruluyor //-------------------------- //Timer1 1Hz’ e ayarlanıyor //registerler sıfırlanır TCCR1A = 0;// TCCR1A register 0’lanıyor TCCR1B = 0;// TCCR1B register 0’lanıyor TCNT1 = 0;//sayac değeri 0’la // OCRxA karşılaştırma registeri 1Hz değer için ayarlanıyor //16 MHz osilatör,1Hz timer1 ın çalışma frekansı,1024 prescalar OCR1A = 15624; // = (16*10^6) / (1*1024) - 1 (değer 65536 dan küçük) TCCR1A |= (1 << WGM12); // CTC mod açılıyor. TCCR1B |= (1 << CS12) | (1 << CS10); // CS10 ve CS12 bitleri 1024 prescaler için ayarlanıyor TIMSK1 |= (1 << OCIE1A); // timer karşılaştırma interruptı aktifleştiriliyor //interreuptlar aktif sei(); } ISR(TIMER1_COMPA_vect) { //Timer1 interrupt ı 1Hz de tetikleniyor. if (i==7200) { //BURAYA YAPTIRMAK İSTEDEĞİN İŞLEMİN KODLARINI YAZ i=0; } else i++; } void loop() { }