Pages: [1]   Go Down
Author Topic: help etherneth shield  (Read 611 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salve
finlmente ho iniziato a smanettare con il mio nuovo arduino uno + etherneth shield.
guardate il mio codice:

Code:
#include <SPI.h>
#include <Ethernet.h>

int indexByteMessaggio;
byte inByte;
byte messaggio[] = {
  0, 0,};
 EthernetClient client;
byte mac[] = {  0x90, 0xA2, 0xDA, 0x0D, 0x77, 0x4b };
IPAddress server(192,168,0,253); // server cucina

void setup()
              {
  Serial.begin(9600);
 delay(1000);
//////////////////////////////////////////////////////////////////
 
   if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop()
    }
              }
void loop()
        {
 if (Serial.available() > 0) {
    inByte = Serial.read();
    if (inByte=='K'){
      indexByteMessaggio=0;
    }
    else
    if (inByte=='k'){
      indexByteMessaggio=0;
      }
    messaggio[indexByteMessaggio] = inByte;
    indexByteMessaggio = indexByteMessaggio + 1;}

 if (messaggio[0] == 'k' && messaggio[1] == 'x'){
  
     Serial.println("connecting...");
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
       for(;; ) ;
      }
if (client.connect(server, 80)){
    Serial.println("connected");
 
   client.println("GET /login.htm?usern=e&passw=e HTTP/1.0");
    client.println(); }
    messaggio[0]='0';
    messaggio[1]='0';
    
}

  if (messaggio[0] == 'k' && messaggio[1] == 'c'){
  
     Serial.println("connecting...");
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        // no point in carrying on, so do nothing forevermore:
        for(;; );
      }
if (client.connect(server, 80)){
    Serial.println("connected");
 
   client.println("GET /index.htm?out1on=ON HTTP/1.0");
    client.println(); }
    messaggio[0]='0';
    messaggio[1]='0';
    
}

 if (client.available()) {
    
   char c = client.read();
   Serial.print(c);}
            
}
inviando tramite seriale " kx " il server 192,168,0,253 mi risonde correttamente e visualizzo
la rispettiva pagina html

se invio una seconda volta il codice " kx " o " kc " si blocca tutto. Se premo reset sull'arduino
il primo codice inviato tutto procede regolarmente ma al secondo codice inviato al client arduino si blocca
tutto come mai?

ringrazio anticipatamente per l'aiuto
« Last Edit: September 27, 2012, 04:10:33 pm by UweFederer » Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2758
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

O non hai copiato tutto o nel loop non chiudi il client  client.stop()  il buffer assai limitato si satura e saluti.

a cosa serve nel setup questo?
Code:
if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop()
    }

perchè non c'e' ethernet.begin?
tralasciamo il fatto che non specifichi quale shield hai. Se c'e' la sd card vanno specificati i 2 pin di enable/disable 4-10

ciao
« Last Edit: September 27, 2012, 04:41:01 pm by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
grazie 1000 per l'aiuto.
Ho eth shield con sd - sono solo alla prima settimana devo ancora studiare un po'

Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2758
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Spiega meglio cosa vuoi fare sarà più facile aiutarti

Non capisco cosa centra la seriale con la pagina htm
Quote
inviando tramite seriale " kx " il server 192,168,0,253 mi risonde correttamente e visualizzo la rispettiva pagina html

???
La pagina dovrebbe visualizzarsi sul browser ed essere chiamata da li ...
ciao
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hai ragione scusa,
ho un display touch della screen demmel  ( http://www.elettroshop.com/dpp-bt3224z63511-bfh-modulo-grafico-ilcd-320x240/  ) che programmato a parte (non gestito da arduino) invia sulla seriale stringhe
tipo kc o kx a due caratteri. Volevo interfacciarlo con l'arduino uno + eth shield con sd card in modo che
ricevendo il carattere "kc" arduino comandi una scheda server (CONTROLLO ETHERNET 4 INGRESSI E 4 USCITE http://www.futurashop.it/index.html codice  7100-FT823M) tramite lan.
La sheda controllo ethernet riceve comandi tipo  htt://192.168.0.253index.htm?out1on=ON.
Con lo schetch che ho provato dopo ogni comando devo resettare l'arduino per continuare a funzionare.

« Last Edit: September 28, 2012, 07:49:05 am by sergioruello » Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6626
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Secondo me dovresti procedere in questo modo:
nel setup inizializzi la seriale e la scheda ethernet (con o senza dhcp)
nel loop invece controlli la ricezione della seriale e acquisisci il messaggio. Quando il messaggio è completo lo passi come parametro ad un "select case" che in base al codice letto richiama una funzione che invia i parametri alla seconda scheda ethernet.
Al posto del select case potresti crearti una sola funzione che accetta un parametro in ingresso e si comporta di conseguenza.

Esempio di pseudo codice:
Quote
#include bla bla bla

>> inizializzazioni variabili globali
bla bla bla

void setup() {
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
     Serial.println("Failed to configure Ethernet using DHCP");
     for(;; ) ;
  }
}

void loop() {
 if (Serial.available() > 0) {
   >> leggi il messaggio
 }

 if (messaggio == completo) {
 >> funzione invia testo via ethernet(messaggio)
 }
}

void invia testo via ethernet(messaggio){
 >> apri client bla bla bla
 >> invia il testo xxyyzz in base al comando ricevuto
 >> chiudi il client bla bla bla
 }
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1]   Go Up
Jump to: