Go Down

Topic: TinyWebServer BlinkLed - ampliare i comandi e attivare 6 o + led (Read 3 times) previous topic - next topic

BaBBuino

E' proprio quello in vantaggio: l'essere un Web Server autonomo, indipendente da tutto.

Lo apri te, un tuo amico, un cinese, un negro delle isole Andamane a 9.000 Km di distanza, con un iPad, Android, iPhone, PC, MAC, Solaris, Unix, Alpha, Windows 95, WinCE o anche da una TV che abbia un Web Browser!

Ducker


E' proprio quello in vantaggio: l'essere un Web Server autonomo, indipendente da tutto.

Lo apri te, un tuo amico, un cinese, un negro delle isole Andamane a 9.000 Km di distanza, con un iPad, Android, iPhone, PC, MAC, Solaris, Unix, Alpha, Windows 95, WinCE o anche da una TV che abbia un Web Browser!

Buon giorno Babbuino.
...si ne sono sempre piu convinto è una invenzione veramente straordinaria.

veseo


Si, in effetti è molto più semplice installare un webserver su pc, in questo sono anche molto pratico, ma a questo punto arduino non ha più senso perché potrei comandare in remoto tutto tramite pc con altri accessori aggiuntivi hardware e software.
La comodità di Arduino, secondo me, è proprio quella che un piccolissimo hardware riesce a fare ciò che altrimenti sarebbe possibile solo con un pc, e forse fa anche molto di più, visto che non ne conosco tutte le capacità.
Ti ringrazio comunque


Non intendevo installare un webserver su un PC, il webserver resta arduino. Semplicemente la pagina può essere caricata in locale da un browser, scambiando con il webserver arduino solo i comandi HTTP per aggiornarne il contenuto.

Se usi TinyWebServer effettui due operazioni:
- Caricare la pagina HTML statica,
- Utilizzi delle chiamate AJAX al webserver (arduino) per animare la pagina statica.

Puoi saltare il primo passo, avendo la pagina direttamente sul PC.

TinyWebServer memorizza la pagina in una memoria flash, ma la libreria è comunque pesante.

Saluti,
Dario.
Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Ducker



Si, in effetti è molto più semplice installare un webserver su pc, in questo sono anche molto pratico, ma a questo punto arduino non ha più senso perché potrei comandare in remoto tutto tramite pc con altri accessori aggiuntivi hardware e software.
La comodità di Arduino, secondo me, è proprio quella che un piccolissimo hardware riesce a fare ciò che altrimenti sarebbe possibile solo con un pc, e forse fa anche molto di più, visto che non ne conosco tutte le capacità.
Ti ringrazio comunque


Non intendevo installare un webserver su un PC, il webserver resta arduino. Semplicemente la pagina può essere caricata in locale da un browser, scambiando con il webserver arduino solo i comandi HTTP per aggiornarne il contenuto.

Se usi TinyWebServer effettui due operazioni:
- Caricare la pagina HTML statica,
- Utilizzi delle chiamate AJAX al webserver (arduino) per animare la pagina statica.

Puoi saltare il primo passo, avendo la pagina direttamente sul PC.

TinyWebServer memorizza la pagina in una memoria flash, ma la libreria è comunque pesante.

Saluti,
Dario.


Scusami Dario, ma TinyWebServer non carica le pagine HTML poste nella micro sd sulla shield?

veseo

Si, scritto così non è chiaro, non facevo riferimento alla memoria flash dell'AVR ma a quella della SD.

Saluti,
Dario.
Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

BaBBuino

Per Duker: dopo cena provo a pulire il codice e a postartelo.

Ducker


Per Duker: dopo cena provo a pulire il codice e a postartelo.

Ok, se riesci sono qui
Grazie

BaBBuino


BaBBuino

Questa è una versione intermedia. Ci metto 200 anni a ripulirlo tutto. Guardalo bene  e chiedimi di volta in volta cosa non capisci.

Code: [Select]
#include <LED.h>
#include <SPI.h>
//#include <WString.h>
#include <Ethernet.h>
#include <avr/pgmspace.h>

//--------Sensore Digitale Temperatura e Umidità


#define DHT11_PIN 4      // ADC0

