Ciao a tutti,
Progetto: Il progetto è praticamente basato su una pagina web in cui ci sono dei semplici bottoni, che se vengono cliccati, i led collegati ai pin, si accendono in corrispondenza ai bottoni.
Problema: Tutto va bene quando nella pagina html ci sono solo 3 bottoni. Il problema inizia all'aggiunta del quarto bottone, in quel punto l'arduino stampa caratteri insensati nella pagina, che il browser non riesce ad interpretare come pagina html. Chiedo gentilmente aiuto da voi esperti, perchè il programma sembra del tutto logicamente giusto. Attendo con ansia, grazie!!!!
[b]Il codice[/b]:
[sub]#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
//DETERMINA IL MAC E L'IP DELLA PAGINA WEB
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0E, 0xA7, 0x44};
IPAddress ip(192,168,1,9);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255, 255, 255, 0);
//PORTA DI COMUNICAZIONE
EthernetServer server(80);
//SCRIVE IL NUMERO DI PIN CORRISPONDENTE AI LED
int s[7] = {2,3,4,5,6,7};
//LUNGHEZZA DELLA STRINGA INVIATA
String readString = String(30);
//IMPOSTA ALL'AVVIO I LED SPENTI
boolean l[7] = {false};
void setup(){
Ethernet.begin(mac, ip);
for(int i=0; i<7;i++) {
pinMode(s[i],OUTPUT);
}
Serial.begin(9600);
}
void loop(){
EthernetClient client = server.available();
if (client) //SE ESISTE UN CLIENTE
{
while (client.connected()) // SE IL CLIENTE E' CONNESSO
{
if (client.available()) //SE E' TUTTO OK PER INIZIARE
{
char c = client.read(); //LEGGI I SINGOLI CARATTERI INVIATI
if (readString.length() < 100)
{
readString += c; //CONCATENA I CARATTERI
}
if (c == '\n') //VEDE SE C'E' IL CARATTERE DI FINE STRINGA, PER INDIVIDUARE CHE E' FINITA
{
if(readString.indexOf("L1=0") > 0) {
l[0] = false;
}
if(readString.indexOf("L1=1") > 0) {
l[0] = true;
}
if(readString.indexOf("L2=0") > 0) {
l[1] = false;
}
if(readString.indexOf("L2=1") > 0) {
l[1] = true;
}
if(readString.indexOf("L3=0") > 0) {
l[2] = false;
}
if(readString.indexOf("L3=1") > 0) {
l[2] = true;
}
if(readString.indexOf("L4=0") > 0) {
l[3] = false;
}
if(readString.indexOf("L4=1") > 0) {
l[3] = true;
}
if(readString.indexOf("L5=0") > 0) {
l[4] = false;
}
if(readString.indexOf("L5=1") > 0) {
l[4] = true;
}
if(readString.indexOf("L6=0") > 0) {
l[5] = false;
}
if(readString.indexOf("L6=1") > 0) {
l[5] = true;
}
if(readString.indexOf("L7=0") > 0) {
l[6] = false;
}
if(readString.indexOf("L7=1") > 0) {
l[6] = true;
}
//CREA LA PAGINA HTML (VERRA' AGGIORNATA AD OGNI ISTRUZIONE NUOVA)
client.println("<!DOCTYPE html>");
client.println("<html><head><title> DomoticHome </title>");
client.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://casadomotica.host22.com/style1100.css\"/> ");
client.println("</head><body>");
client.println("<table align=\"center\" class=\"ab\"> <tr><td width=\"1155\" align=\"center\">");
client.println("<img src=\"http://casadomotica.host22.com/ti.png\">");
client.println("</td></tr></table>");
client.println("<table align=\"center\" class=\"ab\" cellpadding=\"20\"> <tr><td width=\"750\">");
client.println("<img class=\"img1\" src=\"http://casadomotica.host22.com/piantina.png\">");
client.println("</td><td width=\"205\">");
//Prendi immagini html per immagine accesa
if (l[0]) {
digitalWrite(s[0], HIGH);
client.println("<img class=\"img1\" src=\"http://casadomotica.host22.com/corridoio.png\">");
}
else {
digitalWrite(s[0], LOW );
}
if (l[1]) {
digitalWrite(s[1], HIGH);
client.println("<img class=\"img1\" src=\"http://casadomotica.host22.com/cucina.png\">");
}
else {
digitalWrite(s[1], LOW );
}
if (l[2]) {
digitalWrite(s[2], HIGH);
client.println("<img class=\"img1\" src=\"http://casadomotica.host22.com/bagno.png\">");
}
else {
digitalWrite(s[2], LOW );
}
/* if (l[3]) {
digitalWrite(s[3], HIGH);
client.println("<img class=\"img1\" src=\"http://casadomotica.host22.com/camera_1.png\">");
} else {
digitalWrite(s[3], LOW);
}
if (l[3]) {
digitalWrite(s[3], HIGH);
client.println("<img class=\"img1\" src=\"http://casadomotica.host22.com/camera_1.png\">");
} else {
digitalWrite(s[3], LOW);
}*/
//Pulsanti premuto e non premuto
if (l[0]) {
client.println("<a href='?L1=0'><img src=\"http://casadomotica.host22.com/pcos.png\"></a>");
}
else {
client.println("<a href='?L1=1'><img src=\"http://casadomotica.host22.com/pco.png\"></a>");
}
if (l[1]) {
client.println("<a href='?L2=0'><img src=\"http://casadomotica.host22.com/pcus.png\"></a>");
}
else {
client.println("<a href='?L2=1'><img src=\"http://casadomotica.host22.com/pcu.png\"></a>");
}
if (l[2]) {
client.println("<a href='?L3=0'><img src=\"http://casadomotica.host22.com/pbs.png\"></a>");
}
else {
client.println("<a href='?L3=1'><img src=\"http://casadomotica.host22.com/pb.png\"></a>");
}
/*if (l[3]) {
client.println("<a href='?L4=0'><img src=\"http://casadomotica.host22.com/pn1s.png\"></a>");
}
else {
client.println("<a href='?L4=1'><img src=\"http://casadomotica.host22.com/pn1.png\"></a>");
}*/
client.println("</td></tr></table>");
client.println("</body></html>");
//SI PREPARA PER UNA NUOVA ISTRUZIONE
readString="";
//TERMINA LE OPERAZIONI CLIENTE
client.stop();
}
}
}
}
}[/sub]