ethsocket dela ut variabel.

Hej.

Jag styr några LED strips med en LED kontroller som sitter på en arduino mega 2560.

Tanken är att jag skall kunna styra LED via analogWrite med telnet server.
Det fungerar bra som det är nu. Om jag skickar LED1_255 så lyser LED1 100%.
Men som jag har skrivet koden nu blir det mycket if satser.
Finns det ett sätt att dela upp variabeln så att jag kan styra allt med en if sats?
ex. Skickar LED_BLUE_255 så dela upp LED & BLUE & 255 till olika variabler för att skiva det till
analogWrite.

Här är min kod.

#include <SPI.h>
#include <Ethernet.h>
#include <SoftwareSerial.h>

int BLUE = 44;
int GREEN = 45;
int RED = 46;


// Enter a MAC address, IP address and Portnumber for your Server below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x00, 0x21, 0xAA, 0xAA, 0xAA, 0xBB };
IPAddress serverIP(192, 168, 000, 103);
int serverPort = 8888;



// Initialize the Ethernet server library
// with the IP address and port you want to use
EthernetServer server(serverPort);
#define BUFSIZ 64


void setup() {
  pinMode(BLUE, OUTPUT);   // sets the pin as output
  pinMode(GREEN, OUTPUT);   // sets the pin as output
  pinMode(RED, OUTPUT);   // sets the pin as output
  analogWrite(BLUE, 0);
  analogWrite(RED, 0);
  analogWrite(GREEN, 0);

  // start the serial for debugging
  //Serial.begin(9600);
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, serverIP);
  server.begin();

}


void loop() {
  // put your main code here, to run repeatedly:

  ethsocket();

}


void ethsocket() {
  int index = 0;
  char Remote[BUFSIZ];

  EthernetClient client = server.available();
  if (client) {
    if (client.connected()) {
      while (client.available()) {
        char c = client.read();
        //Serial.print(c);                      // print to the screen
        if (c != '\n' && c != '\r') {           // no linefeed or CR so keep reading
          Remote[index] = c;
          index++;
          if (index >= BUFSIZ)
            index = BUFSIZ - 1;
          continue;
        }
        Remote[index] = '\0';
      }

      //Serial.println(Remote);                  // print string sent from iPhone

      if (strstr(Remote, "BRA")) {           // initialsend
        client.println("OKBRA");
      }

      if (strstr(Remote, "LED1_0")) {           // initialsend
        client.println("OK");
        analogWrite(BLUE, 0);
      }

      if (strstr(Remote, "LED1_128")) {           // initialsend
        client.println("OK");
        analogWrite(BLUE, 128);
      }

      if (strstr(Remote, "LED1_255")) {           // initialsend
        client.println("OK");
        analogWrite(BLUE, 255);
      }

      if (strstr(Remote, "LED2_0")) {           // initialsend
        client.println("OK");
        analogWrite(RED, 0);
      }

      if (strstr(Remote, "LED2_128")) {           // initialsend
        client.println("OK");
        analogWrite(RED, 128);
      }

      if (strstr(Remote, "LED2_255")) {           // initialsend
        client.println("OK");
        analogWrite(RED, 255);
      }
    }
  }
}

Hej Putte99,
Jag tycker det borde gå att skriva en switch om alla if-satser ska jämföra samma variabel.
Kolla här för exempel.

Lycka till! :slight_smile: