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...
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 :((
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

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62