Hallo!
Ich habe vor mit einem Arduino Due, einem Ethernet Shield, einem Access Point und einem LM35 die Temperatur meines Pools über ein WLan Netzwerk anzuzeigen. Wenn das einfache Anzeigen der Temperatur funktioniert will ich noch die RTC vom Due in mein Projekt mit einbeziehn.
Hier ist mein Code:
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <rtc_clock.h>
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0D, 0xD6, 0x03 };
IPAddress ip(192,168,0, 1);
int LM35();
void getTime();
//char date[100][50], time[100][50], temp[100][10];
//int hh,mm,ss,dow,dd,mon,yyyy;
int t[100];
byte i=0, j;
char gradC[5];
EthernetServer server(80);
RTC_clock rtc_clock(XTAL);
int correct_address=0;
void setup() {
pinMode(53,OUTPUT);
sprintf(gradC,"\337C");
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
rtc_clock.init();
rtc_clock.set_time(10, 29, 9);
rtc_clock.set_date(22, 10, 2012);
}
void loop() {
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.print("<head>");
client.print("<title>temp. via network</title>");
client.print("</head>");
client.print("<body>");
client.print("<div align=""center"">");
client.print("<h3>TEMPERATURE via WiFi</h3><hr />
<table border=""1"">");
client.print("<tr><td>Datum</td><td>Uhrzeit</td><td>T/°C</td></tr>");
getTemp();
for(j=0;j<=i;j++)
{
client.print("<tr><td>");
//client.print(date[j]);
client.print("</td><td>");
// client.print(time[j]);
client.print("</td><td>");
client.print(t[j]);
client.print("</td></tr>");
}
client.print("</table>");
client.print("
<small>Arduino Web Server to display temperature data via network
©Michael Köfinger</small>");
client.print("</div>");
client.print("</body>");
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
}
}
void getTemp()
{
if(i==10)
{i=0;}
//rtc_clock.get_time(&hh,&mm,&ss);
// rtc_clock.get_date(&dow,&dd,&mon,&yyyy);
// sprintf(date[i],"%02d.%02d.%02d",dd,mon,yyyy);
// sprintf(time[i], "%02d:%02d",hh,mm);
t[i] = LM35();
Serial.print("LM35: ");
Serial.println(t[i]);
//sprintf(tempC[i],"%d", t);
i++;
}
int LM35()
{
int mVolts=milliVolts();
int tempC=mVolts/10;
Serial.print("Temp: ");
Serial.println(tempC);
return tempC;
}
int milliVolts()
{
int mV=analogRead(A0)*(3300/1024);
Serial.print(mV);
Serial.println("mV");
return mV;
}
Mein Problem ist, dass ich keine Werte vom Sensor bekomme. Wenn ich allerdings nur folgenden Code verwende, funktioniert alles einfwandfrei.
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
getTemp();
}
void getTemp()
{
int mVolts=milliVolts();
int tempC=mVolts/10;
delay(500);
Serial.println("temperature");
Serial.print(tempC);
Serial.println("C");
Serial.println();
}
int milliVolts()
{
int mV=analogRead(A0)*(3300/1024);
return mV;
}
Wieso funktioniert der Sensor in Verbindung mit dem Web Server nicht?
Bin für jede Hilfe dankbar!
mfg
Michael