Autor Tema: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)  (Leído 2597 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« 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...
« Última modificación: 22 de Enero de 2011, 09:05:15 por fran2v »

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #1 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
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #2 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  
« Última modificación: 23 de Enero de 2011, 07:25:09 por fran2v »

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #3 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
« Última modificación: 23 de Enero de 2011, 08:29:21 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #4 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

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #5 en: 24 de Enero de 2011, 09:10:07 »
estoy realizando el programa de nuevo ya comentaré....GRACIAS

« Última modificación: 25 de Enero de 2011, 05:30:40 por fran2v »

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #6 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.
« Última modificación: 25 de Enero de 2011, 07:12:25 por fran2v »

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #7 en: 25 de Enero de 2011, 11:13:37 »
si mas o menos es lo quete decia yo... continua asi...
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #8 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]

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como poner 3 alarmas en tres salidas diferentes (RelojIglesia)
« Respuesta #9 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

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
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...


 

anything