Ci siamo quasi,
ho realizzato tutto il codice:
//*Controllare motore passo passo più pompe da url di internet*//
//**url**//
//http://192.168.1.177/?led=10&led_2=10&led_3=10&led_4=10&led_5=10
//* Cambia nome alle variabili, regola il tempo per ogni pompa, crezione sito web.
#include <SPI.h>
#include <Ethernet.h>
boolean reading = false;
int dirPin = 2;
int stepperPin = 3;
int pompa_1 = 5;
int pompa_2 = 6;
int pompa_3 = 7;
int pompa_4 = 8;
int pompa_5 = 9;
int tastiera = 0;
int tastiera_2 = 0;
int tastiera_3 = 0;
//
int tastiera_4 = 0;
int tastiera_5 = 0;
int i=0;
String HTTPget = "";
//configurazione in internet
byte ip[] = { 192, 168, 1, 177 }; // IP Address
byte subnet[] = { 255, 255, 255, 0 }; // Subnet Mask
byte gateway[] = { 192, 168, 1, 1 }; // Gateway
byte mac[] = { 90, 90, 90, 90, 90, 90 }; // MAC Address
EthernetServer server = EthernetServer(80); // Port 80
/*BUZZER*/
int buzzer=4;
void setup()
{
Serial.begin(9600);
// pin 10, 11, 12 and 13 are used by the ethernet shield
Ethernet.begin(mac, ip, gateway, subnet); // setup ethernet with params from above
server.begin();
pinMode(dirPin, OUTPUT);
pinMode(stepperPin, OUTPUT);
pinMode(pompa_1, OUTPUT);
pinMode(pompa_2, OUTPUT);
pinMode(pompa_3, OUTPUT);
pinMode(pompa_4, OUTPUT);
pinMode(pompa_5, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void step(boolean dir,int steps){
digitalWrite(dirPin,dir);
delay(50);
for(int i=0;i<steps;i++){
digitalWrite(stepperPin, HIGH);
delayMicroseconds(800);
digitalWrite(stepperPin, LOW);
delayMicroseconds(800);
}
}
void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
Serial.println("Connesso");
if (client)
{
boolean lineIsBlank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true; // ? in GET request was found, start reading the info
//check that we are reading, and ignore the '?' in the URL, then append the get parameter into a single string
if(reading && c != '?') HTTPget += c;
if (c == '\n' && lineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<center><h1 style='font-family:Arial; color: #e2424f; font-variant:small-caps;'>Arduino</h1></center>");
client.println("
");
client.println("<center><p>Attendi la preparazione del cocktail, quando sentirai il bip estrai il bicchiere dall'apposito supporto.</p></center>");
client.println("<hr>");
client.println("
");
client.println("<center><a href='http://192.168.1.140/index.php' style='-webkit-border-radius: 60;-moz-border-radius: 60;border-radius: 60px;font-family: Arial;color: #e2424f;font-size: 20px;background: #ffffff;padding: 10px 20px 10px 20px;border: solid #e2424f 2px;text-decoration: none;'>Ritorna</a></center>");
client.println("</html>");
break;
}
if (c == '\n')
{
lineIsBlank = true;
}
else if (c != '\r')
{
lineIsBlank = false;
}
}
}
if(i==0){
//creo la variabile tempo dalla stringa url
String var_1 = HTTPget.substring(4,6);
int tastiera = var_1.toInt();
//creo la variabile tempo_2 dalla stringa url
String var_2 = HTTPget.substring(13,15);
int tastiera_2 = var_2.toInt();
//creo varialbile tempo_3 dalla stringa url
String var_3 = HTTPget.substring(22,24);
int tastiera_3 = var_3.toInt();
//
String var_4 = HTTPget.substring(31,33);
int tastiera_4 = var_4.toInt();
String var_5 = HTTPget.substring(40,42);
int tastiera_5 = var_5.toInt();
//blocco1
if(tastiera != 0){
Serial.println("Acceso");
//il motore è già in posizione
Serial.println("Blocco_1");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_1, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera*1500);
//spegne il relè
digitalWrite(pompa_1, LOW);
delay(100);
}else{
Serial.println("Spento");
//
Serial.println("Blocco_1");
digitalWrite(pompa_1, LOW);
Serial.println("Tempo=0");
}
//blocco2
if(tastiera_2 != 0){
Serial.println("Acceso");
step(HIGH,400);
Serial.println("Blocco_2");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_2, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera_2*1500);
//spegne il relè
digitalWrite(pompa_2, LOW);
delay(100);
}else{
Serial.println("Spento");
step(HIGH,400);
Serial.println("Blocco_2");
digitalWrite(pompa_2, LOW);
Serial.println("Tempo=0");
}
//blocco3
if(tastiera_3 != 0){
Serial.println("Acceso");
step(HIGH,400);
Serial.println("Blocco_3");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_3, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera_3*1500);
//spegne il relè
digitalWrite(pompa_3, LOW);
delay(100);
}else{
Serial.println("Spento");
step(HIGH,400);
Serial.println("Blocco_3");
digitalWrite(pompa_3, LOW);
Serial.println("Tempo=0");
}
//blocco4
if(tastiera_4 != 0){
Serial.println("Acceso");
step(HIGH,400);
Serial.println("Blocco_4");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_4, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera_4*1500);
//spegne il relè
digitalWrite(pompa_4, LOW);
delay(100);
}else{
Serial.println("Spento");
step(HIGH,400);
Serial.println("Blocco_4");
digitalWrite(pompa_4, LOW);
Serial.println("Tempo=0");
}
//blocco5
if(tastiera_5 != 0){
Serial.println("Acceso");
step(HIGH,400);
Serial.println("Blocco_5");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_5, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera_5*1500);
//spegne il relè
digitalWrite(pompa_5, LOW);
delay(100);
}else{
Serial.println("Spento");
step(HIGH,400);
Serial.println("Blocco_5");
digitalWrite(pompa_5, LOW);
Serial.println("Tempo=0");
}
//ritorno
step(LOW, 400*4);
Serial.println("Ritorno");
delay(500);
/*BUZZER*/
tone(buzzer,1000,1500); //suona nota sul pin 12 alla frequenza di 1000Hz
delay(2000); //aspetta 2 secondi
noTone(buzzer); //non suona
delay(1000);
/**/
Serial.println("Disconnesso");
i++;
}else{
HTTPget = "";
i=0;
tastiera = 0;
tastiera_2 =0;
tastiera_3 = 0;
tastiera_4 =0;
tastiera_5 = 0;
}
}
delay(1); // give the web browser a moment to recieve
client.stop(); // close connection
}
unico problema che se da url imposto fino a un valore uguale o minore a 20 funziona.
Se ad esempio imposto da 25 in su il relè rimane diseccitato all'infinito.
SCHEMA ELETTRICO