byte read_dht11_dat()
{
 byte i = 0;
 byte result=0;
 for(i=0; i< 8; i++)
 {
   while(!(PINC & _BV(DHT11_PIN)));  // wait for 50us
   delayMicroseconds(30);
   if(PINC & _BV(DHT11_PIN))
     result |=(1<<(7-i));
   while((PINC & _BV(DHT11_PIN)));  // wait '1' finish
   }
   return result;
}
//--------Fine Sensore T&H


//prog_char string_0[] PROGMEM = "<form><html><body><h2>Controllo Salotto</h2><font size= 4><form method=GET>";
//prog_char string_0[] PROGMEM = "<html><body><h2>Controllo Salotto</h2><font size= 4><form method=GET>";
prog_char string_0[] PROGMEM = "";
prog_char string_1[] PROGMEM = "<tr><td><input type=submit name=b1 value=Luce_1></td><td>";
prog_char string_2[] PROGMEM = "<tr><td><input type=submit name=b2 value=Luce_2></td><td>";
prog_char string_3[] PROGMEM = "<tr><td><input type=submit name=b3 value=Luce_3></td><td>";
prog_char string_4[] PROGMEM = "<tr><td><input type=submit name=b4 value=AUX></td><td>";
prog_char string_5[] PROGMEM = "<tr><td><input type=submit name=Up value=Alza&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp></td><td>";
//<tr><td><input type=submit name=Stop value=Stop&nbsp&nbsp&nbsp></td><td>";
prog_char string_6[] PROGMEM = "<tr><td><input type=submit name=Down value=Abbassa></td><td>";
prog_char string_7[] PROGMEM = "</form>";
//prog_char string_7[] PROGMEM = "</form>";
prog_char string_8[] PROGMEM = "<img src='data:image/gif;base64,R0lGODlhEAAQALMAABgDBKyqrHV2dZUCBOnf3X8CBPsCBCIhIvwWFPz9/L27vfbu7BUSE/kSFPwgILS1tCH5BAAAAAAALAAAAAAQABAAAwR5MEnJqp04sSO6eM/BZFwHnECgKMfEmEAjG6c6JhxgOEtCNAYaS2Pi+YDB1KMiiPUIjmCwAFAwY76odEAliJoNAkIa5AK8jIAOuTUvRA812TAwE944ha5cL1DxGgpqAH5+JwQaEwcrgwAMdzgZGysElW83GRobB5wZEQA7'/>";
//prog_char string_8[] PROGMEM = "<img src=data:image/gif;base64,R0lGODlhEAAQAKIAAAD/AACGAISGhMbHxv///wAAAAAAAAAAACwAAAAAEAAQAAADUEiq1b6QNEHFGC2W6srFyyY0QAk0V8GM5WJ6qlgA7ptuc20GME4TplKAJ/EBg4BhDIYUKosp5JAokWB2U6LKiilkM1XGpxPSeAYQcKRIhiQAADs= alt=Acceso ></td><td>";
prog_char string_9[] PROGMEM = "<img src=data:image/gif;base64,R0lGODlhEAAQAKIAAP////f398DAwICAgAAAAAAAAAAAAAAAACwAAAAAEAAQAAADTRiq1L4wtEGHEC2S6sjFyzY0H+aB0ngB7OcRqcoC5Tl5cymot9CWFAKgR9MFhy/dhYO8nD7MoQQDrYykU5O1wYIxXI6ZN3SaISPkTiQBADs= alt=Spento ></td><td>";
prog_char string_10[] PROGMEM = "";
//prog_char string_10[] PROGMEM = "</form></body></html>";
prog_char string_11[] PROGMEM = "";
//prog_char string_11[] PROGMEM = "<meta http-equiv=refresh content=5 >";
prog_char string_12[] PROGMEM = "";
prog_char string_13[] PROGMEM = "Sensore Finestra";

PROGMEM const char *string_table[] = // change "string_table" name to suit
{
string_0,
string_1,
string_2,
string_3,
string_4,
string_5,
string_6,
string_7,
string_8,
string_9,
string_10,
string_11,
string_12,
string_13,
};

