Arduino Forum

International => Español => Software => Topic started by: raika125 on Nov 06, 2014, 01:44 pm

Title: App NetiO - Problema con el (Slider)
Post by: raika125 on Nov 06, 2014, 01:44 pm
Hola tengo un problema con un proyecto que vengo realizando que es controlar desde el celular vía wifi 4 rele que están conectado a 4 focos, con una aplicación llamada NetiO no se si la conocen es muy buena! con los botones de la aplicación me funciona sin problemas los reles, lo que estoy queriendo hacer es poner un SLIDER que cuando este en la posición 1 funcione el rele 1, estando en la posicion 2 funcione el rele 2. me entienden el problema es mi codigo no logro que funcione, el arduino recibe perfectamente los datos de la aplicación solo que el codigo no me funciona tengo problemas si alguien me pudiera ayudar en eso se lo agradecería
Ahí van unas fotos de la aplicación!

(https://scontent-b-mia.xx.fbcdn.net/hphotos-xfp1/v/t1.0-9/1380457_769036849828612_8354169133153902004_n.jpg?oh=20eedf2fc310c384d1216420ec607970&oe=54EAB13E)

ESTA PARTE LA QUE NO ME FUNCIONA CON EL (SLIDER)

(https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xaf1/v/t1.0-9/1779888_769036843161946_7885596529425762018_n.jpg?oh=c7b2db55d7d4c4c617bde9a66a8d0bc0&oe=54D1B8C8&__gda__=1425064374_2441228773796c7f8a84e10ef0810f4f)


y esto es la configuracion dentro de la aplicación para el slider!

(https://scontent-b-mia.xx.fbcdn.net/hphotos-xpa1/v/t1.0-9/1493252_769039529828344_3551972131891842588_n.jpg?oh=bb1b7bb191edb3d12c726187bb0d0ef9&oe=54D84C20)


Por acá les dejo el código completo:
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 };
byte ip[] = { 192, 168, 1, 102 };

#define BUFFER 10
EthernetServer servidorArduino(3200);

int led = 31;
int led2 = 32;
int led3 = 33;
int led4 = 34;


void setup(){
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  servidorArduino.begin();
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);   

}

void loop()
{
  int index = 0;
  char comando[BUFFER];

  EthernetClient clienteApp = servidorArduino.available();
  if (clienteApp) {
if (clienteApp.connected()) {
          while (clienteApp.available()) {
          char caracter = clienteApp.read();
          if (caracter !='\n' && caracter != '\r') {
            comando[index] = caracter;
            index++;
            if (index >= BUFFER) index = BUFFER -1;
            continue;
          }
        comando[index] = '\0';
      }

      if (strstr(comando, "holaArdu")) {
        clienteApp.println("done");
      }

 if (strstr(comando, "LED on")) {       
        clienteApp.println("OK");
        digitalWrite(led, HIGH);           
       
      }
 
      if (strstr(comando, "LED off")) {   
        clienteApp.println("OK");
        digitalWrite(led, LOW);             
       
      }



 if (strstr(comando, "LED2 on")) {     
        clienteApp.println("OK");
        digitalWrite(led2, HIGH);           
       
      }
 
      if (strstr(comando, "LED2 off")) {     
        clienteApp.println("OK");
        digitalWrite(led2, LOW);             
       
      }


 if (strstr(comando, "LED3 on")) {       
        clienteApp.println("OK");
        digitalWrite(led3, HIGH);           
       
      }
 
      if (strstr(comando, "LED3 off")) {     
        clienteApp.println("OK");
        digitalWrite(led3, LOW);             
       
      }


 if (strstr(comando, "LED4 on")) {       
        clienteApp.println("OK");
        digitalWrite(led4, HIGH);           
       
      }
 
      if (strstr(comando, "LED4 off")) {     
        clienteApp.println("OK");
        digitalWrite(led4, LOW);             
       
      }
     
     
     
     
     
     
     if (strstr(comando, "SLIDER")) {
        clienteApp.println("OK");
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
       
      }   
     
      }
    }
  }


en la ultima parte del codigo puse (xxxxxxxxx) ya que es la parte que me falta completar! alguien me puede dar una mano?
Gracias
Title: Re: App NetiO - Problema con el (Slider)
Post by: _jose_ on Nov 06, 2014, 10:11 pm
A lo mejor aqui sacas algo en claro:
http://www.josematm.com/controla-tu-arduino-desde-el-movil/# (http://www.josematm.com/controla-tu-arduino-desde-el-movil/#)
Title: Re: App NetiO - Problema con el (Slider)
Post by: surbyte on Nov 06, 2014, 10:16 pm
Muy buena la aplicación ya encontre la info, y es la que puso Jose
Title: Re: App NetiO - Problema con el (Slider)
Post by: _jose_ on Nov 06, 2014, 10:50 pm
Segun esa pagina ,el comando se mandaria en formato SLIDER 0 ,SLIDER 1 etc segun posicion ,por lo que el valor que te interesa estaria en comando[7] ,podrias hacer algo asi:

Code: [Select]

if (strstr(comando, "SLIDER")) {
  clienteApp.println("OK");
  switch (comando[7]) {
    case '0':
      //Encender primer rele y apagar el que este encendido si no es mismo
      //Ya que supongo que solo puede haber uno encendido al mismo tiempo
      break;
    case '1':
      //Encender segundo rele etc etc
      break;
    case '2':
      //Encender tercer rele etc etc
      break;
    case '3':
      //Encender cuarto  rele etc etc
      break;
  }     
}
Title: Re: App NetiO - Problema con el (Slider)
Post by: _jose_ on Nov 06, 2014, 11:06 pm
Y si ademas puedes hacer coincidir los pines con los valores del slider,por ejemplo poner valor minimo 2 y maximo 5 y conectar los reles en los pines del 2 al 5 (donde quieras pero consecutivos) alomejor se podria hacer mas sencillo:

Code: [Select]

if (strstr(comando, "SLIDER")) {
  clienteApp.println("OK");
  // Apagar el que estuviera encendido si hiciera falta
  int pin = comando[7] - '0';
  digitalWrite(pin,HIGH);

Title: Re: App NetiO - Problema con el (Slider)
Post by: raika125 on Nov 07, 2014, 01:17 am
Muy buena la aplicación ya encontre la info, y es la que puso Jose
Si una maravilla la verdad...
Title: Re: App NetiO - Problema con el (Slider)
Post by: raika125 on Nov 07, 2014, 01:21 am
Segun esa pagina ,el comando se mandaria en formato SLIDER 0 ,SLIDER 1 etc segun posicion ,por lo que el valor que te interesa estaria en comando[7] ,podrias hacer algo asi:

Code: [Select]

if (strstr(comando, "SLIDER")) {
  clienteApp.println("OK");
  switch (comando[7]) {
    case '0':
      //Encender primer rele y apagar el que este encendido si no es mismo
      //Ya que supongo que solo puede haber uno encendido al mismo tiempo
      break;
    case '1':
      //Encender segundo rele etc etc
      break;
    case '2':
      //Encender tercer rele etc etc
      break;
    case '3':
      //Encender cuarto  rele etc etc
      break;
  }     
}

Muchísimas gracias Jose me sirvió totalmente tu explicación porque no había entendido bien en lo de la pagina y tu código me vino como anillo al dedo, gracias por compartir conmigo y dedicarme tu tiempo. ahora podre seguir adelante con esto  :D