Go Down

Topic: Campionamento valori sensore (Read 445 times) previous topic - next topic

UserArduino

Ho bisogno di aiuto per riuscire ad avere a disposizione una serie di valori acquisiti da arduino.
Vorrei far fare questo ad arduino (ad esempio):
-leggi il valore di un sensore ogni secondo per 60 secondi
-rendi disponibili questi 60 valori
-pubblica i valori
-ricomincia

Non ho idee su come fare per il primo ed il secondo punto.
Qualcuno può aiutarmi?

Mi spiego meglio, devo creare una pagina web (uso la wifi shield di FuturaElettronica) che visualizzi il valore in ingresso di tre sensori.Ma questo non è molto importante.

ratto93

dove devi visualizzarli ? in rete o da remoto ?
Se corri veloce come un fulmine, ti schianterai come un tuono.

IngHooch

Io immagino qualcosa tipo

Code: [Select]

//dichiarazione array
int valoriSensore[60];

for (int i = 0; i<60; i++){
valori[i]=leggiSensore(); //salva nell'array il valore letto
delay(1000); //attende un secondo
} //ripete per un minuto
The brightest flame burns quickest

UserArduino


dove devi visualizzarli ? in rete o da remoto ?

Devo visualizzarli in rete, messi a disposizione in una pagina web.

Il mio codice, molto scarno e ridotto all'osso per semplicità è il seguente:

Code: [Select]
#include <WiServer.h>

#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {192 , 168 , 137 , 2};      // Indirizzo IP
unsigned char gateway_ip[] = {192 , 168 , 137 , 1};     // Indirizzo gateway IP
unsigned char subnet_mask[] = {255 , 255 , 255 , 0};   // Subnet Mask
const prog_char ssid[] PROGMEM = {"router"};     // SSID access point

unsigned char security_type = 3; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"provaprova"}; // max 64 characters

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
};

unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;

/* Temperatura */
int inputPin = 5; //definisco il pin 5 come quello a cui è attaccato il sensore di temperatura
float Temperatura;//variabile da calcolare
/*end Temperatura*/

void setup() {
    WiServer.init(inviaLaPaginaWeb);

    Serial.begin(38400);

    WiServer.enableVerboseMode(true);
}



void loop(){
    WiServer.server_task();
    delay(10);
}


boolean inviaLaPaginaWeb(char* URL) {
 
if (strcmp(URL, "/") == 0) {
  paginaWeb();
   
return true;
}

return false;
}

void paginaWeb() {
  Temperatura =  analogRead(inputPin)*0.489 ;

  WiServer.print("<html>");   
 
  WiServer.print ("<head>");
  WiServer.print ("<meta http-equiv=""refresh"" content=""10;url=http://");
  WiServer.print (local_ip[0], DEC);
  WiServer.print (".");
  WiServer.print (local_ip[1], DEC);
  WiServer.print (".");
  WiServer.print (local_ip[2], DEC);
  WiServer.print (".");
  WiServer.print (local_ip[3], DEC);
  WiServer.print ("/"" />");
  WiServer.print ("</head>");
   

  WiServer.print("Pagina di visualizzazione dei parametri ambientali!<br>");
  WiServer.print("La temperatura è : ");
  WiServer.print(Temperatura);
 
  WiServer.print("<html>");
}


vorrei creare una matrice, una tabella nella pagina web che si aggiorni completamente ogni determinato numero di secondi, dove in ogni colonna venga visualizzato un parametro ambientale, in questo caso ho messo solo la temperatura, quindi vorrei creare un vettore nel quale compaiano le ultime 60 letture di temperatura e che dopo la sessantesima si aggiorni.

UserArduino


Io immagino qualcosa tipo

Code: [Select]

//dichiarazione array
int valoriSensore[60];

for (int i = 0; i<60; i++){
valori[i]=leggiSensore(); //salva nell'array il valore letto
delay(1000); //attende un secondo
} //ripete per un minuto



Grazie, questo mi sarà utile! Mi è stato suggerito di provare ad usare script AJAX ma io sono alle prime armi, non so praticamente programmare, e mi sembra complicato; Mi era stato suggerito AJAX in quanto la tabella sarebbe bene che si aggiornasse ogni secondo e senza che la pagina web faccia un refresh...ma stento a capirci qualcosa!

Go Up