Salve a tutti.
Sono in possesso della scheda arduino uno r3 con assemblata la scheda ethernet shield.
Il mio problema è che entrando nella configurazione interna del router 192.168.1.1, il dispositivo arduino non viene visto in nessuna porta lan.
Il router è un Thomson tg 585 . Con linea telefonica Telecom.
Però caricando lo schema che ora vi allego, posso comunque accedere ad un indirizzo web per poter far accendere 2 led e funziona tutto bene. Però se volessi usare questo sketch con ip pubblico per controllo remoto,non lo posso fare perchè non mi vede nulla collegato sulle lan apparte il pc che uso.
Allego lo 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;
//LUNGHEZZA DELLA STRINGA INVIATA
String readString = String(30);
//IMPOSTA ALL'AVVIO I LED SPENTI
boolean LEDON1 = false;
boolean LEDON2 = 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("L1=0") > 0)
{
LEDON1 = false;
}
else if (readString.indexOf("L2=0") > 0)
{
LEDON2 = 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("<html><head></head><body>");
//TITOLO LED 1
client.println("<h1>Led 1</h1>");
//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("<a href='?L1=0'>SPEGNI</a>");
client.println("<a href='?L1=1'>ACCENDI</a>");
//INSERISCE IL DIVISORE
client.println("
______________________________
");
//TTOLO LED2
client.println("<h1>Led 2</h1>");
//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("<a href='?L2=0'>SPEGNI</a>");
client.println("<a href='?L2=1'>ACCENDI</a>");
//CHIUDE I TAG HTML PER LA PAGINA
client.println("</body></html>");
//SI PREPARA PER UNA NUOVA ISTRUZIONE
readString="";
//TERMINA LE OPERAZIONI CLIENTE
client.stop();
}
}
}
}
}
Questo è lo sketch che ho attualmente caricato sull'arduino.
Spero nei vostri utili aiuti ringraziando anticipatamente.
Saluti.
Enzo.