perdonar algun codigo para encender y apagar un LED a traves de internet , en red local me funciona bien uno que te envian al instalar en android una aplicacion que se llama "DomoMaster" pero cuando lo quiero ejecutar en internet no pita , quiza no le doy tiempo al navegador , pero con el mismo sistema y la libreria "webServer" va como un tiro , gracias.-
Tienes redireccionado el puerto en el router hacia la IP y el puerto del arduino?
Si redirecciono al puerto 80 la ip de aurdino 192.168.0.110 y luego entro desde el navegador en la que le asigna internet al router 14.34.56.158 :80 por ejemplo desde otra red, y con el código webserver cargado va bien indicándome en la página web los valores de los pines , el problema es cuando quiero hacerlo con el código de la aplicación domomaster de android , el caso es que sí lo hago en red local poniendo la ip local funciona bien. Por eso me gustaría un código similar para encender aunque sólo sea un led y luego ir ampliandolo con más funciones, gracias
Yo con android no te puedo ayudar
Pero si pusieras algún enlace de esa aplicación (domomaster) algo más información, puede que alguien que haya echo algo de android si que pueda
Bueno lo de android , ya sabes esta en el AppStore de Google y luego te mandan el código por correo , pero no necesito que sea de android me serviría controlar los led desde una web con HTML , pero estoy atascado , le cargo el código de webserver y me muestra el estado de los pines , todo Okl , pero como sería el código si quisiese encender un led gracias y perdona mi ignorancia
He intentado usar este código pero da muchos errores y no lo he llegado a cargar
// unicarlos.dyndns.org:88 (ip de mi router que se actualiza automaticamente
// y funciona con la configuracion del router de abrir puerto e ip
// y se puedan encender y apagar leds (Pines digitales del 2 al 9).
// Pines 10,11,12 y 13 los usa para comunicarse con la ethernet
#include <SPI.h>
#include <WString.h>
#include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // direccion MAC de tu Ethernet
byte ip[] = {192, 168, 10, 15}; // ip que le pones dentro de tu red como fija y configurada en tu router
Server server(88); // 88 puerto por el accedemos al servidor. Normalmente seria la 80
int dig[] = {2,3,4,5,6,7,8,9}; // pines digitales a usar. No uso 0 y 1 que son de transmisin serie
// Tampoco uso el 10,11,12 y 13 ya que los uso para la ethernet
int digTotal = 8; // Numero de pines a usar
int vdig[] = {0,0,0,0,0,0,0,0}; // valores iniciales (Tantos como pines usemos)
int pin;
int nivel;
String cad = String(100);
void setup()
{
Ethernet.begin(mac, ip); // inicio la Ethernet
server.begin(); // inicio el servidor
Serial.begin(9600); // inicio el serial monitor
for (int i=0; i < digTotal; i++)
{
pinMode(dig*, OUTPUT); // inicializo los pines digitales como salida*
digitalWrite(dig_,vdig*); // los pongo a nivel bajo LOW=0*
* }
}
void loop()
{
cad = ""; // inicializo la cad donde almaceno los datos recibidos*
* Client cliente = server.available();
if (cliente)
{
while(cliente.connected())
{
if(cliente.available())
{
char c = cliente.read();
cad = cad + c;
Serial.print(c);
if(c == '\n')
{
if (cad.lastIndexOf("dig") > -1) // si la variable cad contiene 'dig' hacer ...
{
pin = pinElegido(cad);
int posicionPin;
for (int i=0; i <digTotal; i++)
{
if (dig == pin)
{
posicionPin = i;
break;
}
}
nivel = nivelElegido(cad);
vdig[posicionPin] = nivel;*_
* Serial.print(pin); // comprobamos que el pin elegido es el correcto*
* Serial.println(" pin. -- ");*
* Serial.print(nivel); // comprobamos su nivel 0=LOW y 1=HIGH*
* Serial.println(" nivel ");*
* digitalWrite(pin, nivel); // activamos o desactivamos el pin elegido*
* } // ... hasta aqui 'dig'*
* if (cad.lastIndexOf("apaga") > -1) // si la variable cad contiene 'apaga' ejecuta*
* { // la funcion apagaTodos()*
* apagaTodos();*
* }*
* if (cad.lastIndexOf("encender") > -1) // si cad contiene 'encender' ejecuta*
* { // la funcion enciendeTodos()*
* enciendeTodos();*
* }*
* // Comienza la transmision de datos desde el servidor al cliente*
* cliente.println("HTTP/1.1 200 OK");*
* cliente.println("Content-Type: text/html");*
* cliente.println();*
* for (int i=0; i < digTotal; i++)*
* {*
* cliente.print("Digital ");*
_ cliente.print(dig*);
cliente.print(" ");*_
_ if (vdig*==1)
{
cliente.println("ON");
cliente.print("<input type=hidden name=dig");
cliente.print(dig);
cliente.print(" value=0>");
}
if (vdig==0)
{
cliente.println("OFF");
// cliente.println("");
cliente.print("");
cliente.print("<input type=hidden name=dig");
cliente.print(dig);
cliente.print(" value=1>");
cliente.print("");
cliente.print("");
}
}
cliente.print("<input type=hidden name=apaga");_
cliente.println(" value=1>");*
* cliente.println("<input type=hidden name=encender");*
* cliente.println(" value=1>");*
* cliente.stop();*
* }*
* }*
* }*
* }*
}
////////////// FUNCIONES /////////////////7
// Funcion: Extrae el pin del array cad (contiene la lectura de lo que el cliente devuelve)
int pinElegido(String cad)
{
* int pos_dig = cad.lastIndexOf("dig");
int pos_igual = cad.lastIndexOf("=");
String vpin1 = cad.charAt(pos_dig+3);
String vpin2 = cad.charAt(pos_dig+4);
_ if (vpin2 != '=')
{
vpin1 += vpin2;
}*_
* int pinElegido = vpin1.toInt();*
* return pinElegido;*
}
// Funcion: Extrae en nivel de la cadena cad
int nivelElegido(String cad)
{
* int pos_igual = cad.lastIndexOf("=");
String v = cad.charAt(pos_igual+1);
_ if (v == 0) return 0;
if (v == 1) return 1;
}
// Funcion para apagar todos los leds al tiempo*
void apagaTodos()
{
* for (int i=0; i < digTotal; i ++)
{
vdig = 0;
digitalWrite(dig, vdig);
}
}
// Funcion para encender todos los leds al tiempo*
void enciendeTodos()
{
* for (int i=0; i < digTotal; i ++)
{
vdig = 1;
digitalWrite(dig, vdig);
}
}*_
hola, es el mismo que estoy intentando cargar yo, he resuelto casi todos los errores, pero me he atrancado en uno:
String vpin2 = cad.charAt(pos_dig+4);
me dice invalid conversion from char a constante char
es una pena dos lineas mas y acab y lo cargo, pero no encuentro la solucion, charAt, no me lo pone en naranja.
ayudita?