char buffer[400]; // make sure this is large enough for the largest string it must hold

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 4 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };

String inString = String(50);

Server server(8000);

LED led1 = LED(3);
LED led2 = LED(4);
LED led3 = LED(5);
LED led4 = LED(6);

LED led5 = LED(1);
LED led6 = LED(2);
//LED led7 = LED(8);
//LED led8 = LED(9);

String msg="";
//int tam=0;
int st1=9,st2=9,st3=9,st4=9,st5=9,st6=9;//,st7=9,st8=9;
//--------------------------------------------------
//int outPin = 9; // pin attuatore
//char link[]="http://www.giannifavilli.it"; //link
String readString; //string
boolean LEDON = false; // flag status attuatore

/*termistore
float temp; // variabile da calcolare
float tempPin = 2;   // pin analogico IN temperature sensor*/
int tempreg = 22; // temperatura di controllo in celsius
/*end termistore*/

/*fotoresistore*/
int light; // variabile da calcolare
int photoresistor = 3; // pin analogico IN fotoresistore
/*end fotoresistore*/

//-----------------------------------------------------
// Sensore Infrarossi
int SensoreIn = 7;
//int SensoreOut = 6;
int valSens;
boolean SensoreToggle=true;
//---------------------------------------
//Sensore Magnetico
int Finestra = 8;
int valFin;

void setup()
{
//----Sensore T&H
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);

//-----Fine Sensore T&H
 
Serial.begin(9600);
Ethernet.begin(mac, ip,gateway,subnet);
server.begin();
Serial.println("Serial READY");
Serial.println("Ethernet READY");
Serial.println("Server READY");

 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT);
//---------------------
//pinMode(outPin, OUTPUT);
//pinMode(ledPinlux, OUTPUT);

pinMode(Finestra, INPUT);
pinMode(SensoreIn, INPUT);
//pinMode(SensoreOut, OUTPUT);

//---------------------
}

void loop()
{
 
//----Sensore T&H
 byte dht11_dat[5];
 byte dht11_in;
 byte i;// start condition
// 1. pull-down i/o pin from 18ms
 PORTC &= ~_BV(DHT11_PIN);
 delay(18);
 PORTC |= _BV(DHT11_PIN);
 delayMicroseconds(40);
 DDRC &= ~_BV(DHT11_PIN);
 delayMicroseconds(40);
 
 dht11_in = PINC & _BV(DHT11_PIN);
 if(dht11_in)
 {
//   Serial.println("dht11 start condition 1 not met");
   DDRC |= _BV(DHT11_PIN);
   PORTC |= _BV(DHT11_PIN);

   return;
 }
 delayMicroseconds(80);
 dht11_in = PINC & _BV(DHT11_PIN);
 if(!dht11_in)
 {
//    Serial.println("dht11 start condition 2 not met");
   DDRC |= _BV(DHT11_PIN);
   PORTC |= _BV(DHT11_PIN);

   return;
 }
 
 delayMicroseconds(80);// now ready for data reception
 for (i=0; i<5; i++)
 {dht11_dat[i] = read_dht11_dat();}

 DDRC |= _BV(DHT11_PIN);
 PORTC |= _BV(DHT11_PIN);
//  byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];// check check_sum
//  if(dht11_dat[4]!= dht11_check_sum)
//  {
//    Serial.println("DHT11 checksum error");
//  }
//  Serial.print("Current humdity = ");
//  Serial.print(dht11_dat[0], DEC);
//  Serial.print(".");
//  Serial.print(dht11_dat[1], DEC);
//  Serial.print("%  ");
//  Serial.print("temperature = ");
//  Serial.print(dht11_dat[2], DEC);
//  Serial.print(".");
//  Serial.print(dht11_dat[3], DEC);
//  Serial.println("C  ");
 
//----Fine Sensore T&H
 
//-------------------Sensore Magnetico Finestra e Infrarossi
 valFin = digitalRead(Finestra);
 valSens = digitalRead(SensoreIn);
 
 

 //--------------------------------
 /*inizio calcolo temperatura*/
 //temp = ((5 * analogRead(tempPin) * 100.0 ) / 1024); // Codice ottimizzato
// temp = analogRead(tempPin);           //read the value from the sensor
//  temp = (5.0 * temp * 100.0)/1024;

 /*
 (grazie giulio400 e jumpjack)
 volt = ( analogRead(tempPin) * 5) / 1024; // calcolo il valore letto e lo trasformo in valore di tensione
 temp = (volt - 0.5) * 100; // conversione MCP9700A
 */
 /*fine calcolo temperatura*/

 /*inizio luce*/
 light = analogRead(photoresistor);
 light = constrain(light, 0, 1023); // limiti dei valori tra 0 e 100
 //light = map(light, 0, 150, 255, 0);
 /*fine luce*/

//-------------------Interruttore presenza
if (SensoreToggle == true){
 if (valSens == HIGH){
 //digitalWrite(SensoreOut, HIGH);
 led1.on();
 if(led1.getState()) st1=8;
 else st1=9;
 }
 else {    
//  digitalWrite(SensoreOut, LOW);  
 led1.off();
 
 if(led1.getState()) st1=8;
 else st1=9;  
 }
}  
//--------------------------Start Client
Client client = server.available();

int led=0;
if (client) {

// an http request ends with a blank line
boolean current_line_is_blank = true;
while (client.connected()) {

if (client.available()) {

char c = client.read();
// if we've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so we can send a reply
if (inString.length() < 50){
inString.concat(c);

}
if (c == '\n' && current_line_is_blank) {
 
/*-------------------------------
 Serial.print(readString);
       if(readString.indexOf("L=1") > 0) {// lettura del valore se il LED si deve accendere
         // il led sarà acceso
         digitalWrite(outPin, HIGH); // accendo il led
         LEDON = true;
         Serial.print("ON pin ");
         Serial.println(outPin);
         }
         else
         {
         //il led sarà spento
         digitalWrite(outPin, LOW); //sengo il led
         LEDON = false;
         Serial.print("OFF pin ");
         Serial.println(outPin); }
//-------------------------------------*/
 
/* if(inString.indexOf("b1")>0)
{

led1.toggle();
if(led1.getState()) st1=8;
else st1=9;
led=1;
}*/

 
// else {led1.on();}



BaBBuino

2a parte (che ovviamente va incollata sotto la 1a)
Code: [Select]
//---------------------Luci

if(inString.indexOf("b1")>0){

led1.toggle();
SensoreToggle = !SensoreToggle;
if(led1.getState()) st1=8;
else st1=9;
led=1;

}

if(inString.indexOf("b2")>0){

led2.toggle();
if(led2.getState()) st2=8;
else st2=9;
led=2;

}

if(inString.indexOf("b3")>0){

led3.toggle();
if(led3.getState()) st3=8;
else st3=9;
led=3;
}

if(inString.indexOf("b4")>0){

led4.toggle();
if(led4.getState()) st4=8;
else st4=9;
led=4;
}

//----------------------------Pulsanti tapparella
if((inString.indexOf("Up")>0)&&(led6.getState()==false)){

led5.toggle();
if(led5.getState()) st5=8;
else st5=9;
led=5;
}
/*
if(inString.indexOf("Stop")>0){

led5.off();
led6.off();
if(led5.getState()) st5=8;
else st5=9;
if(led6.getState()) st6=8;
else st6=9;

}
*/

if((inString.indexOf("Down")>0)&&(led5.getState()==false)){
 
led6.toggle();
if(led6.getState()) st6=8;
else st6=9;
led=6;
}
/*
if(inString.indexOf("msg")){

strcpy(msg,inString.substring(inString.indexOf("g")+2,inString.indexOf(" H")));
Serial.print("msg: ");
//Serial.println(msg);
}
*/

// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

//client.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html lang=\"it\">");
//client.println();
         //Scrivo l'intestazione
         client.println("<html>");
     //   client.println("<META http-equiv=REFRESH content=3; url=/ >");
     //  client.println("<meta http-equiv=\"Refresh\" content=\"2; URL=192.168.1.4>");

         client.println("<style> a:link{font:8pt/11pt arial; color:red} a:visited {font:8pt/11pt verdana; color:blue} body {font:8pt/11pt verdana; color:black; background-color:lightgray} </style>");
         client.println("<div style='width:360px; height:640px;'>"); //risoluzione per nokia 5800 640x360
         client.println("<title>Salotto</title>");
     //    client.println("<meta http-equiv=\"Refresh\" content=\"5; URL=192.168.1.4>");
         client.println("</head>");
         client.println("<body>");
                 
         client.println("<h2>Controllo Luci Salotto</h2>");
         client.println("<font size= 4><form method=GET>");        
         client.println("<table width=200>");
         
         
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[0]))); // Necessary casts and dereferencing, just copy.
client.println( buffer );
for (int i = 1; i < 5; i++)
{
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[i]))); // Necessary casts and dereferencing, just copy.
client.println( buffer );
switch(i){
         client.println("B");
case 1: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st1]))); client.println( buffer ); break;
case 2: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st2]))); client.println( buffer ); break;
case 3: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st3]))); client.println( buffer ); break;
case 4: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st4]))); client.println( buffer ); break;
//case 5: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st5]))); client.println( buffer ); break;
//case 6: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st6]))); client.println( buffer ); break;
//case 7: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st6]))); client.println( buffer ); break;
}

