Go Down

Topic: stocker des valeurs de temps pour les réutiliser apres ... (Read 180 times) previous topic - next topic

vttrider47

bonsoir

voila mon problème

je suis en train de faire un programmateur multivoies configurable par shield Lcd pour gérer un eclairage de vitrine et gérer un arrosage pour potager en pot de fleurs.

Le soucis c'est que lorsque c'est l'hiver, l'arrosage est inutile. Donc je vais utiliser un interrupteur pour désactiver la voie qui gère l'arrosage. Je pensais le désactiver en mettant en valeur d'activation de la voie 25h00 et en désactivation 0h00.C'est a dire que le programmateur ne peut jamais atteindre ces valeurs.
Sauf que ces valeurs sont dans un tableau et si je les modifie, il faudra que je re-règle les balises de mise en route donc je voudrais me les sauvegarder dans un coin et quand je réactive la voie, les valeurs stockées remplacent les valeurs affectées pour désactiver la voie concernée.

voila le morceau de programme que je voulais faire mais la logique du programme ne fera pas ce que je voulais..

Code: [Select]

int TabEvt [8][4]=
{
  {15,0,15,2},      //ici la lecture de la Voie1 Heure départ:15h00 et heure arrivée 15h02
  {13,28,13,30},
  {13,29,13,30},
  {15,19,15,20},
  {25,0,0,0},
  {25,0,0,0},
  {25,0,0,0},
  {25,0,0,0}
};

int TabStk [2][4]=
{
  {0,0,0,0},
  {0,0,0,0}
};

void setup() {

//il y a du code mais pas concerné par le problème
 
}

void loop(){

 if (PinEntrees[0] == 1){
    TabStk [0][0]=TabEvt [0][0];
    TabStk [0][1]=TabEvt [0][1];
    TabStk [0][2]=TabEvt [0][2];
    TabStk [0][3]=TabEvt [0][3];
    TabEvt [0][0]=25;
    TabEvt [0][1]=0;
    TabEvt [0][2]=0;
    TabEvt [0][3]=0;
  }



voila alors j'ai vu des solutions avec l'eeprom mais je ne veut pas m'en servir du fait de sa limitation en écriture. Après j'ai vu un exemple avec une fonction nommée saveData() et loadData() mais je n'ai pas saisi le fonctionnement avec l'exemple donné..

si quelqu'un peut me dire si j'etais dans la bonne voie meme si je sais que le programme donné est faux et si les deux fonctions données au dessus sont accessibles avec ma démarche. ou si vous avez d'autres solutions , je suis preneur ^^

merci d'avance

vttrider47

fdufnews

Pourquoi casser toute la logique d'un programme qui fonctionne en ajoutant un tas de complication alors qu'il suffit de prendre en compte l'état de l'interrupteur de désactivation lorsque tu fais le test sur l'allumage de l'arrosage?

Tu pourrais aussi te passer de l'interrupteur en question et considérer la valeur du mois en cours dans le test de l'allumage. Cela permettrait, par exemple, de dire de tel mois à tel mois arroser un jour sur deux ou un jour par semaine.

voila alors j'ai vu des solutions avec l'eeprom mais je ne veut pas m'en servir du fait de sa limitation en écriture. .
oui, enfin on parle quand même d'une centaine de milliers de cycles d'écriture minimum.

Après j'ai vu un exemple avec une fonction nommée saveData() et loadData() mais je n'ai pas saisi le fonctionnement avec l'exemple donné..
Si tu ne donnes pas un lien vers l'endroit où tu as vu ça on ne risque pas de t'aider.
Mais comme dit haut-dessus à priori cette complication est inutile.

vttrider47

bonsoir

merci de ta réponse

en discutant avec des collègues de boulot, il m'a donné l'idée de créer une variable "d'accrochage" (en terme d'electricité ca revient a faire un accrochage mécanique de télérupteur) et de la rajouter dans le test du if. du coup je teste l'etat de mon bouton et l'etat de la variable. et je n'oublie pas de changer l'état de la variable dans l'execution du bloc.

l'idée de reprendre la date est pas mauvaise mais je veux pouvoir controler cette option d'activation que lorsque mes pots sont semés sinon c'est pas utile...

le lien je ne le retrouve plus  mais il me semble que je l'ai apercu sur le forum... 

Maroko69

Bonsoir,

Si tu veux vraiment réaliser ça avec un interrupteur, pourquoi ne pas utiliser un interrupteur à 2 position (soit ouvert, soit fermé)?
Chaque position est envoyé sur une entrée digitale que tu peux ensuite rediriger vers tes conditions (dans un if par exemple)

J'espère que cela t'auras aidé.

Cordialement,
Un jeune électronicien

vttrider47

Bonsoir maroko

C'est exactement ce que je veux faire un inter à bascule ouvert ou fermé.  Si tu regardes bien la syntaxe du programme que j'ai donné c'est bien un système d'inter qui est utilisé sauf qu'à chaque tour de boucle le programme va toujours reprendre les même valeurs. En gros je vais avoir mes valeurs de stockage qui seront toujours les même et pas celle que je veux garder d'où l'utilisation d'une deuxième condition pour éviter de rerentrer dans le bloc if à chaque fois que le bouton est activé et que ça me dérègle mes variable à stocker.

dbrion06

Quote
je suis en train de faire un programmateur multivoies configurable par shield Lcd
Votre shield lcd a-t-il des
a) poussoirs (souvent connectés à une voie analogique, avec la possibilité d'accèder au reliquat des pattes)
b) rien pour configurer
c) des interrupteurs à bascule
?
(c'est facile à savoir, si vous séchez à ces questions, vous pouvez envoyer une photo du shield, un lien vers où vous l'avez acheté, ou -inclusif-  un programme complet avec une liste de ce qui marche et de ce qui ne marche pas)

Nota: a priori, dans les cas b) ou c), le plus simple est de rajouter un interrupteur à bascule -surtout pas un poussoir!-  externe. le cas a) permet aussi de rajouter des interrupteurs à bascule, sur une voie inoccupée (d'où l'utilité d'un programme complet marchant avec la version précédente, qu'on puisse faire des paris sur les broches vacantes...)


vttrider47

dbrion

ce sont des boutons à bascule que je vais utiliser a part de ceux du shield .

cependant, j'ai résolu mon soucis avec une variable d'accroche que teste dans un bloc "if "avec l'état du bouton  pour ne pas rappeler le bloc if et me dérégler mes balises horaires stockées. et ca fonctionne tres bien ;)

Go Up