Salve, da diversi giorni utillizzo la shield ethernet e mi sono trovato davvero bene. Ora sto cercando di capire come funziona con la micro sd. A quanto ho capito io mi creo una pagina html e la carico sulla sd dopodiché nello sketch mi importo la libreria, collegare la shield con il modem, inserire l'ip ecc ecc Il problema sta nel fatto che io attraverso il codice html mi sono creato un button come gli devo dire all'arduino che quando schiaccio quel pulsante mi deve far accendere il led ? Non ho capito la comunicazione tra arduino e la SD. Sotto trovate il file html
Salve, da diversi giorni utillizzo la shield ethernet e mi sto trovando davvero bene. Ora sto cercando di capire come funziona con la micro sd. A quanto ho capito io mi creo una pagina html e la carico sulla sd dopodiché nello sketch mi importo la libreria, collegare la shield con il modem, inserire l'ip ecc ecc Il problema sta nel fatto che io attraverso il codice html mi sono creato un button, come gli devo dire all'Arduino che quando schiaccio quel pulsante mi deve far accendere il led ? Non ho capito la comunicazione tra arduino e la SD. Sotto trovate il codice html
<!doctype html>
<html>
<head>
<title>HTML Editor - Full Version</title>
</head>
<body>
<h1> <span style="font-size:12px;"> Allarme</span></h1>
<h1><input name="Disattiva allarme" type="button" value="Disattiva allarme" /> <input name="Attiva allarme" type="button" value="Attiva allarme" /></h1>
</body>
</html>
Ciao grazie per aver risposto. Ho cercato diversi esempi e quasi tutti creavano la pagina direttamente dall'IDE e non utilizzavano la micro sd. Creare la pagina direttamente dall' ide e far funzionare i button già lo so fare... Il principio è lo stesso ?
Quindi se io scrivo in questo modo il codice funzionerà ? In questo momento non ho la possibilità di provarlo
if(Disattiva allarme.indexOf("?on") >0){
digitalWrite(pinLED,HIGH);
Serial.println("Accendi LED");
acceso = true;
}
Se io mi creo la pagina con l'IDE dell'arduino la creo così:
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
int led = 4;
Servo microservo;
int pos = 0;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { }; // ip in lan (that's what you need to use in your browser. ("192.168.1.178")
byte gateway[] = { ; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
pinMode(led, OUTPUT);
microservo.attach(2);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
pos=5;
microservo.write(pos); // tell servo to go to position in variable 'pos'
delay(20);
}
void loop() {
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
client.println("<link rel='stylesheet' type='text/css' href='http://randomnerdtutorials.com/ethernetcss.css' />");
client.println("<TITLE>Random Nerd Tutorials Project</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>Random Nerd Tutorials Project</H1>");
client.println("<hr />");
client.println("
");
client.println("<H2>Arduino with Ethernet Shield</H2>");
client.println("
");
client.println("<a href=\"/?button1on\"\">Turn On LED</a>");
client.println("<a href=\"/?button1off\"\">Turn Off LED</a>
");
client.println("
");
client.println("
");
client.println("<a href=\"/?button2on\"\">Rotate Left</a>");
client.println("<a href=\"/?button2off\"\">Rotate Right</a>
");
client.println("<p>Created by Rui Santos. Visit http://randomnerdtutorials.com for more projects!</p>");
client.println("
");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
//controls the Arduino if you press the buttons
if (readString.indexOf("?button1on") >0){
digitalWrite(led, HIGH);
}
if (readString.indexOf("?button1off") >0){
digitalWrite(led, LOW);
}
if (readString.indexOf("?button2on") >0){
for(pos = 5; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
microservo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
}
if (readString.indexOf("?button2off") >0){
for(pos = 90; pos>=5; pos-=5) // goes from 180 degrees to 0 degrees
{
microservo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
}
//clearing string for next read
readString="0";
}
}
}
}
}
Io ho una pagina html nella scheda sd... dopo l'ho messa nella shield ethernet e faccio leggere la pagina html all'arduino ok ? la mia domanda è : come faccio a dirgli che quando schiaccio il pulsante si deve accendere il led ?
Non ci siamo capiti... Io dentro la scheda SD ho il file index.htm con all'interno il codice per visualizzare un bottone.
Ci sono tanti esempi, comunque Ti serve un webserver che circola su Arduino. La scheda SD non comunica con l'internet ma da solo i dati da mandare se da fuori viene chiamata la pagina.
Ciao Uwe
dentro il file index.htm che si trova nella scheda sd ?
Tu secondo me con i modi che hai sei leggermente sgarbato e anche maleducato
Hai ragione .. ho sbagliato io a continuare a rispondere vedendo che non seguivi nemmeno una virgola di quello che dicevo, però impara a leggere le risposte e a seguire le spiegazioni.
Arrangiati
ciao
C'è stato un'incomprensione tra noi due
Io utilizzo la shield ethernet