Go Down

Topic: aduino ethernet shield (Read 3 times) previous topic - next topic

fafidio

[Altro problema: tu vuoi inviare una richiesta get OGNI loop(), quindi migliaia al secondo (se non milioni), capirai bene che questa cosa saturerà la tua banda (niente di grave, il codice funzionerà ma il tuo router non sarà di certo felice)...
la cosa migliore sarebbe inviare una richiesta quando il pulsante cambia di stato (quindi ti salvi da qualche parte il valore dell'ultima richiesta, se è diversa dallo stato attuale del pulsante invii una nuova richiesta etc..)

good luck
[/quote]

è proprio questo il problema!!! naturalmente le mie nozioni di C non mi permettono di inventarmi il metodo; se sei così gentile da indirizzarmi verso la luce......(led), so che non manca tanto, poi giuro che non  do più fastidio :)
Dove salvo il valore dell'ultima richiesta? E' proprio qui che non riesco a trovare soluzione.

fafidio

provato con questo....

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
if (buttonState != buttonStateOld)
    {

           // check if the pushbutton is pressed.
           // if it is, the buttonState is HIGH:
            if (buttonState == HIGH) {     
             // turn LED on:   
   
   digitalWrite(ledPin, HIGH);
  //Serial.println("led acceso"); 
  client.println("POST /led=1");
  client.println();

 
}
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
   // Serial.println("led spento"); 
  client.println("POST /led=0");
  client.println();

  }

}  buttonStateOld=buttonState;}


naturalmente dopo aver dichiarato:
int buttonState = 0;         // variable for reading the pushbutton status
int buttonStateOld = 0;

ma la cosa non cambia. Cosa posso fare ancora???

lesto

1. usa i tag [ code] e [ /code] (senza lo spazio) per scrivere il codice sul forum
2. formatta il tuo codice, se non altro per renderci la vita più facile. E' buona abitudine scriverlo già formattato, se non hai voglia almeno prima di postarlo clicca Tool->Autoformat, e otterrai del codice che non fa impazzire la gente.
3. se poi vuoi fare le cose fatte come si deve, clicca Edit->Copy for forum, non serve selezionare il codice, ti sembrerà non succedere niente ma se provi a fare dtsro ->incolla nel tuo post ecco cosa otterrai (questo passo esegue anche i 2 passi precedenti in automatico!):
Quote

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  if (buttonState != buttonStateOld)
  {

    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) {     
      // turn LED on:   

      digitalWrite(ledPin, HIGH);
      //Serial.println("led acceso");
      client.println("POST /led=1");
      client.println();


    }
    else {
      // turn LED off:
      digitalWrite(ledPin, LOW);
      // Serial.println("led spento");
      client.println("POST /led=0");
      client.println();

    }

  }  
  buttonStateOld=buttonState;
}


sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lesto

ed ora le correzioni:

1. buttonStateOld lo puoi aggiornare solo se entri nell'if, non è un errore ma spreco di CPU

2. ancora manca il controllo se la connessione è chiusa e nel caso la riapra.

3. sicuro che la POST si faccia così?
a quanto mi risulta si fanno così:
Code: [Select]
POST /login.jsp HTTP/1.1
Host: www.mysite.com
Content-Length: 27

userid=joe&password=guessme


4. sicuro che non vuoi fare una GET? si fanno così:
Code: [Select]
GET /login.jsp?userid=joe&password=guessme HTTP/1.1
Host: www.mysite.com


5. Sicuro che il codice del server sia corretto? puoi postarlo?

6. studiati il protocollo ISO/OSI: http://it.wikipedia.org/wiki/Open_Systems_Interconnection
In particolare sappi che nel tua caso a livello applicazione in realtà non c'è il programma, ma il protocollo HTTP: http://it.wikipedia.org/wiki/Http
e poi la tua applicazione.

Se non sai le basi è inutile che ci giri troppo intorno, se vuoi che qualcuno scriva il codice per te si può fare, basta che apri il portafoglio :)

ps. 3 e 4 sono la stessa richiesta ma fatta in 2 modi diversi...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up