buona sera a tutti , i miei studi iniziano a dare i frutti desiderati grazie ad arduino.
ho solo un problemino che mi rivolgo in mani esperte come voi.
seguo una guida su youtube su come accendere 2 led via browser.
fin qui tutto bene
(Arduino) Ethernet Shield + Led control from browser (LAN local IP)
il problema e che molte volte non si accede alla pagina web (quasi sempre ) infatti mi sono collegato la 1 volta con 2 led e funzionava (anche se male ) e un altra volta quando ho compilato la sketch con 3 led ( da solo )
come mai non riesco ad entrare nell arduino tramite browser??
ecco la sketch:
#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
//DETERMINA IL MAC E L'IP DELLA PAGINA WEB
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = {
192, 168, 1, 239};
//PORTA DI COMUNICAZIONE
EthernetServer server(272);
//SCRIVE IL NUMERO DI PIN CORRISPONDENTE AI LED
int ledPin1 = 9;
int ledPin2 = 8;
int ledPin3 = 7;
//LUNGHEZZA DELLA STRINGA INVIATA
String readString = String(30);
//IMPOSTA ALL'AVVIO I LED SPENTI
boolean LEDON1 = false;
boolean LEDON2 = false;
boolean LEDON3 = false;
void setup(){
Ethernet.begin(mac, ip);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, 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=1") > 0) //IMPOSTA UNA VARIABILE DI TIPO BOLEANA (VERO-FALSO) PER GLI STATI DEL LED
{
LEDON1 = true;
}
else if (readString.indexOf("L2=1") > 0)
{
LEDON2 = true;
}
else if (readString.indexOf("L3=1") > 0)
{
LEDON3 = true;
}
else if(readString.indexOf("L1=0") > 0)
{
LEDON1 = false;
}
else if (readString.indexOf("L2=0") > 0)
{
LEDON2 = false;
}
else if (readString.indexOf("L3=0") > 0)
{
LEDON3 = false;
}
//CREA LA PAGINA HTML (VERRA' AGGIORNATA AD OGNI ISTRUZIONE NUOVA)
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("");
//TITOLO LED 1
client.println("
Led 1
");//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON1:
if (LEDON1) {
digitalWrite(ledPin1, HIGH);
client.println("Stato: ON
");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON1:
digitalWrite(ledPin1, LOW );
client.println("Stato: OFF
");
}
//CREA I PULSANTI RELATIVI A LED1
client.println("SPEGNI");
client.println("ACCENDI");
//INSERISCE IL DIVISORE
client.println("
");
//TTOLO LED2
client.println("
Led 2
");//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:
if (LEDON2) {
digitalWrite(ledPin2, HIGH);
client.println("Stato: ON
");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:
digitalWrite(ledPin2, LOW);
client.println("Stato: OFF
");
}
//CREA I PULSANTI RELATIVI A LED2
client.println("SPEGNI");
client.println("ACCENDI");
//INSERISCE IL DIVISORE
client.println("
");
//TTOLO LED3
client.println("
Led 3
");//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON3:
if (LEDON3) {
digitalWrite(ledPin3, HIGH);
client.println("Stato: ON
");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON3:
digitalWrite(ledPin3, LOW);
client.println("Stato: OFF
");
}
//CREA I PULSANTI RELATIVI A LED3
client.println("SPEGNI");
client.println("ACCENDI");
//CHIUDE I TAG HTML PER LA PAGINA
client.println("");
//SI PREPARA PER UNA NUOVA ISTRUZIONE
readString="";
//TERMINA LE OPERAZIONI CLIENTE
client.stop();
}
}
}
}
}
la mia procedura e semplice :
collego l' arduino alla com 11 (virtuale)
incollo la sketch
tolgo usb
attendo 10 secondi
ricollego il tutto
ma dal web non entra
192.168.1.239:273 (impossibile visualizzare la pagina)
start
esegui
cmd
ping 192.168.1.239 (perfetto tutt ok)
arpo il modem telecom ma negli accessori collegati non vedo l' arduino e normale