delay(30);

}
client.println("</table>");
client.println("<hr />");


BaBBuino

3a parte (da incollare sotto la 2a):

Code: [Select]
//--------------------------------------------
client.println("<h2>Controllo Tapparelle</h2>");
client.println("<font size= 4><form method=GET>"); 
client.println("<table width=200>");
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[5]))); client.println( buffer );
//client.println("B");
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st5]))); client.println( buffer );
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[6]))); client.println( buffer );
//client.println("B");
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st6]))); client.println( buffer );
client.println("</table>");
//------------------------------Sensore Finestra
//client.println("<br><br><br><br>");



/*
client.println("");
client.println("<h2>STATUS SENSORI</h2><hr />");
        //Scrive sul browser il valore del termistore
        client.print("Temperatura = <strong>");
        client.print(temp);
        client.println("</strong>&deg;C");
     
      if (temp < tempreg) {
        // scrive sul web freddo se il valore del termistore è basso
        client.print("<p><strong>FREDDO</strong></p>");
        }
      else {
        // scrive sul web caldo se il valore del termistore è alto
        client.print(" <p><strong>CALDO</strong></p>");
    }

        //Scrive sul browser il valore della fotoresistenza
            client.println("<p>Lux = ");
            client.print(analogRead(light));
            client.println("<br /></p>");
            */
//----------------------------------------           
client.println("");
client.println("<hr /><h2>STATUS SENSORI</h2>");
// client.println("<SCRIPT language=JavaScript>document.write('<form><input type=button value=\"Refresh\" onClick=\"document.location.reload()\"></form>')</SCRIPT>");
client.println("Sensore Finestra");

  if(valFin == HIGH){
//  digitalWrite(outPin, HIGH);
//  client.print();
     strcpy_P(buffer, (char*)pgm_read_word(&(string_table[8]))); client.println( buffer ); //break;
   }
   else {
   //  digitalWrite(outPin, LOW);
     strcpy_P(buffer, (char*)pgm_read_word(&(string_table[9]))); client.println( buffer );// break;
     }


        //Scrive sul browser il valore del termistore
        client.println("<br /><br /><p>Temperatura = <strong>");
  //      temp = ((5 * analogRead(tempPin) * 100.0 ) / 1024); // Codice ottimizzato
  //      delay(30);
        client.print(dht11_dat[2], DEC);
        client.print(".");
        client.print(dht11_dat[3], DEC);
     //   client.println(temp);
        client.print(" &deg;C </strong></p>");
      if (dht11_dat[2] < tempreg) {
       
        client.println("<strong>FREDDO</strong><br />");
        }
      else {
       
        client.println("<strong>CALDO</strong><br />");
         }

//--------------------Umidità
  client.print("<br /><p>Umidit&agrave; = <strong>");
  client.print(dht11_dat[0], DEC);
  client.print(".");
  client.print(dht11_dat[1], DEC);
  client.print("% </strong></p> ");
