Serial.println("Fehler - Lesen von SD: 'datalog.txt'");
156
}
157
158
last=now.minute();
159
160
Serial.println("");
161
}
162
163
if(inData=="c")
164
{
165
call("x");
166
}
167
168
if(inData.length()>4)
169
{
170
call(inData);
171
}
172
173
dataString="";
174
inData="";
175
delay(100);
176
177
}
wenn ich jetzt an diesem code aber was ändere, sei es eine zeile in
call() oder ich setzte, was ich gerne hätte folgenden code egal wohin in
meinen sketch, sagt er fehler beim sd karte lesen...
1
if((sensorValue>60)||(t>50)||h>80))
2
{
3
mySerial.print("AT+CMGF=1\r");
4
delay(100);
5
mySerial.println("AT+CMGS=\"xxxxxx\"");
6
delay(100);
7
mySerial.print("Temp: ");
8
mySerial.print(t);
9
mySerial.println(" C");
10
mySerial.print("Feuchte: ");
11
mySerial.print(h);
12
mySerial.println(" %");
13
mySerial.print("Gas: ");
14
mySerial.print(sensorValue);
15
mySerial.println(" C");
16
delay(100);
17
mySerial.println((char)26);
18
}
also auch wenn ich etwas unerhebliches ändere streikt er sofort, ich
verstehe es einfach nicht, vollkommen gleichgültig ob ich den code nach
oder vor der speicheranweisung setzte, sofort geht das speichern nicht
mehr...
kann mir da bitte einer helfen, vlt wirke ich ja irgendwie auf den
speicherprozess ein, allerdings reicht es auch schon nur in call() etwas
zu verändern, eine kleinigkeit und er streikt...
hilfe
Kann sein.
Muß nicht.
Wer soll das wissen? Eine vernünftige Beschreibung des Problems wäre
vielleicht hilfreich (bei "geht nicht" schließ eich zumindest gleich
wieder das Fenster und mache etwas interessanteres).
Ebenso welche Umgebung du hast, wie alle deine eigenen Quelltexte
aussehen, wo der Rest herkomt, ...
TC35 ist ein Siemens Handy? C+ eine Sparversion von C++?
Dateien *.h sind übrigens keine Libraries, sondern Headerdateien.
Libraries sind das, was der Linker später nach dem Kompilieren dazufügt.
Je nach Umgebung heißen die dann .o, .so, .lib, .a, .obj ...
das problem ist das er fehler beim lesen von sd ausgibt sobald ich die
gsm anweisung einpflege
ich arbeite mit der "Arduino 1.0.5-r2" sofware von arduino
das tc35 ist ein chip, ich habe das board erworben, hier ein link
http://www.ebay.de/itm/Neu-GSM-SIEMENS-TC35-SMS-drahtlos-Module-UART-232-Free-Voice-Adapter-/320856057878?pt=Elektromechanische_Bauelemente&hash=item4ab482e816
es geht halt nur darum das es so unlogisch ist, der code funktioniert ja
soweit, ändere ich eine kleinigkeit, sei es nur den inhalt eines print
befehls in call(), hat er wieder den fehler beim lesen der sd karte,
egal wo ich den gsm befehl einpflege, fehler beim lesen
der gsm befehl alleine funktioniert, deswegen vermute ich ja das die
sich in die quere kommen oder so, ich brauch aber beide, sonst m uss ich
n zweites board benutzen... :(
ok guter ansatz denke ich, nur warum is das nur wenn ich den gsm befehl
einsetze? die variablen sind ja schon beschrieben und wenn ichs flashe
sagt mein kompiler Binäre Sketchgröße: 24.426 Bytes (von einem Maximum
von 32.256 Bytes)
ich verstehe das jetzt so das der speicher überladen sein könnte, nur
habe ich die variablen t,h,sensorValue doch so wie so schon für die
andren funktionen beschrieben, oder versteh ich hier grad was falsch?
Hilgi schrieb:> ok guter ansatz denke ich, nur warum is das nur wenn ich den gsm befehl> einsetze?
Da kommen doch z.B. Strings dazu, oder nicht? Die müssen ja auch
irgendwo gespeichert werden.
die variablen sind ja schon beschrieben und wenn ichs flashe
> sagt mein kompiler Binäre Sketchgröße: 24.426 Bytes (von einem Maximum> von 32.256 Bytes)
Ich weiß nicht, was bei der Android-Nomenklatur eine "Binäre
Sketchgröße" ist, aber ich vermute, es geht um den Flash. RAM wird aber
auch noch benötigt, und wieviel das ist, weißt du zur Compilezeit nicht.
> ich verstehe das jetzt so das der speicher überladen sein könnte, nur> habe ich die variablen t,h,sensorValue doch so wie so schon für die> andren funktionen beschrieben, oder versteh ich hier grad was falsch?
PS: C++ ist case-sensitiv, also solltest du dir mal eine Tastatur mit
funktionierender Shift-Taste kaufen...
so also ich hab jetzt den code angepasst, das anrufen muss ja nicht
sein, jetzt siehts wie folgt aus UND funktioniert, ich danke allen für
die hinweise, das mit dem internen speicher scheint zutreffend gewesen
zu sein..
1
#include<SoftwareSerial.h>
2
SoftwareSerialmySerial(8,9);
3
4
StringinData="";
5
charlast;
6
#include<DHT.h>
7
#include<SD.h>
8
#define DHTPIN 2
9
#define DHTTYPE DHT22
10
DHTdht1(DHTPIN,DHTTYPE);
11
#include<SPI.h>
12
#include<Wire.h>
13
#include"RTClib.h"
14
RTC_DS1307RTC;
15
constintchipSelect=4;
16
constintanalogInPin=A0;
17
intsensorValue=0;
18
intsent=0;
19
20
voidsetup()
21
{
22
23
Wire.begin();
24
RTC.begin();
25
Serial.begin(9600);
26
Serial.println("Starte...");
27
28
mySerial.begin(9600);
29
mySerial.println("AT");
30
pinMode(10,OUTPUT);
31
32
if(!SD.begin(chipSelect))
33
{
34
Serial.println("Card failed, or not present");
35
return;
36
}
37
38
Serial.println("card initialized.");
39
Serial.println("");
40
delay(1000);
41
}
42
43
voidloop()
44
{
45
46
while(Serial.available()>0)
47
{
48
charrecieved=Serial.read();
49
inData+=recieved;
50
51
if(recieved=='\n')
52
{
53
Serial.print("Arduino Received: ");
54
Serial.print(inData);
55
}
56
}
57
58
DateTimenow=RTC.now();
59
60
StringdataString="";
61
62
sensorValue=analogRead(analogInPin);
63
64
floath=dht1.readHumidity();
65
66
floatt=dht1.readTemperature();
67
68
if(isnan(t)||isnan(h))
69
{
70
Serial.println("Fehler - Lesen von Luftfeuchte bzw. Temperatur");
ich schaffe es auch nicht. Alles was ich mit #include <DHT.h> eingebe.
kommt: fatal error: DHT.h: No such file or directory
compilation terminated. was muss ich machen?????