Buenas tardes espero me puedan ayudar con mi problema, mi sketch no inicia con la entrada alimentacion de energia de 12 V, tiene que estar conectado el cable usb a la computadora, cuando lo desconecto deja de funcionar el sketch como si se desconfigurará; lo conecto y vuelve a funcionar no se que estará mal en mi tarjeta.
Tengo conectada una tarjeta Mega a una tarjeta shield W5100 con 4 relevadores y con un modulo de tiempo DS3231, pero cuando le conecto la energia de 12 voltios a tu entrada de energia no inicia el sketch, tiene que estar conectada a la computadora para que funcione que se tiene que hacer para que inicie ese SKETCH..
A continuacion detallo el codigo:
// unicarlos.dyndns.org:80 (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>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // direccion MAC de tu Ethernet
byte ip[] = {10, 0, 0, 55}; // ip que le pones dentro de tu red como fija y configurada en tu router
EthernetServer server(80); // 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[i], OUTPUT); // inicializo los pines digitales como salida
digitalWrite(dig[i],vdig[i]); // los pongo a nivel bajo LOW=0
}
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running");
}
// En esta sección se agarra a la fecha y hora actual y lo compara con esto
// el tiempo de compilación . Si es necesario, el RTC se actualiza.
DateTime now = RTC.now();
DateTime compiled = DateTime(__DATE__, __TIME__);
if (now.unixtime() < compiled.unixtime()) {
Serial.println("RTC is older than compile time! Updating");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop()
{
// Obtener la hora actual
DateTime now = RTC.now();
// Muestra la hora actual
Serial.print("Hora Exacta: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
cad = ""; // inicializo la cad donde almaceno los datos recibidos
EthernetClient 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[i] == 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("off") > -1) // si la variable cad contiene 'apaga' ejecuta
{ // la funcion apagaTodos()
apagaTodos();
delay (60000);
enciendeTodos();
}
if (cad.lastIndexOf("off2") > -1) // si la variable cad contiene 'apaga' ejecuta
{ // la funcion apagaTodos()
apagaTodos();
delay (600000);
enciendeTodos();
}
if (cad.lastIndexOf("off3") > -1) // si la variable cad contiene 'apaga' ejecuta
{ // la funcion apagaTodos()
apagaTodos();
delay (1800000);
enciendeTodos();
}
if (cad.lastIndexOf("off4") > -1) // si la variable cad contiene 'apaga' ejecuta
{ // la funcion apagaTodos()
apagaTodos();
delay (3600000);
enciendeTodos();
}
if (cad.lastIndexOf("off5") > -1) // si la variable cad contiene 'apaga' ejecuta
{ // la funcion apagaTodos()
apagaTodos();
delay (10800000);
enciendeTodos();
}
if (cad.lastIndexOf("on") > -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();
cliente.println("<html>");
cliente.println("<head>");
cliente.println("<title>CONTROL DEL CONTACTOS</title>");
cliente.println();
cliente.println("<h1>CONTACTOS YUCUTACHE</h1>");
cliente.print("<P align=center><B>Fecha: </B>");
cliente.print(now.day(), DEC);
cliente.print('/');
cliente.print(now.month(), DEC);
cliente.print('/');
cliente.print(now.year(), DEC);
cliente.print(' ');
cliente.print("<B> - Hora Exacta: </B>");
cliente.print(now.hour(), DEC);
cliente.print(':');
cliente.print(now.minute(), DEC);
cliente.print(':');
cliente.print(now.second(), DEC);
cliente.println();
cliente.println("<h1> </h1>");
for (int i=0; i < digTotal; i++)
{
cliente.print("<font color='#191970'><B>Contacto con Pin <B>");
cliente.print(dig[i]);
cliente.print(" ");
if (vdig[i]==1)
{
cliente.println("<font color='red'><B>Apagado<B></font>");
cliente.print("<form method=get><input type=hidden name=dig");
cliente.print(dig[i]);
cliente.print(" value=0><input style='margin:auto;background-color: #42A41F;color: snow;padding: 12px;border: 1px solid #217304;width:80px;' type=submit value=Encender></form>");
}
if (vdig[i]==0)
{
cliente.println("<font color='green'><B>Encendido<B></font>");
// cliente.println("<td>");
cliente.print("<form method=get>");
cliente.print("<input type=hidden name=dig");
cliente.print(dig[i]);
cliente.print(" value=1>");
cliente.print("<input type=submit style='margin:auto;background-color: #F91E1E;color: snow;padding: 12px;border: 1px solid #8D1E2D;width:80px;' value=Apagar>");
cliente.print("</form>");
}
}
cliente.print("_ ");
cliente.print("<form method=get><input type=hidden name=on");
cliente.println(" value=1><input type=submit style='margin:auto;background-color: #246505;color: snow;padding: 12px;border: 1px solid #217304;width:200px;' value=ENCENDER_TODOS></form>");
cliente.print("_ ");
cliente.print("<form method=get><input type=hidden name=off");
cliente.println(" value=1><input type=submit style='margin:auto;background-color: #4FC319;color: snow;padding: 12px;border: 1px solid #000000;width:200px;' value=REINICIAR_1_MINUTO></form>");
cliente.print("_ ");
cliente.print("<form method=get><input type=hidden name=off2");
cliente.println(" value=1><input type=submit style='margin:auto;background-color: #8DEE06;color: snow;padding: 12px;border: 1px solid #000000;width:200px;' value=REINCIAR_10_MINUTOS></form>");
cliente.print("_ ");
cliente.print("<form method=get><input type=hidden name=off3");
cliente.println(" value=1><input type=submit style='margin:auto;background-color: #F8DE33;color: snow;padding: 12px;border: 1px solid #000000;width:200px;' value=REINCIAR_30_MINUTOS></form>");
cliente.print("_ ");
cliente.print("<form method=get><input type=hidden name=off4");
cliente.println(" value=1><input type=submit style='margin:auto;background-color: #EE9223;color: snow;padding: 12px;border: 1px solid #000000;width:200px;' value=REINCIAR_60_MINUTOS></form>");
cliente.print("_ ");
cliente.print("<form method=get><input type=hidden name=off5");
cliente.println(" value=1><input type=submit style='margin:auto;background-color: #FF1B01;color: snow;padding: 12px;border: 1px solid #000000;width:200px;' value=REINCIAR_3_HORAS></form>");
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("=");
char vpin1 = cad.charAt(pos_dig+3);
char vpin2 = cad.charAt(pos_dig+4);
if (vpin2 != '=')
{
vpin1 += vpin2;
}
int pinElegido = vpin1 - 48; //.toInt();
return pinElegido;
}
// Funcion: Extrae en nivel de la cadena cad
int nivelElegido(String cad)
{
int pos_igual = cad.lastIndexOf("=");
char v = cad.charAt(pos_igual+1) - 48;
if (v == 0) return 0;
if (v == 1) return 1;
}
// Funcion para apagar todos los leds al tiempo
void enciendeTodos()
{
for (int i=0; i < digTotal; i ++)
{
vdig[i] = 0;
digitalWrite(dig[i], vdig[i]);
}
}
// Funcion para encender todos los leds al tiempo
void apagaTodos()
{
for (int i=0; i < digTotal; i ++)
{
vdig[i] = 1;
digitalWrite(dig[i], vdig[i]);
}
}
Alguien me puede orientar, de antemano gracias