Guys I have a problem in my code, it shows no error but does not work as I wanted.
I'm putting the system to 32 outputs and had trouble setting from 5 out, because sending cmd "9" to turning on and cmd "10" to turning off it only sends the first character "1" and so turning on output 1 instead of turning off the 5.
Can someone help me and understand my mistake!
Follows the code
/
int ledPin2 = 22;
int ledPin3 = 23;
int ledPin4 = 24;
int ledPin5 = 25;
int ledPin6 = 26;
int ledPin7 = 27;
... continue
int ledPin32 = 52;
int ledPin33 = 53;
int ledPin34 = 6;
int ledPin35 = 7;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server(80); // port to listen on
EthernetClient client;
char content_main_top[] = "";
char S1[] = "Externa 1 is on " ;
char S2[] = "Externa 1 is off" ;
char S3[] = "Externa 2 is on";
char S4[] = "Externa 2 is off";
char S5[] = "Externa 3 is on";
char S6[] = "Externa 3 is off";
char S7[] = "Portaria is on";
char S8[] = "Portaria is off";
char S9[] = "Reunião 1 is on";
char S10[] = "Reunião 1 is off";
char S11[] = "Fish Pump is on";
... continue
char S65[] = "Fish Pump is on";
char S66[] = "Fish Pump is off";
char S67[] = "Fish Pump is on";
char S68[] = "Fish Pump is off";
char S404[] = "Not Found";
void setup()
{
Serial.begin(9600);
Serial.println("Getting IP......");
Ethernet.begin(mac);
Serial.print("My IP address: ");
Ethernet.localIP().printTo(Serial);
Serial.println();
Serial.print("Gateway IP address is ");
Ethernet.gatewayIP().printTo(Serial);
Serial.println();
Serial.print("DNS IP address is ");
Ethernet.dnsServerIP().printTo(Serial);
Serial.println();
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin13, OUTPUT);
... continue
pinMode(ledPin33, OUTPUT);
pinMode(ledPin34, OUTPUT);
pinMode(ledPin35, OUTPUT);
Serial.print("Initialising ledPin2 ");
Serial.println();
Serial.print("Initialising ledPin3 ");
Serial.println();
Serial.print("Initialising ledPin4 ");
Serial.println();
}
void loop()
{
checkclient();
}
void checkclient()
{
EthernetClient client = server.available();
if (client)
{
boolean sentHeader = false;
while (client.connected())
{
if (client.available())
{
if(!sentHeader){
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
sentHeader = true;
}
char c = client.read();
if (readString.length() < 20)
Serial.print(c);
{readString.concat(c);}
if (c == 'H')
{
Serial.println();
int Is = readString.indexOf("/");
int Iq = readString.indexOf("?");
int Ib = readString.indexOf("b");
int Ic = readString.indexOf("c");
if(readString.indexOf("?") > 1)
{
if (Ib == (Iq+1))
{
char carray[5];
readString.toCharArray( carray,5,(Ib+1));
Serial.println(carray);
valueB = atof(carray);
Serial.print("B is now: ");
Serial.println(valueB);
client.print (content_main_top);
client.print("B is now: ");
client.print(valueB);
}
else if (Ic == (Iq+1))
{
char carray[5];
readString.toCharArray( carray,5,(Ic+1));
Serial.println(carray);
valueC = atof(carray);
Serial.print("C is now: ");
Serial.println(valueC);
client.print (content_main_top);
client.print("C is now: ");
client.print(valueC);
}
else
{
char carray[2];
readString.toCharArray( carray,2,(Iq+1));
RecievedString = atoi(carray);
switch (RecievedString) {
case 1: action(1, client);digitalWrite(ledPin2, HIGH);break;
case 2: action(2, client);digitalWrite(ledPin2, LOW);break;
case 3: action(3, client);digitalWrite(ledPin3, HIGH);break;
case 4: action(4, client);digitalWrite(ledPin3, LOW);break;
case 5: action(5, client);digitalWrite(ledPin4, HIGH);break;
case 6: action(6, client);digitalWrite(ledPin4, LOW);break;
case 7: action(7, client);digitalWrite(ledPin5, HIGH);break;
case 8: action(8, client);digitalWrite(ledPin5, LOW);break;
case 9: action(9, client);digitalWrite(ledPin6, HIGH);break;
case 10: action(10, client);digitalWrite(ledPin6, LOW);break;
case 11: action(11, client);digitalWrite(ledPin7, HIGH);break;
case 12: action(12, client);digitalWrite(ledPin7, LOW);break;
... continue
case 67: action(67, client);digitalWrite(ledPin35, HIGH);break;
case 68: action(68, client);digitalWrite(ledPin35, LOW);break;
default: action(404, client);
}
}
delay(1);
client.stop();
readString="";
client.read(); client.read();
}
if (Iq < 0)
{
action(404, client);
delay(1);
client.stop();
readString="";
client.read(); client.read();
}
delay(1);
client.stop();
readString="";
client.read(); client.read();
}
}
}
}
}
void action(int x, EthernetClient client)
{
if (x == 1)
{client.print (content_main_top);
client.println(S1);
Serial.println(S1);
}
if (x == 2)
{client.print (content_main_top);
client.println(S2);
Serial.println(S2);
}
if (x == 3)
{client.print (content_main_top);
client.println(S3);
Serial.println(S3);
}
if (x == 4)
{client.print (content_main_top);
client.println(S4);
Serial.println(S4);
}
if (x == 5)
{client.print (content_main_top);
client.println(S5);
Serial.println(S5);
}
if (x == 6)
{client.print (content_main_top);
client.println(S6);
Serial.println(S6);
}
if (x == 7)
{client.print (content_main_top);
client.println(S7);
Serial.println(S7);
}
if (x == 8)
{client.print (content_main_top);
client.println(S8);
Serial.println(S8);
}
if (x == 9)
{client.print (content_main_top);
client.println(S9);
Serial.println(S9);
}
if (x == 10)
{client.print (content_main_top);
client.println(S10);
Serial.println(S10);
}
if (x == 404)
{client.print (content_main_top);
client.println(S404);
Serial.println(S404);
}
x=0;
}