Tutorial alba-ocaso para led 12v - Página 3
Página 3 de 6 PrimerPrimer 123456 ÚltimoÚltimo
Resultados 21 al 30 de 54

Tema: Tutorial alba-ocaso para led 12v

  1. #21
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado Teclado

    Hoy nos toca el teclado, y su utilizacion, es para un arduino Mega, habria que cambiar los pines para el UNO.
    El teclado es un componente vital para poder trabajar con el arduino y sobre todo para la simulacion del alba-ocaso, asi como para configurar los canales y sus horarios.
    El teclado que tengo montado esta basado en , 2 botones para arriba-abajo, 2 botones para aumentar-disminuir los valores, 1 para el OK-menu y 1 para salir de los 2-3 menús. Este codigo es para una pantala LCD128x64.



    Lo que el codigo hace es poner HIGH (5v) el pin que este conectado el botón pulsado y lo usaremos para saber si esta activo un pulsador, que es la función digitalRead(PIN).

    Empecemos definiendo los pines de nuestro teclado.

    #define PIN_D_KEY_OK 39
    #define PIN_D_KEY_DER 41
    #define PIN_D_KEY_SALIR 43
    #define PIN_D_KEY_IZQ 45
    #define PIN_D_KEY_MAS 47
    #define PIN_D_KEY_MENOS 49



    En el void setup() definámoslo como pines de entrada.

    pinMode( PIN_D_KEY_OK, INPUT );
    pinMode( PIN_D_KEY_DER, INPUT );
    pinMode( PIN_D_KEY_SALIR, INPUT );
    pinMode( PIN_D_KEY_IZQ, INPUT );
    pinMode( PIN_D_KEY_MAS, INPUT );
    pinMode( PIN_D_KEY_MENOS, INPUT );


    Tenemos que crear un menú con varias opciones de configuración, primero crearemos una función que muestre este menu.


    void PrintPantConfig()
    {
    Lcd.Cls();
    Lcd.Rectangulo(0, 0, 127, 63);
    Lcd.WriteXY("CONFIGURACION", 25, 61);
    Lcd.Linea( 0, 53, 127, 53, 1 );
    Lcd.WriteXY("FECHA Y HORA", 14, 49); // Ancho, Alto, Modo
    Lcd.WriteXY("HORARIO DE LUCES", 14, 19);

    }

    Y ahora la función que controlara el teclado, si pulsamos el botón OK, escribira en la pantalla el menú con varias opciones y nos moveremos por el, al pulsar Salir, saldremos de este menú y volveremos a la pantalla principal.


    void Teclado()
    {
    int Index;
    boolean Salir = false;
    if (digitalRead(PIN_D_KEY_OK)) //Si pulsado el botón OK entramos.
    {
    PrintPantConfig(); // Escribe la pantalla del menú
    Index = 1;
    Lcd.WriteXY( ">", 4, 59-(10*Index)); // Marca la posición del menú donde estamosestamos
    delay(1000); // espera para pulsar algun boton.
    while((!digitalRead(PIN_D_KEY_SALIR)) && (!Salir))
    {
    if (digitalRead(PIN_D_KEY_DER)) // Nos movemos para abajo
    {
    Lcd.WriteXY( " ", 4, 59-(10*Index));
    if (Index == 5) Index = 1; else ++Index;
    Lcd.WriteXY( ">", 4, 59-(10*Index));
    delay(500);
    }
    if (digitalRead(PIN_D_KEY_IZQ)) //Nos movemos para arriba.
    {
    Lcd.WriteXY( " ", 4, 59-(10*Index));
    if (Index == 1) Index = 5; else --Index;
    Lcd.WriteXY( ">", 4, 59-(10*Index));
    delay(500);
    }
    if (digitalRead(PIN_D_KEY_OK)) //Ejecutamos la opción del menu seleccionada.
    {
    switch (Index)
    {
    case 1:
    //PrintConfReloj(); //Función para configurar el reloj
    PrintPantConfig();
    Lcd.WriteXY( ">", 4, 59-(10*Index));
    break;
    case 2:
    //PrintConfLuces(); //Función para configurar las luces
    PrintPantConfig();
    Lcd.WriteXY( ">", 4, 59-(10*Index));
    break;
    }
    }
    }
    PrintPantMain();
    }
    }

    en void loop() pondremos una reseña a la función teclado() para que compruebe que esta activo.

    void loop()
    {
    Lcd.WriteXY( Reloj.DateTime(), 10, 61);
    Teclado();
    }

    **************************
    Proximo dia la configuracion del teclado para las luces y el reloj...............
    Última edición por Layans; 03/04/2014 a las 00:41
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  2. #22
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado

    Hoy vamos a guardar y leer los datos de la configuración, significa que cada vez que queramos cambiar este valor deberemos editar el programa y cargarlo en nuestro arduino, lo hacemos sin necesidad de PC.

    Para hacer esto tenemos unau solución muy practica, que es guardar los datos de nuestra configuración en la EPROM o memoria no volátil del Arduino que tiene 512 bytes de memoria.

    Para poder escribir y leer en la EPROM del Arduino tenemos la librería EEPROM.h la cual ya viene con el IDE del Arduino, esta librería es muy simple ya que solo tiene 2 funciones read() y write() , con lo cual queda claro su manejo.


    // Estructura de los datos de configuración
    typedef struct Configuracio_struct
    {
    int LuzH_ON; //Hora de encendido de la luz
    int LuzM_ON; //Minutos de encendido de la luz
    }
    Stru_Configuracion;


    De esta forma solo tendremos que guardar o leer en la EPROM la variable que definamos como Stru_Configuracion, conteniendo esta todas las variable de nuestra configuración. este es el codigo
    *******************
    #include <Wire.h>
    #include <OneWire.h>
    #include <EEPROM.h> // Librería para poder escribir en la eprom del arduino
    #include "RelojDS1307.h" // Librería del Reloj
    #include "LCD128x64.h" // Librería del LCD


    Ahora declaremos el tipo de estructura que tendrá nuestra configuración.
    // Estructura de los datos de configuración
    typedef struct Configuracio_struct
    {
    int Luz1H_ON; //Hora de encendido de la luz Nº1
    int Luz1M_ON; //Minutos de encendido de la luz Nº1
    int Luz1H_OFF; //Hora de apagado de la luz Nº1
    int Luz1M_OFF; //Minutos de apagado de la luz Nº1
    int Luz2H_ON; //Hora de encendido de la luz Nº2
    int Luz2M_ON; //Minutos de encendido de la luz Nº2
    int Luz2H_OFF; //Hora de apagado de la luz Nº2
    int Luz2M_OFF; //Minutos de apagado de la luz Nº2
    int Luz3H_ON; //Hora de encendido de la luz Nº3
    int Luz3M_ON; //Minutos de encendido de la luz Nº3
    int Luz3H_OFF; //Hora de apagado de la luz Nº3
    int Luz3M_OFF; //Minutos de apagado de la luz Nº3
    } Stru_Configuracion;


    Y luego declaramos la variable de tipo Stru_Configuracion.

    Stru_Configuracion CFG;

    Para que en caso de que no podamos leer la EPROM o sea la primera vez que lo hagamos, le daremos a nuestra estructura de configuración unos valores por defecto.

    CFG.Luz1H_ON = 15;
    CFG.Luz1M_ON = 0;
    CFG.Luz1H_OFF = 23;
    CFG.Luz1M_OFF = 30;
    CFG.Luz2H_ON = 15;
    CFG.Luz2M_ON = 30;
    CFG.Luz2H_OFF = 24;
    CFG.Luz2M_OFF = 0;
    CFG.Luz3H_ON = 23;
    CFG.Luz3M_ON = 50;
    CFG.Luz3H_OFF = 26;
    CFG.Luz3M_OFF = 0;


    Luego escribiremos las funciones que leerá y grabara nuestro programilla en la EPROM



    Grabamos LA CONFIGURACION EN LA EPROM

    void SalvarConfig()
    {
    uint8_t Valor[sizeof(CFG)];
    memcpy( &Valor, &CFG, sizeof(CFG));
    for (int i = 0; i <= sizeof(Valor); i++)
    EEPROM.write(i, Valor[i]);
    }

    Leer CONFIGURACION DE LA EPROM

    void LeerConfig()
    {
    uint8_t Valor[sizeof(CFG)];
    for (int i = 0; i <= sizeof(CFG); i++)
    Valor[i] = EEPROM.read(i);
    memcpy( &CFG, &Valor, sizeof(CFG));
    }
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  3. #23
    Avatar de JUANK
    Fecha de Ingreso
    02 sep, 06
    Ubicación
    GUADALAJARA
    Mensajes
    94

    Predeterminado

    buen trabajo layans
    gracias por compartir tus conocimientos voy a ver si soy capaz de hacerlo con lo torpe que soy

    Experiencia es el nombre que damos a nuestras equivocaciones









  4. #24
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado

    Juank, es sencillo si se tienen ganas y te importan los pajaros. Un saludo
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  5. #25
    Avatar de JUANK
    Fecha de Ingreso
    02 sep, 06
    Ubicación
    GUADALAJARA
    Mensajes
    94

    Predeterminado

    a ver si me acaban de llegar las cosas y me pongo a ello por ganas no va a ser .
    Ademas he visto que esto tiene tantas posibilidades como imaginacion tenga uno desde las luces como poder conectar educadores a ciertas horas o sensores de humedad para poder conectar ventiladores .
    Ahora que sea capaz o no es otra cosa
    un saludo

    Experiencia es el nombre que damos a nuestras equivocaciones









  6. #26
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado

    Hola, a los que me preguntais y pedis ayuda en el privado, si lo poneis aqui en el post, con una sola respuesta ayudamos y aclaramos a muchos compañeros. No me importa ayudar o explicar a quien sea dentro de mi tiempo.

    A los dos compañeros que han comprado el kit yme preguntaban si podian poner poner varios trasformadores, deciros que los Tip los podeis conectar sin problems uno a cada canal con cada tira de 5 o 10 metros, creando asi varios canales con su alimentacion independiente. Yo les pondria un rele prigramado, una celula fotoelectrica a cada canal o un interruptor manual por si como decis no quereis poner los led debido a que teneis natural suficiente.

    Al compañero que me ha pedido el codigo de la alarma, te lo pondre en unos dias, pero el tecleclado es cosa tuya el que uses.

    Al compañero que me comenta la emisora de radio o el reproductor MP3 o CD de canto lo podeis hacer sin problema, bsta con meterlo en una memoria Sd y poner un odigo ee reproduccion, para la radio hay una placa comercial ya.
    A los compañeros que preguntan por la camara web, hay una placa montada ya, conexion wifi o ethernet, un codigo y listo podeis ver el aviario desde el movil o el trabajo.
    Un saludo y suerte.
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  7. #27
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado

    Juank aqui el limite lo pones tu, puedes hacer lo que desees, si queres una mano no dudes en pedirmela....creo que tengo una de gona, jeheje bromas a parte si quieres mi ayuda sin problema. Un saludo
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  8. #28
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado

    Hola, nuevamente un compañero me ha pedido consejo para hacer unos de los programas de arriba pero para un criadero con luz artificial todo el tiempo, y teniendo tiempo de 15 minutos para alba-ocaso en tiempo descanso y de 30 minutos para preparacion y cria. Los DELAY de ambos casos son para horas concretas a la pregunta del compañero, para mas hor4as habria que modificar ese delay añadiendole mas tiempo.
    *******************************
    Este es el codigo, que a pesar del copyright, por supuesto es de libre uso y gratuito para los compañeros del foro:

    /////////////////////////////////////////////////////////////////////////////////
    // ARCHIVO: Controlador Amanecerr-Anochecerr.ino
    // AUTOR: Layans
    // Copyright 2014
    // PROPOSITO: Iluminacion diaria de un aviario en epoca de cria y reposo.
    // VERSION: 1. Alba-Luzdia-ocaso-noche
    // FECHA: 20/6/2014
    ////////////////////////////////////////////////////////////////////////////////


    int Linea1 = 3; //linea1 es fila jaulas primera
    int Linea2 = 5;// linea2 jaulas fila segunda
    int Linea3 = 6; //linea3 jaulas fila tercera
    int Linea4 = 9; //linea4 jaulas fila cuarta
    int interruptordn= 7; // interruptor d de amanecer-anochecer conectado al pin 7
    int interruptoresta = 4; // interruptor estacional cria-reposo conectado al pin 4

    void setup()
    {
    pinMode(Linea1, OUTPUT); //DEFINIMOS LOS PIN 3 5 6 9 COMO SALIDA
    pinMode(Linea2, OUTPUT);
    pinMode(Linea3, OUTPUT);
    pinMode(linea4, OUTPUT);

    pinMode(interruptoresta, INPUT); // pin 4 como entrada
    pinMode(interruptordn, INPUT); // pin 7 como entrada
    Serial.begin(9600); // empieza la comunicacion a 9600bps
    }
    void loop()
    {
    if (digitalRead(interruptoresta) == HIGH); // si esta activo seria 30 minutos que es la epoca cria
    {
    if(digitalRead(interruptordn) == HIGH) ;// si el interruptor d esta ON haz el amanecer asi
    {
    analogWrite(Linea1,0); // comienzo de amanecer de 30 minutos que son 1800000 milisegundos
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);
    delay(225000); //salto de 3 minutos y 45 segundos

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(225000);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(225000);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(225000);


    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(225000);


    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(225000);


    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(225000);

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(225000);

    analogWrite(Linea1,255);
    analogWrite(Linea2,255);
    analogWrite(Linea3,255);
    analogWrite(Linea4,255); // led encendidos al 100%
    delay(43200000); // tiempo que los led estan encendidos al 100% con tiempo en milisegundos que son 12 horas
    }

    Else if(digitalRead(interruptordn) == LOW) ;// si el interruptor d esta Off haz el anochecer asi
    {
    analogWrite(Linea1,229); // comienzo de anochecer de 30 minutos que son 1800000 milisegundos
    analogWrite(Linea2,229);
    analogWrite(Linea3,229);
    analogWrite(Linea4,229);
    delay(225000); //algo menos de 4 minutos por salto

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(225000);

    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(225000);

    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(225000);

    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(225000);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(225000);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(225000);

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(225000);

    analogWrite(Linea1,0);
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);

    delay(39600000); //retardo de 11horas para que no empiece el ciclo de nuevo y asi se apaga la placa y la fuente los led hasta el dia siguiente
    }
    }

    Else if (digitalRead(interruptoresta) == LOW); // esta desactivado seran 15 minutos que es epoca de reposo
    {
    if(digitalRead(interruptordn) == HIGH) ;// si el interruptor dianoche esta ON haz el amanecer asi
    {
    analogWrite(Linea1,0); // comienzo de amanecer de 15 minutos que son 900000 milisegundos
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);
    delay(112500); //salto de menos de 2minutos

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(112500);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(112500);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(112500);


    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(112500);


    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(112500);


    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(112500);

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(112500);

    analogWrite(Linea1,255);
    analogWrite(Linea2,255);
    analogWrite(Linea3,255);
    analogWrite(Linea4,255); // led encendidos al 100%
    delay(36000000); // tiempo que los led estan encendidos al 100% con tiempo en milisegundos que son 10 horas
    }
    Else if((digitalRead(interruptodn) == LOW); // si el interruptor dn esta Off entonces haz el anochecer asi
    {
    analogWrite(Linea1,255);
    analogWrite(Linea2,255);
    analogWrite(Linea3,255);
    analogWrite(Linea4,255); // led encendidos al 100%

    delay(7200000); // tiempo que los led estan encendidos al 100% con tiempo en milisegundos que son 2 horas

    analogWrite(Linea1,229); // comienzo de anochecer de 15 minutos que son 900000 milisegundos
    analogWrite(Linea2,229);
    analogWrite(Linea3,229);
    analogWrite(Linea4,229);
    delay(112500); //algo menos de 2 minutos por salto

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(112500);

    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(112500);

    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(112500);

    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(112500);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(112500);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(112500);

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(112500);

    analogWrite(Linea1,0);
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);

    delay(41400000); //retardo de 11.30 horas para noche para que no empiece el ciclo amanecer de nuevo y asi se apaga la placa y la fuente los led hasta el dia siguiente
    }
    }

    }

    //////////////////////////////////////////////////////////////////////////////
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  9. #29
    Avatar de Layans
    Fecha de Ingreso
    01 sep, 06
    Ubicación
    Salamanca
    Mensajes
    666

    Predeterminado

    Y si aun se quiere rizar mas el rizo y ahorrar algo de dinero, este circuito se podria hacer con solo una placa arduino uno, un reloj programador, los 1-4 TIP para la salida o canales, pero claro esta que si durante el proceso se marcha la luz, pues se reinicia todo, pero solo pasaria en el modo amanecer. Esto seria perfecto para alimentacion a traves de bateria y/o placa solar.
    **************************************

    Hay un componente que ahora no recuerdo su nombre, pero que tiene la capacidad de unir un punto con otros 6 u 8 u 12 puntos distintos segun le gires, con el se podria hacer, que partiendo que los pajaros necesitan un maximo de 14-15 horas de luz y 9-10 horas de oscuridad para la cria y viceversa en epoca de descanso. Cogiendo este componente con 8 puntos se podrian dar un valor exacto de 30 minutos a cada uno de esos puntos y crear un codigo, con un DELAY variable en funcion de cada uno de esos puntos o posiciones, no haciendo falta asi un ordenador para variar las horas de luz u oscuridad. Si alguien tiene interes en este codigo, puedo poner una parte de el y buscar ese componente electrico que no recuerdo su nombre. Un saludo

    ***********************************
    Este es el codigo, que a pesar del copyright, por supuesto es de libre uso y gratuito para los compañeros del foro:

    /////////////////////////////////////////////////////////////////////////////////
    // ARCHIVO: Controlador Amanecerr-Anochecerr.ino
    // AUTOR: Layans
    // Copyright 2014
    // PROPOSITO: Iluminacion diaria de un aviario en epoca de cria y reposo.
    // VERSION: 1.1 Alba-Luzdia-ocaso-noche
    // FECHA: 20/6/2014
    ////////////////////////////////////////////////////////////////////////////////


    int Linea1 = 3; //linea1 es fila jaulas primera
    int Linea2 = 5;// linea2 jaulas fila segunda
    int Linea3 = 6; //linea3 jaulas fila tercera
    int Linea4 = 9; //linea4 jaulas fila cuarta

    int interruptoresta = 4; // interruptor estacional cria-reposo conectado al pin 4

    void setup()
    {
    pinMode(Linea1, OUTPUT); //DEFINIMOS LOS PIN 3 5 6 9 COMO SALIDA
    pinMode(Linea2, OUTPUT);
    pinMode(Linea3, OUTPUT);
    pinMode(linea4, OUTPUT);
    pinMode(interruptoresta, INPUT); // pin 4 como entrada

    Serial.begin(9600); // empieza la comunicacion a 9600bps
    }
    void loop()
    {
    if (digitalRead(interruptoresta) == HIGH); // si esta activo seria 30 minutos que es la epoca cria
    {

    analogWrite(Linea1,0); // comienzo de amanecer de 30 minutos que son 1800000 milisegundos
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);
    delay(225000); //salto de 3 minutos y 45 segundos

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(225000);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(225000);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(225000);


    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(225000);


    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(225000);


    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(225000);

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(225000);

    analogWrite(Linea1,255);
    analogWrite(Linea2,255);
    analogWrite(Linea3,255);
    analogWrite(Linea4,255); // led encendidos al 100%
    delay(43200000); // tiempo que los led estan encendidos al 100% con tiempo en milisegundos que son 12 horas


    analogWrite(Linea1,229); // comienzo de anochecer de 30 minutos que son 1800000 milisegundos
    analogWrite(Linea2,229);
    analogWrite(Linea3,229);
    analogWrite(Linea4,229);
    delay(225000); //algo menos de 4 minutos por salto

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(225000);

    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(225000);

    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(225000);

    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(225000);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(225000);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(225000);

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(225000);

    analogWrite(Linea1,0);
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);

    delay(39600000); //retardo de 11horas para que no empiece el ciclo de nuevo y asi se apaga la placa y la fuente los led hasta el dia siguiente

    }

    Else if (digitalRead(interruptoresta) == LOW) // esta desactivado seran 15 minutos que es epoca de reposo
    {

    analogWrite(Linea1,0); // comienzo de amanecer de 15 minutos que son 900000 milisegundos
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);
    delay(112500); //salto de menos de 2minutos

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(112500);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(112500);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(112500);


    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(112500);


    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(112500);


    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(112500);

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(112500);

    analogWrite(Linea1,255);
    analogWrite(Linea2,255);
    analogWrite(Linea3,255);
    analogWrite(Linea4,255); // led encendidos al 100%
    delay(36000000); // tiempo que los led estan encendidos al 100% con tiempo en milisegundos que son 10 horas

    analogWrite(Linea1,255);
    analogWrite(Linea2,255);
    analogWrite(Linea3,255);
    analogWrite(Linea4,255); // led encendidos al 100%

    delay(7200000); // tiempo que los led estan encendidos al 100% con tiempo en milisegundos que son 2 horas

    analogWrite(Linea1,229); // comienzo de anochecer de 15 minutos que son 900000 milisegundos
    analogWrite(Linea2,229);
    analogWrite(Linea3,229);
    analogWrite(Linea4,229);
    delay(112500); //algo menos de 2 minutos por salto

    analogWrite(Linea1,213);
    analogWrite(Linea2,213);
    analogWrite(Linea3,213);
    analogWrite(Linea4,213);
    delay(112500);

    analogWrite(Linea1,191);
    analogWrite(Linea2,191);
    analogWrite(Linea3,191);
    analogWrite(Linea4,191);
    delay(112500);

    analogWrite(Linea1,159);
    analogWrite(Linea2,159);
    analogWrite(Linea3,159);
    analogWrite(Linea4,159);
    delay(112500);

    analogWrite(Linea1,127);
    analogWrite(Linea2,127);
    analogWrite(Linea3,127);
    analogWrite(Linea4,127);
    delay(112500);

    analogWrite(Linea1,96);
    analogWrite(Linea2,96);
    analogWrite(Linea3,96);
    analogWrite(Linea4,96);
    delay(112500);

    analogWrite(Linea1,64);
    analogWrite(Linea2,64);
    analogWrite(Linea3,64);
    analogWrite(Linea4,64);
    delay(112500);

    analogWrite(Linea1,32);
    analogWrite(Linea2,32);
    analogWrite(Linea3,32);
    analogWrite(Linea4,32);
    delay(112500);

    analogWrite(Linea1,0);
    analogWrite(Linea2,0);
    analogWrite(Linea3,0);
    analogWrite(Linea4,0);

    delay(41400000); //retardo de 11.30 horas para noche para que no empiece el ciclo amanecer de nuevo y asi se apaga la placa y la fuente los led hasta el dia siguiente
    }
    }


    //////////////////////////////////////////////////////////////////////////////
    Última edición por Layans; 20/06/2014 a las 18:35
    TEMPORADA DE CRIA 2016:
    Amarillo mosaico linea macho
    Rojo mosaico linea macho
    Onix en verde Y bronce mosaico linea macho
    Verdecillos y sus R1,R2 F1, en jaspe y onix verde mosaico y gris y , hacia el verdecillo

  10. #30
    Avatar de aviarioejsv
    Fecha de Ingreso
    11 nov, 10
    Ubicación
    Culiacan, Sinaloa, Mexico
    Mensajes
    207

    Predeterminado

    pero con la programación como la pones tendría que presionar el botón para que amanesca y para que anochesca, no seria automatico el ciclo una vez que comenzara?
    Biol. Erik Jose Serrano Valle
    Culiacan, Sinaloa, Mexico
    http://aviarioejsv.wix.com/aviarioejsv
    Criador de:
    Carduelis lawrencei
    Carduelis psaltria hesperophila
    Carduelis cucullata
    Carduelis spinus
    Carpodacus mexicanus
    Carduelis tristis
    Serinus canaria
    Passerina ciris

Página 3 de 6 PrimerPrimer 123456 ÚltimoÚltimo

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •