// rev 07-09-2024 Etat_bruleur au lieu de Bruleur // rev 04/09/2024 HT // rev 23/08/2024 Simplification Menu1 SW1L // rev 14-08-2024 // rev 25-05-2024 // rev 13-12-2023 suite menus directs 6 et 7 : Hors_Gel et menu ARRET TOTAL // rev 28-10-2023 // rev 26-10-2023 usage de table de bytes au lieu de string pour caracteres speciaux // rev 12-09-2023 bug si usage de string avec caractere speciaux 0,1,2,3 // rev 11-09-2023 bug: cx au lieu de cx_val! // rev 28-08-2023 voir Affichage_LCD_Repos_2023-08.xls AffichageLCD repos 28 aout void Affiche_LCD_Repos() { unsigned char cx, cx_val=0; Progr_En_Cours=Affectation_Hebdo[jS]; // charge table de travail for (i=0;i<32;i++) { Table_Progr_Horaire_utilisee[i]=Tables_Programmations_Horaires[Progr_En_Cours][i]; } Valeur_Progr= Table_Progr_Horaire_utilisee[Hour]; LCD_Cmd(LCD_HOME); __delay_ms(100); if (Bavard==18) { sprintf(CRam1," Prg: %s ,Mode=%2d , %02dH%02M \r\n",(uint8_t *) Table_Progr_Horaire_utilisee+24,Mode_En_Cours,Hour,Minut); Print(CRam1); } if (Choix_Hors_Gel==0 && Controle_Chaudiere==1) // si on n'est pas en Hors Gel ni ARRET total { if (EXT_mes<0.0) { sprintf(CRam1,"Ext%3.1f Eau %2d/%2d",EXT_mes,(int)EAU_mes,(int)EAU_cbl); } else { sprintf(CRam1,"Ext %3.1f Eau %2d/%2d",EXT_mes,(int)EAU_mes,(int)EAU_cbl); } *(CRam1+6)=7; *(CRam1+14)=7; // sur-impression sigle degre C LCD_Write_Text_At(1,1,CRam1); if (Etat_Bruleur==0) { LCD_Chr_At(1,10,'#'); } else // if (Etat_Bruleur==1) { // LCD_Chr_At(1,10,'$'); // modif en simple clignotant de caractere special $ / Noir(255) ou Vide (' ') (Nb_Boucles & 0x0001)==1 ? LCD_Chr_At(1,10,'$') : LCD_Chr_At(1,10,' '); } //---------- 23-08-2024----------------------- Mode_Progr=ECO; if ( (Minut<30) && (Valeur_Progr & 0x0001)==1 ) Mode_Progr=CFT; if ( (Minut>29) && (Valeur_Progr & 0x0002)==2 ) Mode_Progr=CFT; if ( Valeur_Progr ==3) Mode_Progr=CFT; cx_val=Valeur_Progr; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if ( (Mode_En_Cours==Mode_Progr) && (Forcage_Mode==1) ) // Reset Forcages par Prog { Forcage_Mode=0; Forcage_Consigne = 0; } //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (Forcage_Mode==0) // MODE NORMAL (non Forcé) { LED_Clignote10=0; LCD_char12=' '; Mode_En_Cours= Mode_Progr; if (Mode_Progr==ECO) { Valeur_En_Cours = ECO_csg; LED_Conf = 0; // LED_Conf éteint fixe LED_Eco = 1; // LED_Eco allumé fixe } if (Mode_Progr==CFT) { Valeur_En_Cours = CFT_csg; LED_Conf = 1; // LED_Conf allumé fixe LED_Eco = 0; // LED_Eco éteint fixe } } //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ else // MODE FORCE { if (Mode_Progr==CFT) { Mode_En_Cours=ECO; Valeur_En_Cours = ECO_csg; LED_Conf=1; // LED_Conf allumé fixe LED_Clignote10=5; // LED_Eco Clignote 1Hz LCD_char12=fleche_B; // Forcage_Consigne = 0; // LCD_char15=' '; } else if (Mode_Progr==ECO) { Mode_En_Cours=CFT; Valeur_En_Cours = CFT_csg; LED_Eco=1; // LED_Eco allumé fixe LED_Clignote10=6; // LED_Conf Clignote 1Hz LCD_char12=fleche_H; // Forcage_Consigne = 0; // LCD_char15=' '; } } //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if(Forcage_Consigne==0) // CONSIGNE NORAMALE (non Forcée) { CSG_En_Cours=Valeur_En_Cours; LCD_char15=' '; } //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ else // CONSIGNE FORCEE { if ( (Mode_En_Cours==ECO) && (CSG_En_Cours==ECO_csg) ) // Forcage_Consigne_at= Hour; // ... à voir { Forcage_Consigne=0; LCD_char15=' '; } else if ( (Mode_En_Cours==CFT) && (CSG_En_Cours==CFT_csg) ) // Forcage_Consigne_at= Hour; // ... à voir { Forcage_Consigne=0; LCD_char15=' '; } else { if ( (Mode_En_Cours==ECO) && (CSG_En_Cours < ECO_csg) ) LCD_char15=fleche_B; if ( (Mode_En_Cours==ECO) && (CSG_En_Cours > ECO_csg) ) LCD_char15=fleche_H; if ( (Mode_En_Cours==CFT) && (CSG_En_Cours < CFT_csg) ) LCD_char15=fleche_B; if ( (Mode_En_Cours==CFT) && (CSG_En_Cours > CFT_csg) ) LCD_char15=fleche_H; } } if (Bavard==1) { sprintf(CRam1," Prg: %s ,Mode=%2d , %02dH%02M ",(uint8_t *) Table_Progr_Horaire_utilisee+24,Mode_En_Cours,Hour,Minut); Print(CRam1); sprintf(CRam1," Prg.en cours :%02d soit %s CSG_en_Cours=%3.2f \r\n",Valeur_Progr, Aff_CHX_mod[Mode_En_Cours],CSG_En_Cours); // was sprintf(CRam1," Prg.en cours :%02d soit %s\r\n",Valeur_Progr, Aff_CHX_mod[Mode_En_Cours]); Print(CRam1); } //============================ LCD ligne 2 ============================= CRam1[0]=0; // 11-08-2024 sprintf(CRam1,"Int%3.1f %c%1.1f%c%2s%c%3.1f",INT_mes,NRG_ind,INT_cor,LCD_char12, Aff_CHX_mod[Mode_En_Cours], LCD_char15, CSG_En_Cours ); // was sprintf(CRam1,"Int%3.1f %c%1.1f%c%2s%c%3.1f",INT_mes,NRG_ind,INT_cor,LCD_char12,Aff_CHX_mod[Mode_En_Cours], LCD_char15, CSG_En_Cours *(CRam1+5)=7; *(CRam1+18)=7; // sur-impression sigle degre C if(INT_cor==0) // Si Pas de correction en Compensation, on n'affiche rien // Was if (NRG_ind=='H') // on n'affiche RIEN ! { *(CRam1+9) =32; *(CRam1+10)=32; *(CRam1+11)=32; } LCD_Write_Text_At(2,1,CRam1); if (Bavard==12) { sprintf(CRam1,"Int_mes=%3.1f°C NRG=%c INT_cor=%3.1f°C",INT_mes,NRG_ind,INT_cor); Print(CRam1); CRLF1(); } //=============== LCD ligne 3 (12345678901234567890) =================== CRam1[0]=0; sprintf(CRam1,"%c%c:%c%c m ",time[0],time[1],time[3],time[4]); CRam1[8]=0; LCD_Write_Text_At(3,1,CRam1); // exemple affichage "21:54 m " en debut ligne 3 // 1ere partie programmation MATIN (m) // depart position LCD Ligne 3 deplacement X=9 for(i=0;i<12;i++) { cx=Table_Progr_Horaire_utilisee[i]; LCD_Chr_At(3,i+9,cx); __delay_us(100); if(Bavard==8) { PrintChar( cx+48); PrintChar('.'); } } if(Bavard==8) CRLF1(); //=============== LCD ligne 4 (12345678901234567890) =================== CRam1[0]=0; sprintf(CRam1,"%1c %c%c am",Progr_Name[Progr_En_Cours],*(All_Jour_Semaine+jS*2),*(All_Jour_Semaine+jS*2 +1 ) ); CRam1[8]=0; LCD_Write_Text_At(4,1,CRam1); // exemple affichage: " V Me am>" en debut ligne 3 // 2eme partie programmation APRES MIDI (am) // depart position LCD Ligne4 deplacement X= 9 for (i=0;i<12;i++) { cx=Table_Progr_Horaire_utilisee[i+12]; LCD_Chr_At(4,i+9,cx); __delay_us(100); if(Bavard==8) { PrintChar( cx+48); PrintChar('.'); } } if(Bavard==8) CRLF1(); if ( HHMN_force==0) Hour=Bcd2Dec(heure); Demi_Heure_En_Cours=(Hour<<1) + (Minut>29) ; // * 2 +1 ! if(Bavard==8) { sprintf(CRam1," Demi Heure en cours = %d \r\n",Demi_Heure_En_Cours); Print(CRam1); } //------- animation motif graphique table de programmation ----------- // en fonction de la demi-heure en cours dans l'heure encours // cx_val contient la representation du Programme Horaire en cours if ( Hour<12) { LCD_Chr_At(4,8,' '); LCD_Chr_At(3,8,'>'); c2=9+Hour; // colone LCD ligne 3 if ( (Nb_Boucles & 0x0001)==0 ) { switch (cx_val) { case 0: LCD_Chr_At(3,c2,' '); break; case 1: case 2: LCD_Chr_At(3,c2,' '); break; case 3: if (Minut<30) LCD_Chr_At(3,c2,2); if (Minut>29) LCD_Chr_At(3,c2,1); break; } } else { LCD_Chr_At(3,c2,cx_val); } } else { LCD_Chr_At(3,8,' '); LCD_Chr_At(4,8,'>'); c2=Hour-3; // colone LCD ligne 4 //------- Animation motif graphique table de programmation ------- // en fonction de la demi-heure en cours dans l'heure en cours if ( (Nb_Boucles & 0x0001)==0 ) { switch (cx_val) { case 0: LCD_Chr_At(4,c2,' '); break; case 1: case 2: LCD_Chr_At(4,c2,' '); break; case 3: if (Minut<30) LCD_Chr_At(4,c2,2); if (Minut>29) LCD_Chr_At(4,c2,1); break; } } else { LCD_Chr_At(4,c2,cx_val); } } } else// si on est en Hors Gel ou ARRET total { LED_Clignote10=0; // Arrêt Clignote 1Hz LED_Clignote05=0; // Arrêt Clignote 0.5Hz LED_Eco=0; // LED_Conf éteint fixe LED_Conf=0; // LED_Conf éteint fixe //---------------------------------------------------------------------- if (Choix_Hors_Gel==1 ) // HORS GEL { CSG_En_Cours=HGL_csg; sprintf(CRam1,"Int %3.1f Csg=%3.1f ",INT_mes,CSG_En_Cours); *(CRam1+6)=7; *(CRam1+17)=7; LCD_Write_Text_At(2,1,CRam1); sprintf(CRam1,"%c%c:%c%c HORS GEL ",time[0],time[1],time[3],time[4]); LCD_Write_Text_At(3,1,CRam1); Progr_En_Cours=10; // = W; sprintf(CRam1,"%1c %c%c ",Progr_Name[Progr_En_Cours],*(All_Jour_Semaine+jS*2),*(All_Jour_Semaine+jS*2 +1 ) ); LCD_Write_Text_At(4,1,CRam1); } //---------------------------------------------------------------------- if (Controle_Chaudiere==0) // ARRET TOTAL { if (EXT_mes<0.0) { sprintf(CRam1,"Ext%3.1f Eau %2d C ",EXT_mes,(int)EAU_mes); } else { sprintf(CRam1,"Ext %3.1f Eau %2d C ",EXT_mes,(int)EAU_mes); } *(CRam1+6)=7; *(CRam1+17)=7; // sur-impression sigle degre C LCD_Write_Text_At(1,1,CRam1); if (Bruleur==0) { LCD_Write_Text_At(1,10,'#'); sprintf(CRam1,"Int %3.1f ", INT_mes); // Remonte la Température Intérieure Mesurée // was sprintf(CRam1,"Int %3.1f ", CSG_En_Cours); *(CRam1+6)=7; } LCD_Write_Text_At(2,1,CRam1); sprintf(CRam1,"%c%c:%c%c ARRET TOTAL ",time[0],time[1],time[3],time[4]); LCD_Write_Text_At(3,1,CRam1); Progr_En_Cours=11; sprintf(CRam1, "%1c %c%c START=SW1L+SW2L",Progr_Name[Progr_En_Cours],*(All_Jour_Semaine+jS*2),*(All_Jour_Semaine+jS*2 +1 ) ); LCD_Write_Text_At(4,1,CRam1); } } }