SMS Versand bei Änderung eines Zustands

OP #4073038
Lesenswert?
• ▲
▼
Guten Tag,

ich würde gerne versuchen eine SMS zu versenden sobald ein gewisser 
Zustand eintritt. Um einen Test zu starten lege ich einfach 5V auf drei 
digitale Eingänge des Arduinos um so die Zustände 1 und 0 zu erreichen.
Sobald ich nun einen Draht löse und somit den Zustand 0 erreiche würde 
ich gerne eine SMS versenden, allerdings habe ich in meinem Gedankengang 
bzw. in meinem Quellcode einen Fehler den ich übersehe, denn wenn ich 
den Draht löse passiert nicht sonderlich viel.
Über vorherige Programme habe ich getestet ob der Versand der SMS 
funktioniert, auch die Drähte usw. sind alle einwandfrei.

Verzeiht mir das umständliche programmieren...

Über eure Hilfe würde ich mich sehr freuen.

Microcontroller Arduino Mega + GPRS/GPS/GSM Shield
1
int result;
2
int Draht1 = 22;                               
3
int Draht2 = 24;                                
4
int Draht3 = 26;                                
5
int Zustand1;                                   
6
int Zustand2;
7
int Zustand3;
8

9
#include <gsm_gprs_gps_mega.h>
10
#include <SPI.h>
11

12
void setup()
13
{
14
  pinMode(Draht1, INPUT);                        
15
  pinMode(Draht2, INPUT);
16
  pinMode(Draht3, INPUT);
17
  
18
      GSM.begin(); 
19
}
20

21
void loop()
22
{       
23
  if(Zustand1 == 0)
24
  
25
  result = GSM.initialize("xxxx");                                   
26
  if(result == 0)                                                   
27
  {
28
    Serial.print  ("ME Init error: >");                            
29
    Serial.print  (GSM.GSM_string);                                 
30
    Serial.println("<");
31
  }
32
  
33
  result = GSM.sendSMS("+49160xxxxxxx","A1");          
34
  Zustand1 = digitalRead(Draht1); 
35
    
36
  if(result == 0)                                                  
37
  {
38
    Serial.print  ("SMS sending error: >");                          
39
    Serial.print  (GSM.GSM_string);                                  
40
    Serial.println("<");
41
  }                    
42
}
43

44

45
  if(Zustand2 == 0)
46
  {
47
  
48
  result = GSM.initialize("xxxx");                                   
49
  if(result == 0)                                                    
50
  {
51
    Serial.print  ("ME Init error: >");                              
52
    Serial.print  (GSM.GSM_string);                                  
53
    Serial.println("<");
54
  }
55
  
56
  result = GSM.sendSMS("+49160xxxxxxx","A2");           
57
  Zustand2 = digitalRead(Draht2); 
58
    
59
  if(result == 0)                                                 
60
  {
61
    Serial.print  ("SMS sending error: >");                         
62
    Serial.print  (GSM.GSM_string);                                  
63
    Serial.println("<");
64
  }
65
                      
66
}
67

68
  if(Zustand3 == 0)
69
  {
70
  
71
  result = GSM.initialize("xxxx");                                   
72
  if(result == 0)                                                    
73
  {
74
    Serial.print  ("ME Init error: >");                             
75
    Serial.print  (GSM.GSM_string);                                  
76
    Serial.println("<");
77
  }
78
  
79
  result = GSM.sendSMS("+49160xxxxxxx","A3");           
80
  Zustand3 = digitalRead(Draht3); 
81
    
82
  if(result == 0)                                                  
83
  {
84
    Serial.print  ("SMS sending error: >");                          
85
    Serial.print  (GSM.GSM_string);                                 
86
    Serial.println("<");
87
  }
88
                    
89
}
90
}
Angehängte Dateien:
Gast #4073068
Lesenswert?
• ▲
▼
Hallo Mario,
hast du oben wirklich deinen Code gezeigt, den du in den Controller 
geschrieben hast?
Ich bezweifel das grade stark, denn nach

Mario H. schrieb:
> void loop()
> {
>   if(Zustand1 == 0)
>
>   result = GSM.initialize("xxxx");
>   if(result == 0)
>   {
>     Serial.print  ("ME Init error: >");
>     Serial.print  (GSM.GSM_string);
>     Serial.println("<");
>   }
>
>   result = GSM.sendSMS("+49160xxxxxxx","A1");
>   Zustand1 = digitalRead(Draht1);
>
>   if(result == 0)
>   {
>     Serial.print  ("SMS sending error: >");
>     Serial.print  (GSM.GSM_string);
>     Serial.println("<");
>   }
> }

ist deine loop bereits zu Ende und der restliche Code steht in der 
Gegend rum.

Auch verstehe ich deine Abfragen nicht so ganz. Du fragst deine Variable 
Zustand zweimal auf Null ab, änderst sie aber nur an einer Stelle. 
Willst bei den beiden if-Abfragen wirklich immer nur wissen, ob dein GSM 
bereits initialisiert hat? Dann schreibe doch beide zusammen in eine 
If-Abfrage.

Du solltest alles in allem erstaml deinen Code sauber einrücken (nach 
jeder geschweiften Klammer auf einmal einrücken, bei jeder geschweiften 
zu wieder eine Ebene nach oben), das ganze dann nocheinmal testen und 
wenn es dann immer noch nicht so funktioniert, wie du dir das vorstellst 
den neuen Code hier nocheinmal posten, zusammen mit einer genauen 
Beschreibung, was du dir denkst, was das Programm eigentlich tun soll.

Gruß Helfer

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.