Ciao tuxj, ho visto in questa sezione tu chiedevi quello che sto cercando di fare anch'io...Io utilizzo Arduino Uno e ethernet shield con l'aggiunta di shift register per l'aumento delle uscite digitali (per adesso utilizzo 2 shift register ma conto di metterne in cascata un totale di 7-8). Per questo motivo ridurre al minimo lo sketch e quindi limitare gli "IF" è un mio obiettivo.
Non ho molto capito come hai fatto dal suggerimento di Pablos a risolvere il tuo problema. Hai la cortesia di scrivermi un pezzo di sketch derivato da quello che ti posto qui sotto? In questo modo come già detto in altri thread riesco a capire un po' alla volta dato gli esempi.
Grazie in anticipo a te o a chiunque risponderà
#include <Shifter.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x3A, 0x06 };
byte ip[] = { 192,168,1,100 };
EthernetServer server(80);
String query;
//Pin connected to latch pin (ST_CP) of 74HC595
const int latchPin = 8;
//Pin connected to clock pin (SH_CP) of 74HC595
const int clockPin = 6;
////Pin connected to Data in (DS) of 74HC595
const int dataPin = 7;
#define NUM_REGISTERS 2
Shifter shifter(dataPin, latchPin, clockPin, NUM_REGISTERS);
void setup()
{
query = String("");
Ethernet.begin(mac, ip);
server.begin();
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop()
{
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
query.concat(c);
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//0/////////////////////////////////////
if (query.indexOf("accendi0") > 0) {
shifter.setPin(0, HIGH);
shifter.write();
delay(1000);
shifter.clear();
shifter.write();
}
/////////////////////////////////////////
if (query.indexOf("accenditutto") > 0) {
shifter.setAll(HIGH);
shifter.write();
}
/////////////////////////////////////////
if (query.indexOf("spegnitutto") > 0) {
shifter.setAll(LOW);
shifter.write();
}
client.print("<a href='/accenditutto'>Accendi TUTTO </a>
<a href='/spegnitutto'>Spegni TUTTO </a>
");
client.print("<pre>");//DEBUG
client.print(query);// DEBUG
client.print("</pre>");//DEBUG
break;//fermo il ciclo
}
}
}
delay(1);
client.stop();
query = String("");
}
}