//-------------------Fine Umidità 
// client.print();
        //Scrive sul browser il valore della fotoresistenza
            client.println("<br /><p>Lux = <strong>");
            light = analogRead(photoresistor);
            client.println(light);
            client.println("</strong></p>");
//----------------------------------------
           
      if (/*light > 100 &&*/ light < 100) {
          // scrive sul web luce se il valore della fotoresistenza è alto
          client.print("<p><strong>BUIO</strong></p>");
        }
      else if (light > 100 && light < 200 )  {
          // scrive sul web buio se il valore della fotoresistenza è basso
          client.print(" <p><strong>OMBRA</strong></p>");
        }
         else if (light > 200 && light < 500)  {
          // scrive sul web buio se il valore della fotoresistenza è basso
          client.print(" <p><strong>LUCE </strong></p>");
        }
         else if (light > 500)  {
          // scrive sul web buio se il valore della fotoresistenza è basso
          client.print(" <p><strong>LUMINOSO</strong></p>");
        }
         else  {
          // scrive sul web buio se il valore della fotoresistenza è basso
          client.print(" <p><strong>MOLTO LUMINOSO</strong></p>");
        }
        // link per aggiornare pagina e valori
   //     client.print("<h3>AGGIORNA SENSORI: <a href=''>CHECK</a></h3><hr />");
   
    client.print("<br /><h3>Aggiorna Sensori: <a href=/>CHECK</a></h3><hr />");
  //  client.print("<script language = \"Javascript\">");
  //  client.print("<INPUT TYPE=\"button\" VALUE=\"aggiorna\"");
  //  client.print("onClick=\"document.location.reload()\">)");
 
//   client.println("<script language=Javascript>document.write('<form><INPUT TYPE=\"button\" VALUE=\"Aggiorna\" ONCLICK=\"document.location.reload()\">");
  //  client.println("</form>')</script>");
   
 
    //client.println("<a href=/>aggiorna</a>");
//delay(20);
   //     client.println("<h3>CONTROLLO Luci Salotto</h3>");
    //    client.println("<hr />");
//       client.print("<h3>PIN control n. ");
   //     client.print(outPin);
   //     client.println("</h3>");
   //     client.println("<br />");
        //scrivo il LED status
   //     client.print("<font size='5'>PIN status: ");
   //       if (LEDON) {
   //           client.println("<span style='color:red; font-weight:bold;'>ON</span></font>");
   //         }
   //         else
     //       {
       //       client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
         // }
      //  client.print("<h4><a href='/?L=1'>ACCENDI</a> | <a href='/?L=0'>SPEGNI</a></h4>");

        // firma
     //   client.println("<hr />");
        client.print("<h6>Powered By<h5>Guido</h5></h6>");
      //  client.println("<hr />");

        // chiudo il div
     //  client.println("</div>");
//------------------------------------------------

        //  client.println("<meta http-equiv=\"refresh\" content=\"2;url=\"/>");

          client.println("</div>");
          client.println("</body>");
          client.println("</html>");         
         
         
break;
}
if (c == '\n') {
// we're starting a new line
current_line_is_blank = true;
} else if (c != '\r') {
// we've gotten a character on the current line
current_line_is_blank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
inString = "";
readString="";
client.stop();
}

/*       if (temp < tempreg) { // accende o spengo un led se la temperatura è più bassa di quella di controllo
          digitalWrite(ledPintemp, HIGH); //accendo
          Serial.print("ON pin "); //scrivo in console
          Serial.println(ledPintemp); //scrivo in console
        }
        else {
          digitalWrite(ledPintemp, LOW); //spengo
          Serial.print("OFF pin "); //scrivo in console
          Serial.println(ledPintemp); //scrivo in console
        }

        if (light < 150) { // accende o spengo un led se la c'è luce
          digitalWrite(ledPinlux, HIGH); // accendo
          Serial.print("ON pin "); //scrivo in console
          Serial.println(ledPinlux); //scrivo in console
        }
        else {
          digitalWrite(ledPinlux, LOW); //spengo
          Serial.print("OFF pin "); //scrivo in console
          Serial.println(ledPinlux); //scrivo in console
        }*/
}

Ducker

