Probleme TC35 & Arduino Mega

OP #3769133
Lesenswert?

Hallo,

ich hab ein kleines Problem mit mein Programm...
Ich möchte mir gerne eine SMS senden wenn mein verwendeter Lichtsensor 
ein bestimmten Wert erreicht hat... Leider funktioniert es nicht.
Wenn ich nur ein Programm auf mein Arduino lade was den Sensor 
auswertet, funktioniert es ohne Probleme. Auch wenn ich ein Programm 
lade das mir nur eine SMS schicken soll funktioniert es auch ohne 
Probleme.
Wenn ich die Programme aber, wie angehängt, "miteinander verknüpfe", 
bekomme ich keine SMS. Das Modul (TC35) bucht sich noch nicht einmal 
mehr ein. Ich hab auch schon einen größeren Kondensator verbaut, da ich 
gelesen habe das es da gerne zu Problemen kommt. Auch ein vernünftiges 
Netzteil habe ich besorgt (5V, 2.5A Ausgang)...
Langsam weiß ich mir keinen Rat mehr und hoffe auf Eure Hilfe... Hab ich 
da was falsches Programmiert??

Vielen Dank im voraus
Mario
Angehängte Dateien:
#3769265
Lesenswert?

Mario I. schrieb:
> Hab ich da was falsches Programmiert??

So auf den ersten Blick stufe ich Dein Programm auf irgendwas zwischen 
"hanebüchener Schwachsinn" bis "bedenklich" ein.

Das Prädikat "bedenklich" verteile ich, wenn der Code für ein "Leonardo" 
oder "Micro" Board sein soll.

Das Prädikat "hanebüchener Schwachsinn" erfüllt der Code für Boards wie 
UNO, MEGA, MINI PRO, NANO und vergleichbare.

So ganz möchte ich mich nicht festlegen, ohne das Board zu wissen, für 
das der Code verwendet werden soll.
OP #3769280
Lesenswert?

Danke für die Hinweise...

Ich habe festgestellt wenn ich im Setup die Zeile "Serial.begin(9600);" 
auskommentiere, bekomme ich die SMS wenn der Sensor den Wert erreicht. 
Aber wenn ich ihn nicht initialisiere, wie bekommt er denn die werte und 
wie kann ich das überprüfen??

Danke...
Bin erst am Anfang meiner "Programmier Karriere"
OP #3769304
Lesenswert?

@Jürgen S.

würde gern "bedenklich" bzw "hanebüchener Schwachsinn" gegen fachwissen 
tauschen.

ich stecke noch ganz in den kinderschuhen was das programmieren angeht. 
das programm stellt nur ein test bzw einen anfang da, um zu probieren 
was man mit den gps modul alles machen kann...
wie müsste man deiner meinung nach das programm umschreiben?? (final 
möchte ich damit später ein garagentor steuern... es handelt sich um ein 
arduino mega board)
#3769314
Lesenswert?

Mario I. schrieb:
> es handelt sich um ein arduino mega board

Beim MEGA Board bilden Pin-0 und -1 die serielle Schnittstelle "Serial".

Der hanebüchene Schwachsinn liegt darin: Du kannst an denselben Pins auf 
dem Board nicht noch eine zweite "SoftwareSerial" Schnittstelle 
definieren. Das beißt sich bis hin zum Kurzschluss auf den seriellen 
Leitungen, wenn Du Dein GSM-Modul da anschließt und den Sketch so laufen 
läßt.


Auf einem MEGA-Board lasse SoftwareSerial weg und nimm stattdessen eine 
der drei übrigen HardwareSerial-Schnittstellen, die auf dem MEGA 
vorhanden sind, z.B. Serial1. Pins für Serial1 siehe RX1/TX1 auf dem 
Board.

Dein Programm umgeschrieben auf Serial1 würde dann so aussehen:
1
// für Arduino MEGA-Board
2
int ledPin=13;
3
int sensorwert=0;
4
int i=0;
5

6
void setup()
7
{
8
  Serial.begin(9600);    // "Serieller Monitor" auf dem PC
9
  Serial1.begin(19200);  // verbunden mit GSM-Modem
10
  delay(2000);
11
  pinMode(ledPin,OUTPUT);
12
}
13

14
void loop()
15
{
16
  sensorwert = analogRead (A0);
17
  Serial.println(sensorwert);
18
  
19
  if(sensorwert >= 800 && i == 0)
20
  {
21
    sendTextMessage();
22
    i=1;
23
  }
24
  delay(4000);
25
}
26
void sendTextMessage()
27
{
28
  Serial1.print("AT+CPIN=xxxx\r");
29
  delay (6000);
30
  
31
  Serial1.print("AT+CMGF=1\r");
32
  delay(4000);
33
  
34
  Serial1.print("AT+CMGS=0179xxxxxxx\r");
35
  delay(4000);
36
  digitalWrite(ledPin,HIGH);      //nur zur kontrolle ob programm in fkt springt
37
  Serial1.print("Licht ist an!");
38
  delay(100);
39
  Serial1.print((char)26);
40
  delay (4000);
41
}

Keine Ahnung, ob das funktioniert. Aber der hanebüchene Schwachsinn, mit 
der Kurzschluss-Doppelbelegung von Pin-0 und -1 ist schon mal weg.

Und der "serielle Monitor" ist dann auch funktionstüchtig, z.B. um 
Debug-Ausgaben über Serial zum PC zu senden.

P.S.: Wenn Du in der loop alle ca. zweiundzwanzig Sekunden eine SMS 
senden möchtest, weil ein Wert überschritten ist, brauchst Du eine 
SMS-Flat, sonst wird es teuer!
OP #3769383
Lesenswert?

Vielen Dank für die schnelle Antwort!!
Ich werde es Morgen sofort probieren!!
Das könnte es gewesen sein. Sorry für meine Anfängerfehler...
Und, das Programm schickt nur eine sms wenn der Wert erstmalig 
überschritten wird, da i auf 1 gesetzt wird in der if abfrage wenn eine 
sms geschickt wird. ich weiß, ist auch quatsch, aber es dient nur zum 
austesten...
danke nochmal!!
#3769416
Lesenswert?

Mario I. schrieb:
> Und, das Programm schickt nur eine sms wenn der Wert erstmalig
> überschritten wird, da i auf 1 gesetzt wird in der if abfrage wenn eine
> sms geschickt wird.

Verstehe, also einmalig nach jedem Reset.

Allerdings solltest Du berücksichtigen, dass das Board jedesmal nach dem 
Power-On, nach dem Hochladen eines Sketches und jedesmal beim Öffnen des 
Seriellen Monitors ein Reset macht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren