hola KillerJC
Hice este programa Pero, so se como activar por un tiempo en minutos,
tengo 4 switch el primero es fresa, lechuga, tomate y manual.
entonces quiero que se active la fresa= Tiempo Riego 5 minutos y tiempo Descanso 45 minutos asi durante todo un ciclo, por que asi cuando se quede enclavado el switch. y asi con los demás con lechuga y tomate.
adjunto el programa hecho en Pic C Complier Utilizo el PIC18f4550.
espero sus respuestas.
gracias.
#include <HIDROPONIATIMER.h>
#include <lcd.c>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#use standard_io(A)
#use standard_io(B)
#use standard_io(C)
#use standard_io(D)
void main(){
port_B_pullups(TRUE);
long TAF,TBF,TAL,TBL,TAT,TBT,TMR,TMD,Min; //variable largas (long) tiempo de minutos.
lcd_init(); //inicializador de lcd.
lcd_gotoxy(1,1); //cordenadas donde aparecera el mensaje.
printf(lcd_putc," SISTEMA "); //impresion en la pantalla LCD (aparece msj)
lcd_gotoxy(1,2); //cordenadas donde aparecera el mensaje.
printf(lcd_putc," HIDROPONICO ");
delay_ms(2000);
Min=60000; // Vaiable qe minutos
TMR=5; //Tiempo Manual ON
TMD=5; //Tiempo Manual OFF //variables designandole tiempo
TAF=1; //Tiempo Fresa ON
TBF=2; //Tiempo Fresa OFF
TAL=2; //Tiempo Lechuga ON
TBL=4; //Tiempo Lechuga OFF
TAT=3; //Tiempo Tomate ON
TBT=5; //Tiempo Tomate OFF
while(TRUE){
lcd_gotoxy(1,1); // Posicionar UN mesaje por coordenadas //***
Printf(lcd_putc," Bienvenido "); // Imprime mensaje //***
lcd_gotoxy(1,2); //***estas igual
printf(lcd_putc, " MENU "); //***
delay_ms(200);
while((input(PIN_B0)==0)&&(input(PIN_B1)==1)&&(input(PIN_B2)==1)){ //Modo fresa
lcd_gotoxy(1,1);
printf(lcd_putc," Fresa ");
lcd_gotoxy(1,2);
printf(lcd_putc," Riego=%lu Min ",TAF);
delay_ms(10);
output_high(PIN_C0);
delay_ms(TAF*Min); //valor de la variable
output_low(PIN_C0);
delay_ms(TBF*Min);
}
While((input(PIN_B0)==1)&&(input(PIN_B1)==0)&&(input(PIN_B2)==1)){ //Modo Lechuga
lcd_gotoxy(1,1);
printf(lcd_putc," Lechuga ");
lcd_gotoxy(1,2);
printf(lcd_putc," Riego=%lu Min ",TAL);
output_high(PIN_C0);
delay_ms(TAL*Min);
output_low(PIN_C0);
delay_ms(TBL*Min);
}
While((input(PIN_B0)==1)&&(input(PIN_B1)==1)&&(input(PIN_B2)==0)){ //Modo Tomate
lcd_gotoxy(1,1);
printf(lcd_putc," Tomate ");
lcd_gotoxy(1,2);
printf(lcd_putc," Riego=%lu Min ",TAT); // %lu muestra el valor de la variable dada.
output_high(PIN_C0);
delay_ms(TAT*Min);
output_low(PIN_C0);
delay_ms(TBT*Min);
}
while((input(PIN_B0)==1)&&(input(PIN_B1)==1)&&(input(PIN_B2)==1)&&(input(PIN_B3)==0)){ //Modo Manual
lcd_gotoxy(1,1);
printf(lcd_putc,"Riego=%lu Min ",TMR);
lcd_gotoxy(1,2);
printf(lcd_putc,"Descanso=%lu Min ",TMD);
while(input(PIN_B4)==0){ // lineas para los botones Incrementar Riego
TMR=TMR+5;
lcd_gotoxy(1,1);
printf(lcd_putc,"Riego=%lu Min ",TMR);
delay_ms(200);
}
while(input(PIN_B5)==0){ // lineas para los botones decrementar Riego
TMR=TMR-5;
lcd_gotoxy(1,1);
printf(lcd_putc,"Riego=%lu Min ",TMR);
delay_ms(200);
}
while(input(PIN_B6)==0){ // lineas para los botones Incrementar descanso
TMD=TMD+5;
lcd_gotoxy(1,2);
printf(lcd_putc,"Descanso=%lu Min ",TMD);
delay_ms(200);
}
while(input(PIN_B7)==0){ // lineas para los botones decremetar descanso
TMD=TMD-5;
lcd_gotoxy(1,2);
printf(lcd_putc,"Descanso=%lu Min ",TMD);
delay_ms(200);
}
while((input(PIN_B0)==1)&&(input(PIN_B1)==1)&&(input(PIN_B2)==1)&&(input(PIN_B3)==1)){
output_high(PIN_C0);
delay_ms(TMR*Min);
output_low(PIN_C0);
delay_ms(TMD*Min);
}
}
}
}