Hi, I've an arduino + Ethernet shield.
I uploaded this sketch:
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#define tempPin A0
#define fotoresistenza A1
const int ledPinLuminosita=5;
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xAC, 0x68 };
//creo una variabile char per memorizzare i byte letti dal client
char Data_RX;
//creao un oggetto server che rimane in ascolto sulla porta
//specificata
EthernetServer server(80);
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int ledPin9 = 9; // LED pin
String readString;
boolean LEDON1 = false;
boolean LEDON2 = false;
boolean LEDON3 = false;
boolean LEDON4 = false;
int val_Adc = 0;
//variabile temperatura celsius
float tempC = 0;
//variabile temperatura fahrenheit
float tempF = 0;
//variabile temperatura kelvin
float tempK = 0;
void setup()
{
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(A1, INPUT);
pinMode(ledPinLuminosita, OUTPUT);
Serial.begin(9600);
if(!Ethernet.begin(mac)) Serial.println("dhcp failed");
else {
Serial.print("IP is ");
Serial.println(Ethernet.localIP());
}
server.begin();
}
void loop()
{
int val = analogRead(fotoresistenza); // salvo il valore fotoresistenza dentro alla variabile val
if(val<500) //se il valore letto dalla fotoresistenza (luminosità) è basso, accendo il led
digitalWrite(ledPinLuminosita,HIGH);
else
digitalWrite(ledPinLuminosita,LOW); //altrimenti lo spengo (o lo lascio spento)
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("L4=1") > 0)
{
LEDON4 = 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;
}
else if (readString.indexOf("L4=0") > 0)
{
LEDON4 = 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>");
//refresh per le temperature
client.print("<meta http-equiv='refresh' content='2'>");
client.println("<title>Arduino Home</title></head><body>");
client.println("<table border=""2"" width=""100%"" height=""100%""><tr><td align=""center"">");
//TITOLO LED 1
client.println("<h1>LUCE CUCINA</h1>");
//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON1:
if (LEDON1) {
digitalWrite(ledPin6, HIGH);
client.println("Stato: ON
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L1=0'>SPEGNI</a>");
client.println("<a href='L1=1'>ACCENDI</a>");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON1:
digitalWrite(ledPin6, 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>");
}
//TTOLO LED2
client.println("<h1>LUCE SALOTTO</h1>");
//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:
if (LEDON2) {
digitalWrite(ledPin7, HIGH);
client.println("Stato: ON
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L2=0'>SPEGNI</a>");
client.println("<a href='L2=1'>ACCENDI</a>");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:
digitalWrite(ledPin7, LOW);
client.println("Stato: OFF
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L2=0'>SPEGNI</a>");
client.println("<a href='L2=1'>ACCENDI</a>");
}
//TTOLO LED3
client.println("<h1>LUCE BAGNO</h1>");
//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:
if (LEDON3) {
digitalWrite(ledPin8, HIGH);
client.println("Stato: ON
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L3=0'>SPEGNI</a>");
client.println("<a href='L3=1'>ACCENDI</a>");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:
digitalWrite(ledPin8, LOW);
client.println("Stato: OFF
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L3=0'>SPEGNI</a>");
client.println("<a href='L3=1'>ACCENDI</a>");
}
//TTOLO LED4
client.println("<h1>LUCE CAMERA DA LETTO</h1>");
//OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:
if (LEDON4) {
digitalWrite(ledPin9, HIGH);
client.println("Stato: ON
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L4=0'>SPEGNI</a>");
client.println("<a href='L4=1'>ACCENDI</a>");
}
else {
//OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:
digitalWrite(ledPin9, LOW);
client.println("Stato: OFF
");
//CREA I PULSANTI RELATIVI A LED1
client.println("<a href='L4=0'>SPEGNI</a>");
client.println("<a href='L4=1'>ACCENDI</a>");
}
client.print("</td>");
client.print("<td align=""center"">");
//init variabile
val_Adc = analogRead(tempPin);
//eseguo un ciclo
for(byte Ciclo = 0; Ciclo<100; Ciclo++)
{
//acquisisco il valore e lo sommo alla
//variabile
val_Adc += analogRead(tempPin);
//questo ritardo serve per dare il tempo
//all' ADC di eseguire correttamente
//la prossima acquisizione
}
//°C = ((valoreADC * PrecisioneADC) – TensioneZeroGradi) / stepGradoTensione
//eseguo la media dei 100 valori letti
float media=val_Adc / 100;
//Temperatura di rilevazione: -40°C ~ 125°C
//Tipo di uscita: tensione
//Alimentazione di tensione: 2.7 V ~ 5.5 V
//Precisione: ±2°C
float tensione = media * 5.0;
tensione/=1024.0;//tensione in mV
//temperatura in Celsius
tempC=(tensione - 0.5) * 100;
//invio i dati al computer
Serial.print(tempC); Serial.println(" gradi C");
tempF = (tempC * 9.0 / 5.0) + 32.0;
Serial.print(tempF); Serial.println(" gradi F");
tempK = tempC + 273.15;
Serial.print(tempK); Serial.println(" gradi K");
//output
client.print("<h1>TEMPERATURA</h1>");
client.print("
Temperatura in gradi Celsius: ");
client.print(tempC);
client.print("
");
client.print("
Temperatura in gradi Fahrenheit: ");
client.print(tempF);
client.print("
");
client.print("
Temperatura in gradi Kelvin: ");
client.print(tempK);
client.println("
");
client.print("</td>");
client.print("</tr></table>");
//CHIUDE I TAG HTML PER LA PAGINA
client.println("</body></html>");
//SI PREPARA PER UNA NUOVA ISTRUZIONE
readString="";
//TERMINA LE OPERAZIONI CLIENTE
client.stop();
}
}
}
}
}
initially it works, but now it can't get IP. The serial monitor doesn't write any message.
Why?