Show Posts
Pages: 1 ... 79 80 [81] 82 83 ... 227
1201  International / Generale / Re: arduino+scheda relè+dimmerazione led on: March 23, 2013, 03:05:06 pm
quasi tutti i faretti led costruiti per essere alimentati a 220v (che è una tensione) non sono dimmerabili, lampeggiano o sono instabili.
Prova a montarci un varialuce tipo Relco o similari prima di sbatterti a fare software e hardware

ciao
1202  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 22, 2013, 05:30:37 am
per gli elementi TYPE="CHECKBOX" non puoi prendere i Value, non ti dice se è "checked"

allego htm corretto

uscita con valori di input inseriti a casaccio  smiley-mr-green
Code:
IP=255.0.10.50#
SUBMASK=40.15.55.211#
ADDR=74.122.214.23#
PRIMDNS=45.141.219.248#
SECDNS=123.231.19.22#
INCOMC=1#
REMWEB=1#
REMMOB=1#
1203  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 22, 2013, 04:32:23 am
forse devo mettere id.....invece mi è rimasto name....provo!!!!
e si ci va id  smiley , dovresti usare la console degli errori

Firefox > Strumenti > Sviluppo Web > Console degli Errori, se qualcosa non va nel js della tua pagina ti viene segnalata la linea contenente l'errore

ciao

infatti
Code:
Data e ora: 22/03/2013 10:39:57
Errore: TypeError: document.getElementById(...) is null
File sorgente: http://192.168.2.177/
Riga: 71
1204  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 22, 2013, 03:53:53 am
fai una modifica allo sketch
Siccome c'è il '#' che separa i pezzi che ti servono facciamo si che quando il char c incontri il cancelletto svuoti la stringa readString
potresti usare anche "\n"

Code:
boolean riceve_handler(TinyWebServer& web_server)
{  
      web_server.send_error_code(200);
      web_server.send_content_type("text/plain");
      web_server.end_headers();
      Client& client = web_server.get_client();
                
    if (client.available())
    {
      String readString;
      int16_t c;  
      
       while ((c = client.read())>0)
       {
         readString += (char)c;
         if(c=='#'){          
         Serial.println (readString);  //debug
        
         //------------------------------------
         //qui elabori la stringa in arrivo
         //-----------------------------------
            
         //svuoto la stringa dopo aver incontrato # ... in questo modo la massima lunghezza di  readString
         //sara di 255.255.255.255# quindi 16 char, si evita di crashare arduino a causa di un eventuale
         //saturazione della ram
         readString="";
         }            
       }
      
        readString=""; //svuota la stringa del client.read  
    }
  
      client.stop();  
}

Ottimizzazione delle stringhe inviate
Code:
dato=
    "IP="+ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    "SUBNET="+sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#";

serialprint
Code:
IP=255.255.255.255#
SUBNET=255.255.255.255#


Devi ricordarti di ricaricare la pag 192.168.0.12/ ogni volta che fai una modifica sull' html per renderle effettive e importante le stringhe che mandi dalla pag web devono terminare con '#'
1205  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 22, 2013, 03:47:13 am
Nono li manda più di 16  smiley mi ero dimenticato di ricaricare la pagina htm sul browser una volta fatte le modifiche

stringa dato
Code:
dato=
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#"+
    ip_1+"."+ip_2+"."+ip_3+"."+ip_4+"#"+
    sm_1+"."+sm_2+"."+sm_3+"."+sm_4+"#";

Serial print
Code:
Setting up SD card...
Setting up the Ethernet card...
Web server starting...
Ready to accept HTTP requests.
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
255.255.255.255#
1206  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 22, 2013, 03:16:55 am
A si quello del 2011 si limita a 30, era un esempio questo no non ha limiti, le variabili string sono dannose se usate male a causa della poca ram, ma 200,250byte  dovresti averli liberi, comunque si può ovviare a questo, ora provo  
1207  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 22, 2013, 03:01:15 am
Non ho messo limiti puoi mandarne anche 8000, sarà arduino che stabilirà un limite prima di saturare la ram, ma 16 mi sembrano un po' pochi, forse ne mandi troppi ... ti sembra che arduino si inchiodi? come scrivi l'invio?
1208  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 21, 2013, 06:07:58 pm
Allego l' htm modificato ... questo è quanto.
Ora puoi proseguire da solo

ciao
1209  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 21, 2013, 04:32:03 pm
mi ci vuole un po'

questo è lo sketch pronto per ricevere qualsiasi dato da client
Code:
#include <pins_arduino.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Flash.h>
#include <SD.h>
#include <TinyWebServer.h>

//****************VALUES YOU CHANGE*************/
//byte ip[] = { 192, 168, 0, 12 };// Don't forget to modify the IP to an available one on your home network
byte ip[] = { 192, 168, 2, 177 };// Don't forget to modify the IP to an available one on your home network
//*********************************************/

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

 TinyWebServer::PathHandler handlers[] = {
  {"/", TinyWebServer::GET, &index_handler},
  {"/RICEVI", TinyWebServer::POST, &riceve_handler},
  {"/" "*", TinyWebServer::GET, &file_handler},
  {NULL},
};

const char* headers[] = {"Content-Length",NULL};
TinyWebServer web = TinyWebServer(handlers, headers);

boolean has_filesystem = true;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;

//_________________________________________________________________________________________________________________________________________________________________________
boolean riceve_handler(TinyWebServer& web_server)
{  
      web_server.send_error_code(200);
      web_server.send_content_type("text/plain");
      web_server.end_headers();
      Client& client = web_server.get_client();
                
    if (client.available())
    {
      String readString;
      int16_t c;  
      
       while ((c = client.read())>0)
       {
            readString += (char)c;
                
       }
       Serial.println (readString);
       //------------------------------------
       //qui elabori la stringa in arrivo
       //-----------------------------------
              
        readString=""; //svuota la stringa del client.read  
    }
  
      client.stop();  
}

//_________________________________________________________________________________________________________________________________________________________________________
void send_file_name(TinyWebServer& web_server, const char* filename) {
//Serial.print ("1");
  if (!filename) {
    web_server.send_error_code(404);
    web_server << F("Could not parse URL");
  } else {
    TinyWebServer::MimeType mime_type
      = TinyWebServer::get_mime_type_from_filename(filename);
    web_server.send_error_code(200);
    web_server.send_content_type(mime_type);
    web_server.end_headers();
    if (file.open(&root, filename, O_READ)) {
      Serial << F("Read file ");
      Serial.println(filename);
      web_server.send_file(file);
      file.close();
    } else {
      web_server << F("Could not find file: ") << filename << "\n";
    }
  }
}

//__________________________________________________________________________________________________________________________________________________________________________
boolean file_handler(TinyWebServer& web_server) {
//Serial.print ("2");
  char* filename = TinyWebServer::get_file_from_path(web_server.get_path());
  send_file_name(web_server, filename);
  free(filename);
  return true;
}

//__________________________________________________________________________________________________________________________________________________________________________
boolean index_handler(TinyWebServer& web_server) {
//Serial.print ("3");
  send_file_name(web_server, "SETUP.HTM");
  return true;
}
//_________________________________________________________________________________________________________________________________________________________________________

void setup() {
 
  Serial.begin(9600);
  //Serial << F("Free RAM: ") << FreeRam() << "\n";
 
  pinMode(SS_PIN, OUTPUT);   // set the SS pin as an output
  digitalWrite(SS_PIN, HIGH);   // and ensure SS is high
  pinMode(10, OUTPUT);   // Set the CS pin as an output
  digitalWrite(10, HIGH);   // Turn off the W5100 chip! (wait for configuration)
  pinMode(4, OUTPUT);   // Set the SDcard CS pin as an output
  digitalWrite(4, HIGH);   // Turn off the SD card! (wait for configuration)
  // initialize the SD card.
  Serial.println("Setting up SD card...");
  // pass over the speed and Chip select for the SD card
  if (!card.init(SPI_FULL_SPEED, 4)) {
    Serial.println("card failed");
    has_filesystem = false;
  }
  // initialize a FAT volume.
  if (!volume.init(&card)) {
    Serial.println("vol.init failed!");
    has_filesystem = false;
  }
  if (!root.openRoot(&volume)) {
    Serial.println("openRoot failed");
    has_filesystem = false;
  }

  // Initialize the Ethernet.
  Serial.println("Setting up the Ethernet card...");
  Ethernet.begin(mac, ip);

  // Start the web server.
  Serial.println("Web server starting...");
  web.begin();

  Serial.println("Ready to accept HTTP requests.");
}
 
//_________________________________________________________________________________________________________________________________________________________________________
void loop() {
  if (has_filesystem) {
    web.process();
  }
}


ora devo vedere l'html
1210  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 21, 2013, 03:08:18 pm
Ho capito che non vuoi uno scambio continuo, ma la tinywebserver lavora su questi riconoscimenti

Code:
{"/", TinyWebServer::GET, &index_handler },
  {"/SEND", TinyWebServer::POST, &blink_led_handler },
  {"/ledstatus" "*", TinyWebServer::GET, &led_status_handler },
  {"/" "*", TinyWebServer::GET, &file_handler },
  {NULL},
};

qualsiasi cosa metti di diverso da questi prefissi viene interpretato come errore a parte questo {"/" "*" che lo interpreta come nome del file, se esiste te lo manda altrimenti da errore es: 192.168.0.12/pippo.txt te lo visualizza sulla pag html

devi usare la funzione
boolean blink_led_handler(TinyWebServer& web_server) {
che riceve i dati dal client, per mandarglieli  dovresti usare sul js che ho scritto qualche post indietro
Code:
function send()
 {
    $.ajax({
      type: "POST",
   data: "addr1=1&addr3=2&addr3=5&addr4=7",
   dataType: "text",
   cache: false,
   url: "/SEND",
   success: function(r){ },
   error: function() {  }
  });
};
funzione collegata al pulsante "salva" che invia i dati contenuti nei campi <input .....

se tu invii http://192.168.0.12/index.htm?addr1=1&addr3=2&addr3=5&addr4=7 la tiny ti butta fuori, non lo riconosce
puoi mettere lo sketch che hai modificato del tiny?
1211  International / Software / Re: Funzione GET x prendere valori dall'url di una pagina HTML on: March 21, 2013, 02:03:34 pm
Manca il file javascript file.js che fa da tramite tra html e arduino se hai visto l'esempio tiny l'avrai notato

ciao
1212  International / Software / Re: uscita immediata da un loop o un ciclo on: March 21, 2013, 10:23:59 am
Si janos vado a studiare, intanto tu fagli usare un millis() per 50ms
1213  International / Software / Re: uscita immediata da un loop o un ciclo on: March 21, 2013, 10:13:28 am
non centra perchè lui è dentro a una funzione quando ha bisogno di leggere la pressione del bottone che impegna il suo tempo, non ha  mica un delay da 10 minuti

loop()

Vai alla funzione 1()
Vai alla funzione 2()
Vai alla funzione 3()
Vai alla funzione 4()
leggi il pulsante

il pulsante lo legge solo quando ha terminato le 4 funzioni, ci vuole qualcosa che intercetti il pulsante interrompendo per un istante tutto quello che il micro sta facendo, questo lo fa solo attivando un interrupt
1214  International / Hardware / Re: Taparelle con relè radio+ Arduino UNO on: March 21, 2013, 09:11:57 am
Ma anche arduino è cinese?
1215  International / Software / Re: uscita immediata da un loop o un ciclo on: March 21, 2013, 08:56:46 am
Utilizza millis() invece dei delay()...

cosa centra il delay con l'intercettare un evento durante il ciclo?

Prendi un pin che abbia l'interrupt, lo attivi, questo resterà in attesa di un cambio anche durante l'esecuzione di una funzione diversa dal loop.  

http://gonium.net/md/2006/12/20/handling-external-interrupts-with-arduino/
Pages: 1 ... 79 80 [81] 82 83 ... 227