J'dirais 2, ça m'a l'air plus évolutif. Merci.
Yank
-----
J'dirais 2, ça m'a l'air plus évolutif. Merci.
Yank
Bonjour,
Ok, je pense aussi que c'est une bonne solution. Le menu va représenter un bonne partie du programme final
Après l'exclusion du 20X2, cause aux 4 hpwm non utilisables indépendamment (destinés à commander des ponds et demi ponds) et les petits problèmes de time sur le 20M2,
la meilleure solution serait le kit AXE 401, pour le prix, il inclut le picaxe 28X2, une plaque d'assemblage,etc,etc...bref, à médité:
http://www.gotronic.fr/art-kit-shiel...401k-17941.htm
voir la fiche technique. (Précision, je ne suis le représentant de personne et je ne vends rien)
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Woh. ça commence à dépasser (et de loin) mes (maigres) connaissances en électronique. Je ne sais pas ce qu'est un S.H.I.E.L.D., mais si je peux intégrer une organisation secrète, tant mieux ! ^^ (Comprennes qui pourra ^^)
Bon, très bien, ça avance, c'est extra... Merci encore, je serais surement encore à tenter de câbler des trucs improbables si t'avais pas foutu le nez la dedans, c'est.... hmmm, je crois que le vrai terme est "généreux". Alors encore Merci.
Je me penche dessus dans la semaine prochaine histoire de faire le clair sur la liste de course et sur le plan de cablage, parce que ça devient fourni pour mon petit cerveau !
Yank
Je ne suis pas un spécialiste arduino, mais je croix savoir que la notion de "shield" estune de leur trouvaille, l'arduino est la base, avec le µC et les alim et les E/S du µC sur des connecteurs, les shields sont des extensions propres à chaque application, qui se fixent sur les connecteurs. Tout comme l'AXE 401 qui est disent ils compatible avec ls shield arduino, je n'ai pas vérifié.
"Généreux"... j'ai pas encore parlé des "compensations". En fait, c'est la possibilité, si le projet abouti, d'ajouter un page à la liste des réalisations des "forumeurs":
Comme celle ci :
http://electromag1.wifeo.com/portail...utomatique.php
ou celle là, d'un autre forum
http://electromag1.wifeo.com/chrono-agility.php
Je réfléchis un peu au menu possible
MM
Dernière modification par mag1 ; 10/12/2015 à 20h40.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Sauf surprise, le système est quasiment près.
Un détail, si le même ventilo assure les fonctions "refroidissement" en marche "continue", il fonctionne par intermittence en mode "renouvellement". Quelle serait la fréquence dans cette fonction?
Je propose un système idem irrigation, par ex 15 s de fonctionnement toutes les X minutes. Ok?
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Salut !
Désolé de l'attente, c'est un brin le rush en ce moment...
Alors, concernant le ventilo de "renouvellement" : Le même système que l'irrigation me convient très bien. Au niveau de l'intervalle, 15 secondes serait parfait. Merci !
Yank
Bonjour,
En attendant, la proposition picaxe de gestion de la serre est terminée, elle répond au cahier des charges ci dessous:
Les deux rampes leds chaudes et froides sont sélectionnées par un interrupteur connecté au picaxe.
Les autres paramètres sont entrés par un menu disponible à tout moment, en appuyant sur le poussoir (déclenche une interruption)
Un potentiomètre permet de balayer les options du menu, le poussoir valide
Méthode:
Appui poussoir -> menu -> affichage d'un sous menu par potar -> validation du sous menu par poussoir -> réglage du paramètre par potar -> validation et retour au menu par poussoir
Chaque option du menu est accompagnée du réglage correspondant
Les options du menu et réglages des paramètres:
1- Puissance leds de 0 à 100%
2- Puissance brassage de 0 à 100%
3- T° de consigne de la régulation de température T°-1°C, on chauffe ; T°+1°C, on ventille
4- Cycle d'irrigation: 1 mn toutes le X minutes avec X=0 à 40 mn
5- Temps d'allumage leds chaudes: X heures /24 h, avec X =0 à 24
6- Temps d'allumage des leds froides : X heures /24h avec X=0 à 24
7- Cycle renouvellement d'air : ventillation 15 s toutes les X minutes avec X= 0 à 40 mn
8- Sortie du menu. Mémorisation des paramètres. Retour au programme principal et poursuite du cycle de 24 H
Un LCD affiche l'ensemble des paramètres, sur 4 lignes
Leds sélectionnées, le temps d'éclairage programmé de cette rampe, le temps passé en heures dans le cycle, t° consigne, t° lue
Dans cette configuration, la variable time s'incrémente toutes les 3 s (env). Après étalonnage, cette base de temps est stable.
ETC, voir photo jointe
Le volume du programme est au max des possibilités du 20M2. On ne peut rien ajouter, mais le programme n'est pas optimisé
Dernière modification par mag1 ; 16/12/2015 à 21h24.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Voici le schéma du circuit, ajout d'un poussoir reset pour réinitialiser le cycle de 24 H.
Un gosub a fait économiser 200 octets. On peut peaufiner un peu la présentation.
Vu le nombre réduit de composants, une petite plaque véroboard suffirait
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
salut; Je n'ai rien suivi au sujet mais l'absence de résistance de grille sur chaque Mosfet me fait tiqué, c'est un oubli ? Difficile de donner une valeur exacte facilement mais j'ai vu du 47 à 300 ohms selon les cas.
Cette Rg est ignorée dans les notes d'interfaces picaxes ( IRL520 Ciss=500pF et ici, IRL530 et 800pF). Donc, j'ai rien mis, sinon, avec 5 V et 20mA max sur la sortie, en considérant que les 900pF déchargés comme un C/C , ça fait 250ohms.
Dans cette appli, j'aurai plutôt tendance à supprimer aussi les 10k.
Les puristes seront d'un autre avis.
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
C'est la fin de l'année, l'époque des cadeaux....
Voici le programme répondant au CDC (et un peu plus) de Yank, si il est encore intéressé.
La précision de la seconde sur 24 h n'est pas garantie, il faudrait une horloge temps réelle (entrées I2C libres). Mais elle n'est peut être pas nécessaire.
Bonne annéeCode:#picaxe 20M2 ;directive picaxe utilisé (fac.) ;noms broches symbol LCD =C.0 symbol Chauffe =B.0 ;sortie chauffage symbol sorbrass =B.1 symbol choixmenu =B.3 ;ADC symbol Pomp =B.4 ;sortie pompe symbol sondeT =B.6 ;readtemp DS18B20 symbol Ventil =C.4 ;sortie ventil symbol led0 =C.5 symbol led1 =C.3 symbol led =pinC.6 ;noms variables bit symbol finmenu=bit0 symbol memoirrig=bit1 symbol memoair=bit2 symbol memoled=bit3 ;noms variables byte symbol tempelu=b1 symbol consigTempe=b2 symbol air=b3 symbol affirrig=b4 symbol puisled=b5 symbol irrig=b6 symbol tempoled1=b7 symbol tempoled0=b8 symbol affair=b9 symbol brass=b10 symbol tempoled=b11 symbol toprenouv=b12 symbol topirrigat=b13 symbol htime=b14 symbol affled=b15 ;noms variables word symbol memotime=w10 symbol memotime2=w11 symbol memotime1=w12 symbol vartemp=w13 ;variable temporaire (vie courte) ;noms constantes symbol baud=N4800_32 symbol temp24=27100 ;nbre d'incrémentations de time en 24h dans cette configuration ; une incrémentation = 3,2 s env symbol tpsirrig=18 ;temps irrigation 18x3,2=57,6 s symbol tpsrenouv=5 ;temps renouvelement air 5x3,2=16 s ;***************************************************************** setfreq M32 ;fréquence picaxe 32MHz pullup %100001001000000 ;pullup sur C.1 , C.6 et B.6 pause 500 ;tempo init LCD read 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair gosub convers ;conversion param horloge 24 heures pwmout sorbrass,249,0 ;activation pwm sortie brassage serout C.0,baud,(254,1) ;RAZ LCD setint %00000,%00010 ;interruption niv 0 sur C.1 gosub affichtxt ;affichage fond d'écran gosub affichval ;affichage paramètres enregistrés memoled=not led ;pour passer par le reglage pwmout time=0 ;******* programme principal ************ do if time >temp24 then ;fin cycle 24 h time=0 ;RAZ time endif gosub choixled ;lecture du switch led et ajustement temps cycle gosub regultemp ;régulation de température sorties chauffage/ventilation gosub tempocycle ;réglage du cycle en ft des leds sélectionnées gosub irrigat ;temporisation irrigation gosub renouvair ;temporisation renouvellement d'air gosub brassage ;réglage puissance brassage gosub lectempe ;lecture de la sonde de température DS18B20 gosub affichval ;affichage et actualisation des paramètres loop end ;fin programme principal ;*************************************************************** choixled: if led<>memoled then ;pour ne passer qu'en cas de changement vartemp=puisled*10 ;vartemp de 0 à 1000 (250 x 4) if led=0 then pwmout led1, off ;arret PWM sur led1 pwmout led0,249,vartemp ; start pwm led0 1000Hz tempoled=tempoled0 ;chargement val mémorisée memoled=%0 ;mémo leds en fonction (froides) affled="F" ;val affichage leds froides else pwmout led0,off ;arret leds froides pwmout led1,249,vartemp ;start pwm leds chaudes tempoled=tempoled1 memoled=%1 ;mémo leds en fonction (chaudes) affled="C" endif endif return lectempe: if memotime<>time then readtemp sondeT,tempelu ;lecture de la température memotime=time ;pour attendre le prochain changement de time endif return regultemp: If tempelu > consigtempe then high Ventil : low chauffe ;surchauffe, on chauffe pas et on ventille elseif tempelu < consigtempe and memoair=1 then high Ventil : high chauffe ;on chauffe mais on ventille (dans cycle ventilation) elseif tempelu < consigtempe and memoair=0 then low ventil:high chauffe ;on chauffe sans ventiller (hors cycle ventilation) elseif tempelu = consigtempe and memoair=1 then high Ventil : low chauffe ;dans la bande de régulation mais on ventille cause cycle else low Ventil : low chauffe ;dans tous les autres cas, on ne fait rien endif return brassage: vartemp=brass*10 pwmduty sorbrass,vartemp return tempocycle: vartemp=temp24/24 htime=time/vartemp vartemp=puisled*10 if led=0 and htime<=tempoled0 then pwmduty led0,vartemp elseif led=1 and htime<=tempoled1 then pwmduty led1,vartemp else pwmduty led0,0 pwmduty led1,0 endif return irrigat: topirrigat=time//irrig ;modulo temps irrigation if topirrigat <>0 and memoirrig =0 then ;si modulo=0 ou memo=0 return endif if topirrigat=0 then ;on est dans le modulo=0 memotime1=time+tpsirrig ;on mémorise le temp présent +temps d'ouverture,ici 18 unités time endif if memotime1>time then ;on pas rattraper le temps mémorisé memoirrig=1 ;memoirrig=0, la porte reste ouverte high pomp ;pompe sur marche else memoirrig=0 ;on a rattrapé le temps mémorisé,on ferme la porte low pomp ;arret de la pompe endif return renouvair: toprenouv=time//air if toprenouv <>0 and memoair =0 then return endif if toprenouv=0 then memotime2=time+tpsrenouv endif if memotime2>time then memoair=1 high ventil else memoair=0 ;low ventil par regulation tempé,même ventilo endif return convers: air=temp24/24/60*affair irrig=temp24/24/60*affirrig ;interval irrigation en mn return affichtxt: serout LCD,baud,(254,128,"Led TC/TP TßCo Tßlue ") serout LCD,baud,(254,148,"PLed Vent Irri Brass") return affichval: serout LCD,baud,(254,212,#puisled,"%",254,217,#affair,"m",254,222,#affirrig,"m",254,227,#brass,"%") serout LCD,baud,(254,193,affled,254,196,#htime,"/",#tempoled," ",254,202,#consigtempe,"ß",254,207,#tempelu,"ß") ;serout LCD,baud,(254,192,affled,254,196,#time,254,202,#consigtempe,"ß",254,207,#tempelu,"ß");test time return ;******************************************************* interrupt: ;sous programme MENU serout LCD,baud,(254,1) ;RAZ LCD do loop while pinC.1=0 ;attente relachement poussoir finmenu=%0 ;on tourne jusqu'a ce que ce bit passe à 0 do readadc choixmenu, vartemp select case vartemp case >200 gosub mretour case >175 gosub mrenouvel case >150 gosub mtempfroid case >125 gosub mtempchaud case >100 gosub mirrig case >75 gosub mconsgtemp case >50 gosub mbrass case>=0 gosub mpuisled endselect loop while finmenu=%0 ;sortie de boucle avec finmenu=1 return ;d'où return prog principal efface: serout LCD,baud,(254,192, " ") return mbrass: serout LCD,baud,(254,128, "2-Brassage ") ;titre serout LCD,baud,(254,192, #brass,"% ") ;affichage variable enregistrée if pinC.1= 1 then return :endif ;si on appuie pas sur le poussoir,retour dans la boucle do loop while pinC.1=0 ;on a appuyé ! On passe au réglage Do readadc choixmenu,vartemp ;lecture du potard vartemp=100*vartemp/255 ;mise à l'échelle serout LCD,baud,(254,192,"reg ",#vartemp," % ") ;affichage, ici 0 à 100% loop while pinC.1=1 ;on boucle tant que l'on appuie pas brass=vartemp ;mise à jour variable, ici brass do loop while pinC.1=0 ;attente relachement gosub efface ;effacement ligne 2 return mpuisled: serout LCD,baud,(254,128, "1-Puissance leds ") serout LCD,baud,(254,192, #puisled,"% ");de 0 à 100% if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=100*vartemp/255 serout LCD,baud,(254,192,"reg ",#vartemp,"% ") ;de 0 à 100% loop while pinC.1=1 puisled=vartemp do loop while pinC.1=0 gosub efface return mconsgtemp: serout LCD,baud,(254,128, "3-Consigne temperat ") serout LCD,baud,(254,192, #consigtempe,"ßC ") ;de 20 à 30°C if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=10*vartemp/255 +20 serout LCD,baud,(254,192,"reg ",#vartemp,"ßC ") loop while pinC.1=1 consigtempe=vartemp do loop while pinC.1=0 gosub efface return mirrig: serout LCD,baud,(254,128, "4-Cycle irrigation ") serout LCD,baud,(254,192, #affirrig,"mn ") ;de 20 à 30°C if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=40*vartemp/255 affirrig=vartemp serout LCD,baud,(254,192,"reg ",#affirrig,"mn ") ; de 1 à 40 mn loop while pinC.1=1 do loop while pinC.1=0 gosub efface return mtempchaud: serout LCD,baud,(254,128, "5-Cycle leds chaudes") serout LCD,baud,(254,192, #tempoled1,"h/24 ");heures sur 24 heure if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=24*vartemp/255 tempoled1=vartemp serout LCD,baud,(254,192,"reg " ,#tempoled1,"h/24 ") ;heures sur 24 heure loop while pinC.1=1 gosub efface do loop while pinC.1=0 return mtempfroid: serout LCD,baud,(254,128, "6-Cycle leds froides") serout LCD,baud,(254,192, #tempoled0,"h/24 ");heures sur 24 heure if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=24*vartemp/255 tempoled0=vartemp serout LCD,baud,(254,192,"reg ",#tempoled0,"h/24 ") ;heures sur 24 heure loop while pinC.1=1 do loop while pinC.1=0 gosub efface return mrenouvel: serout LCD,baud,(254,128, "7-Cycle renouvel air") serout LCD,baud,(254,192, #affair,"mn ") if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=40*vartemp/255 affair=vartemp serout LCD,baud,(254,192,"reg ",#affair,"mn ") ; de 1 à 40 mn loop while pinC.1=1 do loop while pinC.1=0 gosub efface return mretour: serout LCD,baud,(254,128, "8-Retour ") gosub efface if pinC.1=1 then return:endif finmenu=1 write 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair gosub convers ;conversion variables affichées en variables de travail memoled=not led ;pour actualisation éventuelle de la rampe de leds C/F do loop while pinC.1=0 ;attente relachement poussoir gosub affichtxt gosub affichval setint %00000,%00010 return
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
L'intéressé a confirmé qu'il était toujours intéressé.
Voici une MAJ du programme, des erreurs en moins, des commentaires en plus.
J'ai vu aussi une interruption de l'irrigation entre 21h et 7 h? C'est ajouter, à confirmer.
MMCode:#picaxe 20M2 ;directive picaxe utilisé (fac.) ;noms broches symbol LCD =C.0 ;sortie LCD symbol Chauffe =B.0 ;sortie chauffage symbol sorbrass =B.1 ;sortie brassage symbol choixmenu =B.3 ;ADC symbol Pomp =B.4 ;sortie pompe symbol sondeT =B.6 ;readtemp DS18B20 symbol Ventil =C.4 ;sortie ventil symbol led0 =C.5 ;sortie leds froides symbol led1 =C.3 ;sortie leds chaudes symbol led =pinC.6 ;entrée choix leds ;noms variables bit symbol finmenu=bit0 ;bit sortie menu symbol memoirrig=bit1 ;bit memo irrigation en cours symbol memoair=bit2 ;bit mémo reneuvellement air en ours symbol memoled=bit3 ;bit modif choix led ;noms variables byte symbol tempelu=b1 ;tempé lue DS18B20 symbol consigTempe=b2 ;temé consigne régulation symbol htime=b3 ;heure en cours symbol affirrig=b4 ;affichage temps cycle irrigation en clair symbol puisled=b5 ;puissance leds symbol tempoled1=b6 ;tempo leds chaudes symbol tempoled0=b7 ;tempo leds froides symbol affair=b8 ;affichage tempo cycle renouv air symbol brass=b9 ;puissange brassage symbol affled=b10 ;affichage led (F / C) symbol tempoled=b11 ;tempo leds actuelle ;noms variables word symbol air=w8 ;temps cycle renouvellement air symbol irrig=w9 ;temps cycle irrigation symbol memotime=w10 ;mémo changement variable time symbol memotime2=w11 ;temps fermeture renouvellement air symbol memotime1=w12 ;temps fermeture irrigation symbol vartemp=w13 ;variable temporaire (vie courte) ;noms constantes symbol baud=N4800_32 symbol temp24=26350 ;nbre d'incrémentations de time en 24h dans cette configuration ; une incrémentation = 3,2 s env symbol tpsirrig=18 ;temps irrigation 18x3,2=57,6 s symbol tpsrenouv=5 ;temps renouvelement air 5x3,2=16 s ;***************************************************************** setfreq M32 ;fréquence picaxe 32MHz pullup %100001001000000 ;pullup sur C.1 , C.6 et B.6 pause 500 ;tempo init LCD read 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair gosub convers ;conversion param horloge 24 heures pwmout sorbrass,249,0 ;activation pwm sortie brassage 1000Hz à 32M serout C.0,baud,(254,1) ;RAZ LCD setint %00000,%00010 ;interruption niv 0 sur C.1 gosub affichtxt ;affichage fond d'écran gosub affichval ;affichage paramètres enregistrés memoled=not led ;pour passer par le reglage pwmout time=0 ;******* programme principal ************ do if time >=temp24 then ;fin cycle 24 h time=0 ;RAZ time endif gosub choixled ;lecture du switch led et ajustement temps cycle gosub regultemp ;régulation de température sorties chauffage/ventilation gosub tempocycle ;réglage du cycle en ft des leds sélectionnées gosub irrigat ;temporisation irrigation gosub renouvair ;temporisation renouvellement d'air gosub brassage ;réglage puissance brassage gosub lectempe ;lecture de la sonde de température DS18B20 gosub affichval ;affichage et actualisation des paramètres loop end ;fin programme principal ;*************************************************************** choixled: if led<>memoled then ;pour ne passer qu'en cas de changement vartemp=puisled*10 ;vartemp de 0 à 1000 (250 x 4) if led=0 then pwmout led1, off ;arret PWM sur led1 pwmout led0,249,vartemp ; start pwm led0 1000Hz tempoled=tempoled0 ;chargement val mémorisée memoled=%0 ;mémo leds en fonction (froides) affled="F" ;val affichage leds froides else pwmout led0,off ;arret leds froides pwmout led1,249,vartemp ;start pwm leds chaudes tempoled=tempoled1 memoled=%1 ;mémo leds en fonction (chaudes) affled="C" endif endif return ;******************************************* lectempe: if memotime<>time then readtemp sondeT,tempelu ;lecture de la température memotime=time ;pour attendre le prochain changement de time endif return ;******************************************* regultemp: If tempelu > consigtempe then high Ventil : low chauffe ;surchauffe, on chauffe pas et on ventille elseif tempelu < consigtempe and memoair=1 then high Ventil : high chauffe ;on chauffe mais on ventille (dans cycle ventilation) elseif tempelu < consigtempe and memoair=0 then low ventil:high chauffe ;on chauffe sans ventiller (hors cycle ventilation) elseif tempelu = consigtempe and memoair=1 then high Ventil : low chauffe ;dans la bande de régulation mais on ventille cause cycle else low Ventil : low chauffe ;dans tous les autres cas, on ne fait rien endif return brassage: vartemp=brass*10 pwmduty sorbrass,vartemp return tempocycle: vartemp=temp24/24 ;nbre incrémentation time pour une heure htime=time/vartemp ;calcul heure en cours vartemp=puisled*10 ;puissance led en dutytime if led=0 and htime<=tempoled0 then ;si bonne leds et dans le cycle éclairement pwmduty led0,vartemp ;MAJ pwm duty elseif led=1 and htime<=tempoled1 then ;sinon, c'est l'autre... pwmduty led1,vartemp else pwmduty led0,0 ;hors des temps éclairement pwmduty led1,0 ;on éteint tout endif return irrigat: if htime>=21 or htime <=7 then ;on est hors du créneau low pomp ;confirmation, au cas où return ;on repart endif vartemp=time//irrig ;modulo temps irrigation if vartemp <>0 and memoirrig =0 then ;si pas modulo=0 et porte fermée, return ;on repart endif if vartemp=0 then ;on est dans le modulo=0 memotime1=time+tpsirrig ;on mémorise le temp présent +temps d'ouverture,voir constantes endif if memotime1>time then ;on a pas rattrapé le temps mémorisé memoirrig=1 ;memoirrig=1, la porte reste ouverte high pomp ;pompe sur marche else memoirrig=0 ;on a rattrapé le temps mémorisé,on ferme la porte low pomp ;arret de la pompe endif return renouvair: vartemp=time//air if vartemp <>0 and memoair =0 then return endif if vartemp=0 then memotime2=time+tpsrenouv endif if memotime2>time then memoair=1 ;porte reste ouverte high ventil else memoair=0 ;porte fermée pour le renouvellement air ;low ventil par regulation tempé,même ventilo endif return convers: air=temp24/24/59*affair ;59 pour compensation arrondi irrig=temp24/24/59*affirrig ;interval irrigation en unités time return affichtxt: serout LCD,baud,(254,128,"Led TC/TP TßCo Tßlue ") ;ß=alt+0223 donne ° sur écran chinois serout LCD,baud,(254,148,"PLed Vent Irri Brass") return affichval: serout LCD,baud,(254,212,#puisled,"%",254,217,#affair,"m",254,222,#affirrig,"m",254,227,#brass,"%") serout LCD,baud,(254,193,affled,254,196,#htime,"/",#tempoled," ",254,202,#consigtempe,"ß",254,207,#tempelu,"ß") ;serout LCD,baud,(254,192,affled,254,196,#time,254,202,#consigtempe,"ß",254,207,#tempelu,"ß");test time return ;******************************************************* interrupt: ;sous programme MENU, intro des variables serout LCD,baud,(254,1) ;RAZ LCD do loop while pinC.1=0 ;attente relachement poussoir finmenu=%0 ;on tourne jusqu'a ce que ce bit passe à 1 do readadc choixmenu, vartemp select case vartemp case >200 gosub mretour case >175 gosub mrenouvel case >150 gosub mtempfroid case >125 gosub mtempchaud case >100 gosub mirrig case >75 gosub mconsgtemp case >50 gosub mbrass case>=0 gosub mpuisled endselect loop while finmenu=%0 ;sortie de boucle avec finmenu=1 return ;d'où return prog principal efface: do loop while pinC.1=0 serout LCD,baud,(254,192, " ") return mbrass: serout LCD,baud,(254,128, "2-Brassage ") ;titre serout LCD,baud,(254,192, #brass,"% ") ;affichage variable enregistrée if pinC.1= 1 then return :endif ;si on appuie pas sur le poussoir,retour dans la boucle do loop while pinC.1=0 ;on a appuyé ! On passe au réglage Do readadc choixmenu,vartemp ;lecture du potard vartemp=100*vartemp/255 ;mise à l'échelle serout LCD,baud,(254,192,"reg ",#vartemp," % ") ;affichage, ici 0 à 100% loop while pinC.1=1 ;on boucle tant que l'on appuie pas brass=vartemp ;mise à jour variable, ici brass gosub efface ;effacement ligne 2 return mpuisled: serout LCD,baud,(254,128, "1-Puissance leds ") serout LCD,baud,(254,192, #puisled,"% ");de 0 à 100% if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=100*vartemp/255 serout LCD,baud,(254,192,"reg ",#vartemp,"% ") ;de 0 à 100% loop while pinC.1=1 puisled=vartemp gosub efface return mconsgtemp: serout LCD,baud,(254,128, "3-Consigne temperat ") serout LCD,baud,(254,192, #consigtempe,"ßC ") ;de 20 à 30°C if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=10*vartemp/255 +20 serout LCD,baud,(254,192,"reg ",#vartemp,"ßC ") loop while pinC.1=1 consigtempe=vartemp gosub efface return mirrig: serout LCD,baud,(254,128, "4-Cycle irrigation ") serout LCD,baud,(254,192, #affirrig,"mn ") ;de 20 à 30°C if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=60*vartemp/255 ;entre 0 et 60 mn affirrig=vartemp serout LCD,baud,(254,192,"reg ",#affirrig,"mn ") loop while pinC.1=1 gosub efface return mtempchaud: serout LCD,baud,(254,128, "5-Cycle leds chaudes") serout LCD,baud,(254,192, #tempoled1,"h/24 ");heures sur 24 heure if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=24*vartemp/255 tempoled1=vartemp serout LCD,baud,(254,192,"reg " ,#tempoled1,"h/24 ") ;heures sur 24 heure loop while pinC.1=1 gosub efface return mtempfroid: serout LCD,baud,(254,128, "6-Cycle leds froides") serout LCD,baud,(254,192, #tempoled0,"h/24 ");heures sur 24 heure if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=24*vartemp/255 tempoled0=vartemp serout LCD,baud,(254,192,"reg ",#tempoled0,"h/24 ") ;heures sur 24 heure loop while pinC.1=1 gosub efface return mrenouvel: serout LCD,baud,(254,128, "7-Cycle renouvel air") serout LCD,baud,(254,192, #affair,"mn ") if pinC.1= 1 then return :endif do loop while pinC.1=0 Do readadc choixmenu,vartemp vartemp=60*vartemp/255 affair=vartemp serout LCD,baud,(254,192,"reg ",#affair,"mn ") ; de 1 à 60 mn loop while pinC.1=1 gosub efface return mretour: ;retour programme principal serout LCD,baud,(254,128, "8-Retour ") serout LCD,baud,(254,192, " ") if pinC.1=1 then return:endif finmenu=1 write 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair ;mémo des variables en EEPROM gosub convers ;conversion variables affichées en variables de travail memoled=not led ;pour actualisation éventuelle de la rampe de leds C/F do loop while pinC.1=0 ;attente relachement poussoir gosub affichtxt ;réaffichage titres gosub affichval ;réafichage des variables setint %00000,%00010 ;réactivation interruption return
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...