Go Down

Topic: Sensors.requestTemperatures()-pag 3-rallenta molto il ciclo in wifi... perché? (Read 2 times) previous topic - next topic

luca56

#5
Feb 20, 2012, 01:39 pm Last Edit: Feb 20, 2012, 03:49 pm by luca56 Reason: 1
anche io avevo il dubbio così ho provato a lasciare libero il pin 4 spostando le sonde i2c sul pin 5 ma il risultato è sempre lo stesso.

mi correggo però: il codice qui sotto mi da solo due problemi:

dopo averlo caricato su arduino il display rimane spento per una trentina di sec, poi parte e anche le sonde restituiscono la temperatura nonostante siano sul pin 4

è il wifi che non va proprio, si connette ma se visito l'ip 192.168.1.120 non c'è nulla, mi segnala errore server irraggiungibile

deve trattarsi per forza di un problema di programma

pitusso

Ciao
Quote
è il wifi che non va proprio, non si aggancia alla rete

se invece utilizzi il wifi da solo, con quella configurazione, funziona bene?

Poi ti chiedo una cosa; perchè setti una password sia per WPA2 (la rete l'hai settata così) che per WEP?

Code: [Select]
const prog_char security_passphrase[] PROGMEM = {"15342985dresa"}; // max 64 characters

// WEP 128-bit keys
// sample HEX keys//
prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3
};


nel loop hai avviato il wifi server?

Code: [Select]

WiServer.server_task();


hai provato ad abilitare il wifi server in verbose mode, nel setup?

Code: [Select]

WiServer.enableVerboseMode (true);


Poi, qualche considerazione personale: a me piace mettere tutte le dichiarazioni nella parte alta del codice, e tutte le funzioni aggiuntive dopo setup e loop.
In questo modo so che se cerco una variabile, la troverò sempre e solo in un posto, così come per le funzioni base e le aggiuntive - cosa che agevola molto la lettura del codice e soprattutto il debug...  :P


luca56

grazie dell'intervento...

il programma della shield wifi l'ho preso e copiato così com'era, per quello ci sono sia la wpa2 (la mia) che la wep (ora ho tolto)... e da solo funziona senza problemi

anche il mio programma da solo funziona e funziona anche se ci unisco quello del wifi: ci mette una trentina di secondi a caricarsi ma dopo quel lasso di tempo il display si accende e mi restituisce tutti i dati... insomma funziona in tutto.


il wifi invece no, funziona unicamente se è da solo. Proprio adesso ho provato a liberare anche il pin 4 e 9 ma nulla: ho provato a chiudere il contatto sulla shield del led di "segnalazione aggancio alla rete" e dopo quella 30ina di secondi si accende quindi dovrebbe essere connesso però non ho risposta all'indirizzo da me settato!


wifi server nel loop:

ho provato ad aggiungerlo sia al loop principale sotto al onesecond() che ad implementarlo direttamente in onesecond ma il risultato è lo stesso

verbose mode: non so cosa intendi dire, anche qui mi sono limitato a lasciare tutto come ho trovato nel codice d'esempio e le due stringhe sono abilitate... non sono rese commento..:
Code: [Select]
WiServer.init(sendMyPage);
 
  // Enable Serial output and ask WiServer to generate log messages (optional)
  Serial.begin(57600);
  WiServer.enableVerboseMode(true);


ho anche chiamato futurashop per avere conferma dei pin utilizzati dalla shield... e mi hanno confermato 10 a 13 digitali + 9 per il led di segnalazione (a ponticello innestato) + eventualmente il 4 per la micro sd

non so proprio più cosa tentare, è da stamattina che giro e rigiro il codice ed il risultato non cambia... ma è possibile?!! poi senz'altro sarà una cavolata

pitusso

Ciao,
mi sa che il problema è proprio la funzione onesecond.

Fai questa prova: commenta tutta la parte di scrittura su LCD e il delay, lasciando solo

Code: [Select]
  WiServer.server_task();

Questo perchè nella onesecond tu usi un delay: questa funzione blocca l'esecuzione di tutto il codice per il tempo  indicato.
Se vuoi gestire degli intervalli, utilizza piuttosto millis(), o funzioni come Metro et similia

luca56


Go Up