accenzione led via web
buona sera tutti , miei studi iniziano dare 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 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 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 singoli caratteri inviati
if (readstring.length() < 100)
{
readstring += c; //concatena 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("<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<br>");
}
else {
//operazioni da fare quando si clicca per spegnere ledon1:
digitalwrite(ledpin1, low );
client.println("stato: off<br>");
}
//crea pulsanti relativi led1
client.println("<a href='?l1=0'>spegni</a>");
client.println("<a href='?l1=1'>accendi</a>");
//inserisce il divisore
client.println("<br>______________________________<br>");
//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<br>");
}
else {
//operazioni da fare quando si clicca per spegnere ledon2:
digitalwrite(ledpin2, low);
client.println("stato: off<br>");
}
//crea pulsanti relativi led2
client.println("<a href='?l2=0'>spegni</a>");
client.println("<a href='?l2=1'>accendi</a>");
//inserisce il divisore
client.println("<br>______________________________<br>");
//ttolo led3
client.println("<h1>led 3</h1>");
//operazioni da fare quando si clicca per attivare ledon3:
if (ledon3) {
digitalwrite(ledpin3, high);
client.println("stato: on<br>");
}
else {
//operazioni da fare quando si clicca per spegnere ledon3:
digitalwrite(ledpin3, low);
client.println("stato: off<br>");
}
//crea pulsanti relativi led3
client.println("<a href='?l3=0'>spegni</a>");
client.println("<a href='?l3=1'>accendi</a>");
//chiude tag html per la pagina
client.println("</body></html>");
//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
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 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 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 singoli caratteri inviati
if (readstring.length() < 100)
{
readstring += c; //concatena 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("<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<br>");
}
else {
//operazioni da fare quando si clicca per spegnere ledon1:
digitalwrite(ledpin1, low );
client.println("stato: off<br>");
}
//crea pulsanti relativi led1
client.println("<a href='?l1=0'>spegni</a>");
client.println("<a href='?l1=1'>accendi</a>");
//inserisce il divisore
client.println("<br>______________________________<br>");
//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<br>");
}
else {
//operazioni da fare quando si clicca per spegnere ledon2:
digitalwrite(ledpin2, low);
client.println("stato: off<br>");
}
//crea pulsanti relativi led2
client.println("<a href='?l2=0'>spegni</a>");
client.println("<a href='?l2=1'>accendi</a>");
//inserisce il divisore
client.println("<br>______________________________<br>");
//ttolo led3
client.println("<h1>led 3</h1>");
//operazioni da fare quando si clicca per attivare ledon3:
if (ledon3) {
digitalwrite(ledpin3, high);
client.println("stato: on<br>");
}
else {
//operazioni da fare quando si clicca per spegnere ledon3:
digitalwrite(ledpin3, low);
client.println("stato: off<br>");
}
//crea pulsanti relativi led3
client.println("<a href='?l3=0'>spegni</a>");
client.println("<a href='?l3=1'>accendi</a>");
//chiude tag html per la pagina
client.println("</body></html>");
//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
controlla che cosa succede dal lato router. ad esempio, prova disabilitare il servizio dhcp e configura le macchine che parleranno all'arduino con ip statici. fai un ping dal router all'arduino.
se non va, prova ad escludere proprio il router e collegare direttamente l'arduino ad un pc con un cavo ethernet incrociato o attraverso uno switch. anche qui, usa indirizzi ip manuali.
ah, non credo che il problema sia questo, ma ricordati di chiudere tutti tag html, anche quelli individuali, così:
e se ti serve un divisore, prova ad usare <hr />
a proposito, è tutto più chiaro se qui sul forum formatti la parte codice con due tag "code", così:
...ma scrivi "code" con la "c", mi raccomando!
se non va, prova ad escludere proprio il router e collegare direttamente l'arduino ad un pc con un cavo ethernet incrociato o attraverso uno switch. anche qui, usa indirizzi ip manuali.
ah, non credo che il problema sia questo, ma ricordati di chiudere tutti tag html, anche quelli individuali, così:
code: [select]
bla, bla, bla.
<br />
bla, bla, bla...
e se ti serve un divisore, prova ad usare <hr />
a proposito, è tutto più chiaro se qui sul forum formatti la parte codice con due tag "code", così:
code: [select]
[kode]
prima riga del listato
seconda riga
......
n-esima riga
[/kode]
...ma scrivi "code" con la "c", mi raccomando!
Arduino Forum > International > Italiano > Generale (Moderator: leo72) > accenzione led via web
arduino
Comments
Post a Comment