problema log sdcard + ethernet (urgente)
salve tutti sto cercando di realizzare un progetto per gli esami e sono arrivato un punto che non riesco andare avanti.. ho realizzato uno sketch che comanda due led da remoto e verifica la temperatura se essa sale sopra 28 gradi parte una ventola.. e al di sotto la ventola si spegne o resta spenta fin qui tutto bene sono riuscito far tutto.. ora vorrei inserire un rtc ds1307 e creare un log sulla sd con ora data e temperatura convertita...e postare lo stesso log sulla pagina(per farvi capire dentro la textarea che ho gia preparato...) il problema e che appena ci provo mi si impianta tutto sia la pagina html che il log non va piu niente la pagina non risulta disponibile e il log non funziona.... potete aiutarmi e urgente ho poco tempo (
questo e lo sketch che funziona senza log...
questo e lo sketch che funziona senza log...
code: [select]
#include <spi.h>
#include <ethernet.h>
byte mac[] = { mio mac }; //mac ethernet shield
byte ip[] = { 192,168,1,2 }; // indirizzo ip che verrà assegnato ad arduino
ethernetserver server(80); // porta di comunicazione
string readstring;
byte led_1 = 2;
byte led_2 = 3;
int inpin = a0;
int fun=5;
float temp = 0; // variabile temperatura
int funfunction=0;
void setup()
{
ethernet.begin(mac, ip);
pinmode(led_1, output);
pinmode(led_2, output);
pinmode(5, output); // pin per la ventola
serial.begin(9600);
}
void loop(){
usefun();
temp = ( (5.0 * analogread(inpin)*100.0) / 1023.0);
serial.println(analogread(inpin));
ethernetclient client = server.available();
if (client) {
boolean currentlineisblank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readstring.concat(c);
if (c == '\n' && currentlineisblank) {
if(readstring.indexof("on_1") > 0)digitalwrite(led_1, high);
if(readstring.indexof("off_1") > 0) digitalwrite(led_1, low);
if(readstring.indexof("on_2") > 0) digitalwrite(led_2, high);
if(readstring.indexof("off_2") > 0) digitalwrite(led_2, low);
// pagina html
client.println("http/1.1 200 ok");
client.println("content-type: text/html");
client.println();
client.print("<body style='background-color:green'>");
client.print("<html><head><title>controllo serra arduino</title><meta http-equiv='content-type' content='text/html; charset=iso-8859-1' ></head><body>");
client.print("<font color='white'><h1 align='center'> pagina di controllo </h1></font>");
client.print("<br><br>");
client.print("<table border='1'align='center'>");
client.print("<tr>");
client.print("<td align='center'>");
client.print("<strong>led 1</strong>");
client.print("</td>");
client.print("<td align='center'>");
if (digitalread(led_1)== true) client.print("<input disabled=\"disabled\" maxlength=\"55\" size=\"10\" value=\"on\" style=\"background-color:#00ff00\"/>");
else client.print("<input disabled=\"disabled\" maxlength=\"55\" size=\"10\" value=\"off\" style=\"background-color:#ff0000\"/>");
client.print("</td>");
client.print("<td align='center'>");
client.print("<strong >log temperatura</strong>");
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td>");
client.print("<input type=\"button\" style=\"width:100px; height:55px\" value=\"on\" onclick =\" location.href='/?on_1'\">");
client.print("</td>");
client.print("<td>");
client.print("<input type=\"button\" style=\"width:100px; height:55px\" value=\"off\" onclick =\" location.href='/?off_1'\">");
client.print("</td>");
client.print("<td rowspan='5'>");
client.print("<textarea readonly style=\"width:300px; height:200px\" >");
client.print("</textarea>");
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td align='center'>");
client.print("<strong>led 2</strong>");
client.print("</td>");
client.print("<td align='center'>");
if (digitalread(led_2)== true) client.print("<input disabled=\"disabled\" maxlength=\"55\" size=\"10\" value=\"on\" style=\"background-color:#00ff00\"/>");
else client.print("<input disabled=\"disabled\" maxlength=\"55\" size=\"10\" value=\"off\" style=\"background-color:#ff0000\"/>");
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td>");
client.print("<input type=\"button\" style=\"width:100px; height:55px\" value=\"on\" onclick =\" location.href='/?on_2'\">");
client.print("</td>");
client.print("<td>");
client.print("<input type=\"button\" style=\"width:100px; height:55px\" value=\"off\" onclick =\" location.href='/?off_2'\">");
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td align='center'>");
client.print("<strong>stato ventola</strong>");
client.print("</td>");
client.print("<td td align='center'>");
if( temp >28) client.print ("<input disabled=\"disabled\" maxlength=\"55\" size=\"10\" value=\"on\" style=\"background-color:#00ff00\"/>");
else client.print("<input disabled=\"disabled\" maxlength=\"55\" size=\"10\" value=\"off\" style=\"background-color:#ff0000\"/>");
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td align='center'>");
client.print("<strong>temperatura</strong>");
client.print("</td>");
client.print("<td align='center'>");
client.print("<textarea readonly cols='12' row='2' style='overflow:hidden;'>");
client.print( temp);
client.print("</textarea>");
client.print("</td>");
client.print("</tr>");
client.print("</table>");
readstring="";
delay(1);
client.flush();
client.stop();
}
}
}
}
}
void usefun(){
if(( temp = (( 5.0 * analogread(inpin)*100.0 )/ 1023.0)>28)&&(funfunction==0))
{
funfunction=1;
digitalwrite(fun,high);
}
if(( temp = (( 5.0 * analogread(inpin)*100.0 )/ 1023.0)<=28)&&(funfunction==1))
{
funfunction=0;
digitalwrite(fun,low);
}
}
queste invece sono le righe che aggiungo per provare far funzionare la sd card con rtc... ma non mi va niente (
non ho idea di come far visualizzare invece il file nella pagina html help...
code: [select]
#include <wire.h>
#include "rtclib.h"
#include <sd.h>
#define cs 4
rtc_ds1307 rtc;
char buffer[40];
int tempoprima= 0;
file myfile;
nel setup metto questo
serial.print("initializing sd card...");
pinmode(cs, output);
if (!sd.begin(cs)) {
serial.println("initialization failed!");
return;
}
serial.println("initialization done.");
wire.begin();
rtc.begin();
if (! rtc.isrunning()) {
serial.println("rtc not running!");
rtc.adjust(datetime(__date__, __time__))
poi ho provato creare una funziona chiamata log facendo un if con millis
if(millis()-tempoprima>900000)
{
tempoprima=millis();
sdwrite();
}
e nella funzione metto questo
sdwrite(){
datetime = rtc.now();
sprintf(buffer, "%02d/%02d/%d %02d:%02d:%02d %d %d %d %d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), analogread( a0 ), analogread( a1 ), analogread( a2 ), analogread( a3 ) );
serial.println( buffer );
myfile = sd.open("dati.log", file_write);
if (myfile) {
myfile.println(buffer);
myfile.close();
} else {
serial.println("error opening dati.log");
}
}
non ho idea di come far visualizzare invece il file nella pagina html help...
Arduino Forum > International > Italiano > Software (Moderator: leo72) > problema log sdcard + ethernet (urgente)
arduino
Comments
Post a Comment