TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fran2v en 22 de Enero de 2011, 08:50:29

Título: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: fran2v en 22 de Enero de 2011, 08:50:29
Hola amigos como siempre necesita de vuestra inestimable ayuda.

/*******************************************************************************
                           FUNCION DE ALARMAS
*******************************************************************************/
void alarma(void)
{
   output_high(PIN_B7);
   delay_ms(5000);
   output_low(PIN_B7);
}
De esta manera configuro solo una salida de alarma. Necesitaría configurar tres salidas Por ej.: pin B5, Pin B6, Pin B7 para que cuando las compare con la hora me active la salida correspondiente.
Explico:
Intento hacer un Reloj para la Parroquia que pertenezco y necesito las tres salidas para que una encienda el amplificador (5 minutos), otra para que active el carrillon a las horas ( 35 segundos)y otra para que a active las horas ( esta tendrá que dar impulsos de 2,5 segundos por hora marcada por ejemplo a las dos tendría que activar la salida 2,5"parar y volver otros 2,5") a las tres...( activar 2,5" parar, Otros 2,5" parar y otros 2,5". En el ISD tengo grabado en una parte el carrillón y en otra una campanada.)

Gracias por vuestra ayuda y paciencia. Estoy empezando con C y me imagina que todo principio cuesta....pero a mi....ahún más...Agradecería que la ayuda fuera a nivel de "TORPES"...je...je...
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: ppyote en 22 de Enero de 2011, 09:46:52
facil...
void alarma(numero_alarma)
{
   switch(numero_alarma){
   case 0: output_set(PIN_B7);
               delay_ms(5000);
               output_low(PIN_B7);
               break;
    case 1: ....... la otra salida
                break;
    case 2: ........ la otra salida
                breka;
    }
}
si encesitas añadir algo mas ... adelante ... tu mismo
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: fran2v en 23 de Enero de 2011, 07:18:15
Gracias por su ayuda.

Las llamadas de alarma las tengo de esta forma:

                    LECTURA Y COMPARACION DE LA ALARMA 22:15
*******************************************************************************/
                     read_string_eeprom(0x00,leido);
                     sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
                        if(strcmp(ValoresLeidos,leido)==0)
                           alarma();
                           else
                              output_low(PIN_B7);
/*******************************************************************************
                     LECTURA Y COMPARACION DE LA ALARMA 09:00
*******************************************************************************/
                     read_string_eeprom(0x07,leido);
                     sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
                        if(strcmp(ValoresLeidos,leido)==0)
                           alarma();
                           else
                              output_low(PIN_B7);
/*******************************************************************************
                     LECTURA Y COMPARACION DE LA ALARMA 09:25
*******************************************************************************/
                     read_string_eeprom(0x0E,leido);
                     sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
                        if(strcmp(ValoresLeidos,leido)==0)
                           alarma();
                           else
                              output_low(PIN_B7);



...para que cada una me active el pin correspondiente... como lo tendría que hacer...?


void alarma(numero_alarma)
{
   switch(numero_alarma){
   case 0: output_set(PIN_B7);
               delay_ms(5000);
               output_low(PIN_B7);
               break;
    case 1: output_set(PIN_B6);
               delay_ms(5000);
               output_low(PIN_B6);
                break;
    case 2: output_set(PIN_B5);
               delay_ms(5000);
               output_low(PIN_B5);
    }
}


Gracias  
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: ppyote en 23 de Enero de 2011, 07:35:45
como lo haces pero cuando llames a la funcion alarma... entre los parentesis envia un valor a la funcion

read_string_eeprom(0x00,leido);
sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
if(strcmp(ValoresLeidos,leido)==0)
        alarma(1);
        else
        output_low(PIN_B7);


despues en la funciona alarma....

void alarma(int numero_alarma)
{
   switch(numero_alarma){
   case 0: output_set(PIN_B7);
               delay_ms(5000);
               output_low(PIN_B7);
               break;
    case 1: output_set(PIN_B6);
               delay_ms(5000);
               output_low(PIN_B6);
                break;
    case 2: output_set(PIN_B5);
               delay_ms(5000);
               output_low(PIN_B5);
    }
}

y ya esta.... en el ejemplo que te he puesto el valor de numero_alarma = 1.... ejecutaria el swicth en el case 1:
entonces encenderial el pin b6 esperaria 5 seg y apagaria el pin b6
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: fran2v en 24 de Enero de 2011, 07:29:20
Gracias por tus indicaciones....


Me pones .....en el ejemplo:


read_string_eeprom(0x00,leido);
sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
if(strcmp(ValoresLeidos,leido)==0)
        alarma(1);
        else
       output_low(PIN_B7);


mi pregunta.... es correcto..... output_low(PIN_B7); o tendía que ser.... output_low(PIN_B6); ya es que es en el ....... case1

Gracias
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: fran2v en 24 de Enero de 2011, 09:10:07
estoy realizando el programa de nuevo ya comentaré....GRACIAS

Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: fran2v en 25 de Enero de 2011, 05:28:49


Lo tengo así...es correcto........?.:

/*******************************************************************************
                           FUNCION DE ALARMAS
*******************************************************************************/
void alarma(int alarma)
{
   switch(alarma){
   case 0: output_high(PIN_B7);
               delay_ms(5000);
               output_low(PIN_B7);
               break;
    case 1: output_high(PIN_B4);
               delay_ms(5000);
               output_low(PIN_B4);
                break;
    case 2: output_high(PIN_B5);
               delay_ms(5000);
               output_low(PIN_B5);
    }
}
/*******************************************************************************
                     LECTURA Y COMPARACION DE LA ALARMA 22:14:30
*******************************************************************************/
                     read_string_eeprom(0x00,leido);
                     sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
                        if(strcmp(ValoresLeidos,leido)==0)
                           alarma(1);
                           else
                              output_low(PIN_B4);
/*******************************************************************************
                     LECTURA Y COMPARACION DE LA ALARMA 22:14
*******************************************************************************/
                     read_string_eeprom(0x07,leido);
                     sprintf(ValoresLeidos,"%02u%02u%02u",hr,min,sec);
                        if(strcmp(ValoresLeidos,leido)==0)
                           alarma(0);
                           else
                              output_low(PIN_B7);



 (es un ejemplo con PIN_B4 y PIN_B7).....espero que sea correcto.

Muchas gracias.
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: ppyote en 25 de Enero de 2011, 11:13:37
si mas o menos es lo quete decia yo... continua asi...
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: fran2v en 28 de Enero de 2011, 05:42:36
Hola....je...je.... lo he simulado con Proteus 7.7 SP2 y parece que funciona. Gracias ppyote.
Referente a tu comentario de: más o menos es así....me podrias indicar cual sería la mejor manera. Ahora quiero controlar el ds1307 para ponerlo en hora con pulsadores (los mínimos posibles) como empiezo....?   donde encuentro algun ejemplo que me sea válido para ir aprendiendo y adaptarlo.....?

Gracias.....f2v[/i]
Título: Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
Publicado por: ppyote en 28 de Enero de 2011, 11:11:20
Hola....je...je.... lo he simulado con Proteus 7.7 SP2 y parece que funciona. Gracias ppyote.
Referente a tu comentario de: más o menos es así....me podrias indicar cual sería la mejor manera. Ahora quiero controlar el ds1307 para ponerlo en hora con pulsadores (los mínimos posibles) como empiezo....?   donde encuentro algun ejemplo que me sea válido para ir aprendiendo y adaptarlo.....?

mira esta web... es de un forero..
http://picmania.garcia-cuervo.net/proyectos_aux_rtc.php (http://picmania.garcia-cuervo.net/proyectos_aux_rtc.php)

aqui aprenderas muchas cosas del ds1307 y gracias a la libreria _ds1307.c aun se te hara mas facil el manejo de este octopodo....
un saludo