Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #15 on: April 06, 2011, 07:23:16 am » |
con processing, ci sono della pagine belle e pronte con dei pulsanti, oppure devo crearmele? Dato che devo operare sempre nella stessa rete, e dovendo collegare due arduino (uno collegato ai magneti della porta e l'altro che deve acendere il led quando la porta si apre) mi conviene caricare due pagine html sulle sd in modo da gestirle da qualsiasi computer della rete? dal punto di vista grafico, processing mi dà la possibilità di creare pulsanti o di visualizzare se l'input di arduino è attivato o meno? grazie, a presto..... 
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8224
:(){:|:&};:
|
 |
« Reply #16 on: April 06, 2011, 07:37:34 am » |
processing mette a disposizione degli oggetti pulsante ecc... con la libreria p4 qualcosa. Però il posizionamento/apparenza lo fai via codice, non c'è una GUI builder.
Però se le tue necessità son queste, meglio andare di webserver e pagine html
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #17 on: April 06, 2011, 11:09:01 am » |
infatti la mia paura è proprio quella di non riuscire poi a creare una interfaccia grafica intuitiva: con la pagina web mi sembra più facile creare qualcosa di gestibile anche da uno meno esperto. Ma se creo la pagina come faccio a caricarla su arduino? grazie....
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #18 on: April 06, 2011, 01:56:44 pm » |
aiutooooooo..... .sto cercando di caricare una pagina web su Sd di arduino: non riesco!!!! qualcuno mi spiega come si fa??????grazie...
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8224
:(){:|:&};:
|
 |
« Reply #19 on: April 06, 2011, 02:11:41 pm » |
metodo facile: stacca l'sd, attaccala al pc e carica il file
metodo medio: crei uno sketch che legge un file da seriale e lo salva su SD
metodo "difficile": crei un comando seriale che esegua il codice del metodo medio
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #20 on: April 06, 2011, 02:16:03 pm » |
opto per la più facile grazie!!! 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #21 on: April 07, 2011, 08:22:06 am » |
sto cercando di caricare l'esempio di gianni c. http://arduino.cc/forum/index.php/topic,54797.msg404446.html#msg404446 ma mi dà l'errore quando carico lo skethc su arduino; ho copiato i file nella root della sd, e poi la demo su arduino: -------> serie di errors!!!!come mai?
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8224
:(){:|:&};:
|
 |
« Reply #22 on: April 07, 2011, 08:39:12 am » |
senza conioscere gli erorri la vedo dura....
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #23 on: April 07, 2011, 03:00:43 pm » |
finalmente riesco ad accendere un led da ethernet
#include <Server.h> #include <Client.h>
#include <Ethernet.h>
//Arduino uses digital pins 10, 11, 12, and 13 (SPI) to communicate with the W5100 on the ethernet shield int ledPIN = 9; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //byte ip[] = { 10, 0, 0, 4}; byte ip[] = { 192,168,1,15 }; byte gateway[] = {192,168,1,1}; byte subnet[] = {255,255,255,0};
Server server(77);
void setup() { // setta come output pinMode(ledPIN, OUTPUT); // initialize the ethernet device Ethernet.begin(mac, ip, gateway, subnet); // start listening for clients server.begin(); Serial.begin(9600); Serial.println("Accetto"); blink (5); }
void loop() { Client client = server.available(); server.write('_ok_'); // il client si collega con il comando: // telnet 192.168.1.15 77 if (client) { int rcv = client.read(); // echo vs il client: server.write(rcv); // Serial.print(rcv);
// comandi accettati: // 1=acceso, 0=spento, B=blink switch (rcv) { case '1': digitalWrite(ledPIN, HIGH); Serial.println("CMD 1 received"); break; case '0': digitalWrite(ledPIN, LOW); Serial.println("CMD 0 received"); break; case 'B': blink(2); Serial.println("CMD B received"); break; } } }
void blink (int times) { for (int cnt=times; cnt>0; cnt--) { digitalWrite(ledPIN, HIGH); // set the LED on delay(200); digitalWrite(ledPIN, LOW); // set the LED off delay(200); } }
|
|
|
|
« Last Edit: April 07, 2011, 04:38:10 pm by fafidio »
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #24 on: April 08, 2011, 05:42:24 pm » |
qualcuno mi aiuta comporre uno sketch che mi consenta di mettere in ascolto il secondo dei due arduino collegati su rete intranet mentre il primo invia un comando? fin'ora sono riuscito "solo" ad inviare un comando via telnet e fare accendere un led (con ethernet shield)!!!! praticamente devo inviare un comando sull'indirizzo ip del secondo arduino.....ma non trovo la soluzione...  grazie a tutti!!
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8224
:(){:|:&};:
|
 |
« Reply #25 on: April 08, 2011, 09:05:53 pm » |
beh, il secondo arduino sarà un client... e guarda caso tra gli esempi c'è TelnetClient, che legge dei comandi da seriale e li invia al server... a partire da quel codice dovrebbe essere uno scherzo fare quello che ti serve 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #26 on: April 12, 2011, 01:34:05 am » |
...che fatica..ma non mi arrendo!!! grazie lesto di tutte le dritte!! finalmente ho modificato un prgammino in html che mi fa accendere il led con una inte /* Web server preso dall'esempio dell'ide e modificato da me */
#include <SPI.h> #include <Ethernet.h> #include <WString.h>
// Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x3A, 0xA3 }; byte ip[] = { 192,168,0,107 };
// Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): Server server(80);
int analogChannel = 5; //pin analogico dell LM35 int ledpin = 8; //pin del led float tempC = 0; //temperatura in gradi celsius int ledstatus = 0; //stato del led
void setup() { // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); pinMode(analogChannel,INPUT); //input dell' LM35 pinMode(ledpin,OUTPUT); //output del led Serial.begin(9600); }
void loop() { //leggiamo la temperatura tempC = (analogRead(analogChannel) * 4.88 * 100)/1024; // listen for incoming clients Client client = server.available(); if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; String readstring; //stringa per la lettura dal browser while (client.connected()) { if (client.available()) { char c = client.read(); readstring.concat(c); //aggiunge c alla stringa; // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { readstring.concat('\0'); //controllo su seriale Serial.println("stringa: "); Serial.println(readstring); Serial.print("indexOf(led=1): "); Serial.println(readstring.indexOf("led=1")); Serial.print("indexOf(led=0): "); Serial.println(readstring.indexOf("led=0")); if(readstring.indexOf("led=1") == 6){ digitalWrite(ledpin,HIGH); ledstatus = 1; Serial.println("LED ON"); //controllo } if(readstring.indexOf("led=0") == 6){ digitalWrite(ledpin,LOW); ledstatus = 0; Serial.println("LED OFF"); //controllo } // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); //Creazione pagina web client.println("<html><head>"); client.println("<title>Domotic-Arduino</title>"); client.println("</head>"); client.println("<body bgcolor=""black"" text=""white"">"); client.println("<h1 align=""center"">Domotic-Home</h1><hr />"); client.println("<br />"); client.print("Temperatura interna : "); client.print((int)tempC); client.println(" C"); client.println("<br /><br />"); client.println("<h3><a href=""/"">Aggiorna Sensore</a></h3>"); client.println("<br />"); client.println("<hr />"); client.println("<br />"); client.print("Comandi LED su pin "); client.println(ledpin); client.println("<br />"); client.print("Stato LED :"); if(ledstatus){ client.println("<font color=""green""> ON</font>"); }else{ client.println("<font color=""red""> OFF</font>"); } client.println("<br />"); client.println("<h2><a href=""/?led=1"">ACCENDI</a> | <a href=""/?led=0"">SPEGNI</></h2>"); client.println("</body></html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } }
rfaccia grafica in html. Ma ora non riesco a capire come fare a farlo accendere premendo il tasto sull'altro arduino. Ho provato con la libreria telnet client: ma dove modifico la stringa per far capire al server che deve rievere da client? grazie a presto.
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8224
:(){:|:&};:
|
 |
« Reply #27 on: April 12, 2011, 02:58:24 am » |
non devi modificare nulla. Il secondo arduino si connette, invia un messaggio facendo in modo che la stringa "led=1" o "led=0" sia in 6 posizione, così da essere riconosciuta e accettata dall'indexof(). fine 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #28 on: April 12, 2011, 09:08:32 am » |
quindi non mi resta che collegare il pulsante su pin 2 e 5V , con il resistore pin 2 verso ground e alla pressione del pulsante il server sarà già in ascolto... naturalmente dopo aver assegnato gli indirizzi del client per far recapitare il tutto al server in rete locale!!! Speriamo bene..a dopo per i risultati, spero che non mi esploda l'arduino  .......
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #29 on: April 12, 2011, 11:22:11 am » |
che faccio lesto, procedo così?
|
|
|
|
|
Logged
|
|
|
|
|
|