Ciao Babbuino, sei stato gentilissimo.
ho provato a inserire il codice nel software e fatta la verifica mi da questo errore:
'LED?' does not name a type
cosa vuol dire?

BaBBuino

Che ti manca la libreria "LED.h"

Copia questo codice in un file che chiami LED.h:

Code: [Select]
/*
||
|| @file LED.h
|| @version 1.1
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Provide an easy way of making/using LEDs
|| #
||
|| @license
|| | Copyright (c) 2009 Alexander Brevig. All rights reserved.
|| | This code is subject to AlphaLicence.txt
|| | alphabeta.alexanderbrevig.com/AlphaLicense.txt
|| #
||
*/

#ifndef LED_H
#define LED_H

#include "WProgram.h"

class LED{
  public:
    LED(uint8_t ledPin);
bool getState();
    void on();
void off();
void toggle();
void blink(unsigned int time, byte times=1);
void setValue(byte val);
void fadeIn(unsigned int time);
void fadeOut(unsigned int time);
  private:
bool status;
uint8_t pin;
};

extern LED DEBUG_LED;

#endif

/*
|| @changelog
|| | 1.1 2009-05-07 - Alexander Brevig : Added blink(uint,byte), requested by: Josiah Ritchie - josiah@josiahritchie.com
|| | 1.1 2009-04-07 - Alexander Brevig : Altered API
|| | 1.0 2009-04-17 - Alexander Brevig : Initial Release
|| #
*/


E poi ti serve anche il file LED.cpp (copi dentro un file di Notepad e poi lo rinomini LED.cpp)

Code: [Select]
/*
||
|| @file LED.cpp
|| @version 1.1
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Provide an easy way of making LEDs
|| #
||
|| @license
|| | Copyright (c) 2009 Alexander Brevig. All rights reserved.
|| | This code is subject to AlphaLicence.txt
|| | alphabeta.alexanderbrevig.com/AlphaLicense.txt
|| #
||
*/

#include "LED.h"

LED::LED(uint8_t ledPin){
this->pin=ledPin;
this->status=LOW;
pinMode(this->pin,OUTPUT);
}

bool LED::getState(){ return status; }

void LED::on(void){
digitalWrite(pin,HIGH);
this->status=true;
}

void LED::off(void){
digitalWrite(pin,LOW);
this->status=false;
}

void LED::toggle(void){
status ? off() : on();
}

void LED::blink(unsigned int time, byte times){
for (byte i=0; i<times; i++){
toggle();
delay(time/2);
toggle();
delay(time/2);
}
}

//assume PWM
void LED::setValue(byte val){
analogWrite(pin,val);
val<=127 ? this->status=false : this->status=true;
}

//assume PWM
void LED::fadeIn(unsigned int time){
for (byte value = 0 ; value < 255; value+=5){
analogWrite(pin, value);
delay(time/(255/5));
}
on();
}

//assume PWM
void LED::fadeOut(unsigned int time){
for (byte value = 255; value >0; value-=5){
analogWrite(pin, value);
delay(time/(255/5));
}
off();
}

extern LED DEBUG_LED(13);

/*
|| @changelog
|| | 2009-04-07 - Alexander Brevig : Altered API
|| | 2009-04-17 - Alexander Brevig : Initial Release
|| #
*/


Che devi mettere dentro una cartella che chiamera LED dentro la cartella di librerie di arduino.

Esempio:

C:\arduino-0023\libraries\LED

Dentro la cartella LED ci butti dentro i due files LED.h e LED.cpp

Al prossimo riavvio dell'IDE, hai anche queste librerie a disposizione.

Ducker

Ciao Babbuino,
sono riuscito a provare solo oggi il tutto.
Ho caricato le librerie come mi hai detto, ma ora mi dice:

Error compiling.

...e poi una serie di string rosse del tipo seguente

LED\LED.cpp.o: In function `LED::getState()':
C:\Arduino\arduino-0023\libraries\LED/LED.cpp:28: multiple definition of `LED::getState()'

BaBBuino

Probabilmente c'è un errore nel copia/incolla.

Scarica da qua la libreria LED e installatela nella cartella delle librerie:

http://arduino.cc/playground/uploads/Code/LED.zip

Go Up