Hallo,
ich habe/hatte es mittlerweile geschafft (it Eurer Hilfe) Daten des Arduino an die DB zu senden (über ein php-script)
damit alles ein wenig geordneter aussieht wollte ich bestimmte Teile des Programms in Funktionen auslagern.
Dabei verstehe die Möglichkeiten nicht ganz.
einmal kann ich eine Funktion mit
int meinefunktion()
{
machwas;
}
oder mit
void meinefunktion1()
{
machwas;
}
aufrufen
bei mir gibt es jedoch hier und da Probleme und ich weiss nicht wieso.
hier mal der Code
#include <Ethernet.h>
#include <SPI.h>
// Tiny RTC (DS1307)
#include <Wire.h> // I2C-Bibliothek einbinden
#include "RTClib.h" // RTC-Bibliothek einbinden
RTC_DS1307 RTC; // RTC Modul
//Room_Sesnor DHT22
#include "DHT.h"
#define DHTPIN 9
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22
DHT dht(DHTPIN, DHTTYPE);
//Ethernet_Shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 105 };
byte server[] = { 192, 168, 2, 104 }; // Google
//Connect mysql
char url[] = "/test_db/db_conect.php";
char key[] = "meinpasswort";
char host[] = "192.168.2.104"; // DOMAIN eingeben!
EthernetClient client;
#define echoPin 4 // Echo Pin
#define trigPin 3 // Trigger Pin
#define LEDPin 13 // Onboard LED
int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
void setup()
{
// Initialisiere I2C
Wire.begin();
//Clock
// Initialisiere RTC
RTC.begin();
if (! RTC.isrunning()) {
// Aktuelles Datum und Zeit setzen, falls die Uhr noch nicht läuft
RTC.adjust(DateTime(__DATE__, __TIME__));
Serial.println("Echtzeituhr wurde gestartet und auf Systemzeit gesetzt.");
}
else {
Serial.println("Echtzeituhr laeuft bereits.");
}
Ethernet.begin(mac, ip);
Serial.begin(9600);
client.connect(server, 80);
Serial.println("DHT22 - Test!");
dht.begin();
delay(1000);
// Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}
void loop()
{
//clock
DateTime now=RTC.now(); // aktuelle Zeit abrufen
show_time_and_date(now); // Datum und Uhrzeit ausgeben
delay(10000); // 30 Sekunden warten bis zur nächsten Ausgabe
// Room_temp_and_hum
float hum = dht.readHumidity(); //Luftfeuchte auslesen
float temp = dht.readTemperature(); //Temperatur auslesen
Serial.println("connecting...");
float Water_1_sum;
//float Water_1;
Water_1_sum=Water_1();
Serial.println("jetzt der wasserstand");
Serial.println(Water_1_sum);
Serial.println("jetzt die temp ==>:");
Serial.println(temp);
Serial.println("jetzt die Luftfeuchte ==>:");
Serial.println(hum);
daten_senden(url,temp,hum,key,host);
}
void show_time_and_date(DateTime datetime){
// Wochentag, Tag.Monat.Jahr
//Serial.print(get_day_of_week(datetime.dayOfWeek()));
//Serial.print(", ");
if(datetime.day()<10)Serial.print(0);
Serial.print(datetime.day(),DEC);
Serial.print(".");
if(datetime.month()<10)Serial.print(0);
Serial.print(datetime.month(),DEC);
Serial.print(".");
Serial.println(datetime.year(),DEC);
// Stunde:Minute:Sekunde
if(datetime.hour()<10)Serial.print(0);
Serial.print(datetime.hour(),DEC);
Serial.print(":");
if(datetime.minute()<10)Serial.print(0);
Serial.print(datetime.minute(),DEC);
Serial.print(":");
if(datetime.second()<10)Serial.print(0);
Serial.println(datetime.second(),DEC);
}
void daten_senden(char url, float temp, float hum, char key, char host){
if (client.connected()) {
Serial.println("connected");
//client.println();
//float W_Dist;
// float W_1_Dist;
// int a;
//Serial.println(W_Dist());
Serial.print("Verbunden...sende Daten...");
client.print("GET ");
client.print(url);
client.print("?TEMP=");
client.print(temp);
client.print("&");
client.print("&HUM=");
client.print(hum);
client.print("&func=1");
client.print("&TEST=1");
client.print("&key=");
client.print(key);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(host);
client.println();
Serial.println("fertig!");
} else {
Serial.println("connection failed");
}
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
void Water_1()
{
int duration;
float distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(500);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2.0) / 29.1;
//Serial.print(distance);
//Serial.println(" cm");
return distance;
}
bei void Water_1
bringt er stets Fehler
wieso?
er bring: variable or field Water_1 declared void
Grüße Jürgen