Cooling-Masters
Connexion · INSCRIPTION · Site Recevoir à nouveau l'e-mail de validation


[Arduino] Gestion auto niveau puits

Ajouter ou retirer ce sujet de vos favoris  ·  Suivre ce sujet  ·  Imprimer ce sujet
Pages :  1  2  3  4 
Page précédente    Page suivante 
OrOoX


AFK ? Késako ? :D
Messages : 9889

mercredi 20 décembre 2017 à 23:34:30     
Salut salut !


Comme le sujet a été commencé sur le Blabla, je le continue ici, j'ai donc reçu tous les éléments, à savoir :

- Carte Elegoo Uno R3 ( chinoise mais très bon feedback )
- Carte 4 relais
- Capteur MPX5100AP
- Afficheur LCD 4 Ligne en I²C
- Electrovanne 230V en 3/4"


Du coup j'ai commencé à coder tout ça y'a deux jours ce qui donne ceci pour l'instant ( et ça fonctionne ), j'ai juste
un problème de parasitage sur la carte quand j'alimente une des entrées, ça m'alimente l'autre aussi mais ça vient surement
du fait que je l'alimente à partir d'une sortie et non du +5V

CODE :


////////////////////////////////
// Initialisation des valeurs //
////////////////////////////////

int Niveau_mini = 20; // Seuil de coupure niveau bas ( % )
int Niveau_mini_tp = 90; // Seuil de coupure vidange auto ( % )
int Niveau_maxi_tp = 100; // Seuil de déclenchement vidange auto ( % )
int Offset_pression_abs = 100; // Offset hauteur réelle
int relai_1 = 2;
int relai_2 = 3;
int relai_3 = 4;
int relai_4 = 5;
int entree_1 = 7;
int entree_2 = 8;
int defaut = 0;
int Timer_1;

void setup() {
   Serial.begin(9600);

   pinMode(relai_1, OUTPUT); // Relai 1 = pompe
   pinMode(relai_2, OUTPUT); // Relai 2 = electrovanne
   pinMode(relai_3, OUTPUT); // Relai 3 = coupure 230V
   pinMode(relai_4, OUTPUT); // Relai 4 = Non attribué
//    pinMode(entree_1, INPUT); // Pressostat
//    pinMode(entree_2, INPUT); // Pressostat différentiel

   digitalWrite(relai_1, LOW);
   digitalWrite(relai_2, LOW);
   digitalWrite(relai_3, HIGH);
   digitalWrite(relai_4, LOW);
}

void loop(){
   float pressure = readPressure(A1);
   float millibars = pressure/100;

   Serial.println();
   Serial.print("Pression = ");
   Serial.print(millibars);
   Serial.println(" mBars");

   // Calcul niveau remplissage
   int Pourcentage = (100*millibars)/(1150-Offset_pression_abs);
   Serial.println();
   Serial.print("Pourcentage : ");
   Serial.print(Pourcentage);
   Serial.println();
   
   //////////////////////////////////////////////////////
   // Contrôle automatique pression & niveau haut puit //
   //////////////////////////////////////////////////////
   Serial.println(digitalRead(entree_1));
   Serial.println(digitalRead(entree_2));
   Serial.println(digitalRead(relai_1));
   Serial.println(digitalRead(relai_2));
   Serial.println(digitalRead(relai_3));
   Serial.println(defaut);
   
   if (((digitalRead(entree_1) == 1 && Pourcentage > Niveau_mini) || (Pourcentage >= Niveau_maxi_tp)) && digitalRead(relai_1) == 0 && defaut == 0)
   {
       Timer_1 = millis() + 5000; // Définition d'un temps d'attente
         
       digitalWrite(relai_1, HIGH); // On allume la pompe
       Serial.println("Pompe ON");

       if (Pourcentage >= Niveau_maxi_tp)
       {
         digitalWrite(relai_2, HIGH); // On allume l'électrovanne de vidange
         Serial.println("Electrovanne ON");
       }
   }
 
   else if (millis() >= Timer_1 && digitalRead(relai_1) == 1 && digitalRead(entree_2) == 0) // Contrôle si débit
   {
     digitalWrite(relai_1, LOW); // Coupure pompe pour absence débit
     digitalWrite(relai_2, LOW); // Coupure électrovanne de vidange
     digitalWrite(relai_2, LOW); // COupure alimentation 230V ( sécurité )
     Serial.println("Pompe OFF");
     Serial.println("Electrovanne OFF");
     Serial.println("Alim 230V OFF");
       
     defaut = 1; // Activation du défaut
   }
   
   else if ((digitalRead(entree_1) == 0 && Pourcentage <= Niveau_mini_tp) && defaut == 0 && digitalRead(relai_1) == 1)
   {
     digitalWrite(relai_1, LOW); // Coupure pompe
     digitalWrite(relai_2, LOW); // Coupure électrovanne de vidange
     Serial.println("Pompe/Electrovanne OFF");
   }
   
   delay(1000);
}

float readPressure(int pin){
   int pressureValue = analogRead(pin);
   float pressure=((pressureValue/1023.0)+0.095)/0.000009;
   return pressure;
}


Message édité par OrOoX le mercredi 20 décembre 2017 à 23:35:27
Google




     
Biduleohm


Membre
Messages : 906

jeudi 21 décembre 2017 à 00:07:23     
Le code est horrible :

- on code en anglais
- on choisi soit du camel case (préféré en général car plus court et plus facile à lire) soit de l'underscore case mais pas les deux en même temps, c'est illisible sinon (et les variables ne commencent jamais avec une majuscule en principe, c'est réservé aux noms de classe entre autres)
- digitalRead est censé être comparé à HIGH ou LOW, pas 0 et 1
- on fait des fonctions sinon c'est illisible et on ne peut pas réutiliser le code à plusieurs endroits
- on utilise des defines pour les constantes (Offset_pression_abs par ex) qu'on écrit tout en majuscule avec des underscores
- les conditions des if/else if sont longues et peu claires, et peuvent probablement être optimisées
- y'a beaucoup de if/else if pour une simple gestion de niveau et la structure globale me fait penser à une state machine et doit donc probablement être cleanable en utilisant un switch case
- le calcul "((pressureValue/1023.0)+0.095)/0.000009;" est super moche et peutdoit être optimisé (et les constantes sont censées être des defines d'ailleurs) --> EDIT: par curiosité je l'ai fait et ça donne (109 * pressure) + 10555 et accessoirement tu ne devrais pas utiliser un int pour stocker une valeur aussi grande car y'a de grande chances qu'il overflow (int max = 32767) (en fait je suis quasi sûr qu'il overflow ce qui expliquerait les coefs super élevés...) donc prends plutôt un long (ou mieux, un unsigned long vu que tu comptes pas avoir de valeur négative visiblement).
- probablement d'autre trucs que j'ai pas vu...

Message édité par Biduleohm le jeudi 21 décembre 2017 à 00:16:55
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 21 décembre 2017 à 20:22:40     
Mais ... Mais ... Mais ... Je t'ai fait un truc Biduleohm, tu m'en veux à ce point ?


Alors déjà excuse moi, mais le "on code en anglais", j'en ai rien à foutre, je suis le seul à bosser sur le code et moi être français !

Même remarque pour le style d'écriture ...

Le censé n'est pas généralisé visiblement, mes digitalRead me retourne 0 ou 1 et non HIGH ou LOW, donc je compare au résultat lu.


Et puis merde, j'ai même pas envie de répondre au reste, tu te prend trop le choux sérieux, et au passage le calcul à la fin il n'est pas de moi
msneob


Membre
Messages : 1833

jeudi 21 décembre 2017 à 21:24:38     
Rageux
SPOILER :

Image


Message édité par msneob le jeudi 21 décembre 2017 à 21:25:34
Biduleohm


Membre
Messages : 906

jeudi 21 décembre 2017 à 21:35:15     
C'est juste que j'aime pas voir du code moche tout comme en tant qu'usineur tu n'aimerais pas voir quelqu'un tarauder avec une visseuse ou en tant que frigoriste tu n'aimerais pas voir quelqu'un souder à l'étain et remplir sans tirer au vide par ex...

Tu fais comment pour les accents ? tu fais comment si tu demande de l'aide pour le code ?

Sauf que HIGH et LOW sont des defines et, en plus d'être plus clair que 1 et 0, ils peuvent changer (si demain HIGH est défini sur -1 et LOW sur 0 par ex ton code ne marchera plus) même si je te l'accorde en principe ça ne change pas.

Y'a une/des raisons pour chaque remarque, spa pour être méchant. La raison générale étant surtout d'avoir un code clair et facilement maintenable et debuggable (ton futur toi te remerciera quand tu devras résoudre un bug dans 6 mois et que tu devra relire le code 15 fois pour comprendre ce qu'il fait...) sans compte que les bugs se voient moins facilement avec un code bordélique (c'est comme en élec, si tu jettes tous les fils en vrac dans une armoire sans rien attacher et catégoriser tu vas passer un paquet de temps à identifier et résoudre les problèmes par la suite).
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 21 décembre 2017 à 22:10:46     
Perso je taraude aussi à la visseuse, c'est tellement plus rapide avec du tarauds machine


Sachant que c'est de l'arduino et que les accents sont mal gérés par les LCD, bah j'en met pas, ça règle le problème et ça reste
tout autant lisible, en plus dans mon cas c'est vraiment à titre informatif, c'est tout.

Et pour la question de l'aide, excuse moi mais j'ai déjà vu plus dégueulasse ... La tu me rentre dedans sur un code que je viens de
faire et tester un soir à tête reposée


Maintenant tu juge qu'il y a trop de If, Else, la question est plutôt, a tu remarqué que le code comporte une double fonction ?
kissagogo27


Méchant Vieux Râleur
Messages : 28148

jeudi 21 décembre 2017 à 22:24:13     
< a nettoyé quelques filetages a la visseuses, et même du 10x150
Sk_rmouche


Apprenti Aigri
Messages : 17926

jeudi 21 décembre 2017 à 22:31:22     
Oui j'avoue j'ai déjà fait des tarauds dans du plexi avec ma visseuse

Mais sinon je vais me mettre du côté de BiduleOhm car lolox a toujours tort
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 21 décembre 2017 à 22:59:56     
Toi dépêche toi de retourner en NZ avant que je me serve de ta peau comme papier cadeau
Biduleohm


Membre
Messages : 906

vendredi 22 décembre 2017 à 00:25:24     
Je parlais des accents dans le code lui-même, l'affichage tu peux le faire dans la langue que tu veux (dans les limites du LCD bien-sûr) c'est pas un pb.

Spa une raison. Bah t'façon tu verras bien le jour où t'auras besoin d'y retoucher que j'avais raison

Non parce que justement il est trop bordélique pour comprendre en une seule lecture ce qu'il fait exactement. Genre par ex le "defaut" c'est quoi ? un cas par défaut ? une indication qu'il y a un défaut ? ... ?
OrOoX


AFK ? Késako ? :D
Messages : 9889

vendredi 22 décembre 2017 à 16:12:25     
C'est quoi le "defaut" ? T'aurais su si tu avais tout lu avant de critiqué, surtout qu'il n'est activé que par un seul truc
kissagogo27


Méchant Vieux Râleur
Messages : 28148

vendredi 22 décembre 2017 à 18:44:29     
fait pas ton wesh rorox sinon j'te marave
OrOoX


AFK ? Késako ? :D
Messages : 9889

vendredi 22 décembre 2017 à 19:26:30     
Image
Biduleohm


Membre
Messages : 906

vendredi 22 décembre 2017 à 22:47:53     
Wé alors vu la condition "(millis() >= Timer_1 && digitalRead(relai_1) == 1 && digitalRead(entree_2) == 0)" excuse moi de pas comprendre au premier coup d'oeil (c'est quoi timer 1 ? relai 1 ? entree 2 ? ça serait bien de nommer les variables clairement, genre relais pompe, entrée flotteur, etc...) et le commentaire "// Activation du défaut" est complètement useless, on voit bien qu'on met defaut à 1 vu que juste avant on a littéralement defaut = 1
OrOoX


AFK ? Késako ? :D
Messages : 9889

vendredi 22 décembre 2017 à 23:01:59     
La correspondance est marqué en haut du code, c'est pas sorcier pourtant



Tu fais pas beaucoup d’efforts pour quelqu'un d'aussi tatillon Biduleohm ou tu as déjà oublié que c'est une ébauche ?


Edit : Tiens, t'es un peu plus content ?

SPOILER :

CODE :

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x3F
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

////////////////////////////////
// Initialisation des valeurs //
////////////////////////////////

int Niveau_mini = 20; // Seuil de coupure niveau bas ( % )
int Niveau_mini_tp = 90; // Seuil de coupure vidange auto ( % )
int Niveau_maxi_tp = 100; // Seuil de déclenchement vidange auto ( % )
int Offset_pression_abs = 150; // Offset hauteur réelle
int relai_1 = 2;
int relai_2 = 3;
int relai_3 = 4;
int relai_4 = 5;
int entree_1 = 7;
int entree_2 = 8;
int defaut = 0;
int Timer_1;

void setup() {
   lcd.begin(16,4);
   lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
   lcd.setBacklight(HIGH);
   lcd.home();
   
   Serial.begin(9600);

   pinMode(relai_1, OUTPUT); // Relai 1 = pompe
   pinMode(relai_2, OUTPUT); // Relai 2 = electrovanne
   pinMode(relai_3, OUTPUT); // Relai 3 = coupure 230V
   pinMode(relai_4, OUTPUT); // Relai 4 = Non attribué
//    pinMode(entree_1, INPUT); // Pressostat
//    pinMode(entree_2, INPUT); // Pressostat différentiel

   digitalWrite(relai_1, HIGH);
   digitalWrite(relai_2, HIGH);
   digitalWrite(relai_3, LOW);
   digitalWrite(relai_4, HIGH);
}

void loop(){
   float pressure = readPressure(A1);
   float millibars = pressure/100;

   // Calcul niveau remplissage
   int Pourcentage = (100*millibars)/(1150-Offset_pression_abs);
   
   // DEBUG - MONITEUR
   Serial.println();
   Serial.print("Pression = ");
   Serial.print(millibars);
   Serial.println(" mBars");
   Serial.println();
   Serial.print("Pourcentage : ");
   Serial.print(Pourcentage);
   Serial.println();
   Serial.println(digitalRead(entree_1));
   Serial.println(digitalRead(entree_2));
   Serial.println(digitalRead(relai_1));
   Serial.println(digitalRead(relai_2));
   Serial.println(digitalRead(relai_3));
   Serial.println(defaut);
   
   //////////////////////////////////////////////////////
   // Contrôle automatique pression & niveau haut puit //
   //////////////////////////////////////////////////////

   if (millis() >= 5000) // Temps avant démarrage
   {
     if (((digitalRead(entree_1) == LOW && Pourcentage > Niveau_mini) || (Pourcentage >= Niveau_maxi_tp)) && digitalRead(relai_1) == HIGH && defaut == 0)
     {
         Timer_1 = millis() + 5000; // Définition d'un temps d'attente
           
         digitalWrite(relai_1, LOW); // On allume la pompe
         Serial.println("Pompe ON");
 
         if (Pourcentage >= Niveau_maxi_tp)
         {
           digitalWrite(relai_2, LOW); // On allume l'électrovanne de vidange
           Serial.println("Electrovanne ON");
         }
     }
   
     else if (millis() >= Timer_1 && digitalRead(relai_1) == LOW && digitalRead(entree_2) == HIGH) // Contrôle débit
     {
       digitalWrite(relai_1, HIGH); // Coupure pompe pour absence débit
       digitalWrite(relai_2, HIGH); // Coupure électrovanne de vidange
       digitalWrite(relai_3, HIGH); // COupure alimentation 230V ( sécurité )
       Serial.println("Pompe/Electrovanne/Alim 230V OFF");
         
       defaut = 1; // Activation du défaut
       // format C:\Budington /y
     }
     
     else if ((digitalRead(entree_1) == LOW || Pourcentage <= Niveau_mini_tp) && defaut == 0 && digitalRead(relai_1) == LOW)
     {
       digitalWrite(relai_1, HIGH); // Coupure pompe
       digitalWrite(relai_2, HIGH); // Coupure électrovanne de vidange
       Serial.println("Pompe/Electrovanne OFF");
     }
   }
   
   delay(1000);
}

float readPressure(int pin){
   int pressureValue = analogRead(pin);
   float pressure=((pressureValue/1023.0)+0.095)/0.000009;
   return pressure;
}


Message édité par OrOoX le samedi 23 décembre 2017 à 09:56:06
kissagogo27


Méchant Vieux Râleur
Messages : 28148

vendredi 22 décembre 2017 à 23:18:10     
QUOTE (OrOoX) :

Tu fais pas beaucoup d’efforts pour quelqu'un d'aussi tatillon Budington ou tu as déjà oublié que c'est une ébauche ?

Qui ça ?
OrOoX


AFK ? Késako ? :D
Messages : 9889

vendredi 22 décembre 2017 à 23:33:05     
A ton avis ?
Biduleohm


Membre
Messages : 906

samedi 23 décembre 2017 à 01:08:08     
Je comprends pas là, tu parles à lui ou à moi ? mais dans le second cas qu'est-ce que son nom vient faire ici ?
OrOoX


AFK ? Késako ? :D
Messages : 9889

samedi 23 décembre 2017 à 02:57:32     
Je répondais à ton dernier message avant que Kissa ne vienne troller ( comme d'hab ).


Ton nom ? C'était juste pour voir si tu avais pris la peine de tout lire cette fois



Edit : le con, je viens juste de capter que je me suis trompé de pseudo, j'ai marqué Budington à la place de Biduleohm,
le rhume m'a bouché les neurones

Message édité par OrOoX le samedi 23 décembre 2017 à 09:55:22
kissagogo27


Méchant Vieux Râleur
Messages : 28148

samedi 23 décembre 2017 à 11:17:14     
si seulement
OrOoX


AFK ? Késako ? :D
Messages : 9889

samedi 30 décembre 2017 à 23:22:31     
Bon bon bon, me voilà avec un problème bien embêtant ... Après avoir réglé mon problème de boutons qui s'activaient
tout seuls à cause des parasites, j'ai fais l'intégration du LCD et amélioré le code en compartimentant les scripts avec
différentes tempos mais sans utiliser le fameux delay() qui bloque toute la carte.

En soit ça marche, le hic c'est que la carte fini par .... freezer, j'ai l'impression que le LCD tire trop dessus et vu que c'est
pas une UNO officiel, elle apprécie peut être pas mais pour l'instant j'ai pas d'alim 5V sous la main ...

Perso j'opte plus pour un problème d'alim que de liaison I2C que "j'actualiserai" trop rapidement, si jamais vous voyez un truc ^^'

CODE :

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7);

////////////////////////////////
// Initialisation des valeurs //
////////////////////////////////

int Niveau_mini = 20.0; // Seuil de coupure niveau bas ( % )
int Niveau_mini_tp = 90.0; // Seuil de coupure vidange auto ( % )
int Niveau_maxi_tp = 100.0; // Seuil de déclenchement vidange auto ( % )
int Offset_pression_abs = 150; // Offset hauteur réelle
int relai_1 = 2;
int relai_2 = 3;
int relai_3 = 4;
int relai_4 = 5;
int entree_1 = 7;
int entree_2 = 8;
int defaut = 0;
int Timer_1;
int stat_230 = 0;
int tempo_lcd;
int tempo_script;
int tempo_mesure;
float Pourcentage = 0;
float millibars = 0;

void setup() {
   lcd.begin(20,4);
   lcd.noAutoscroll();
   lcd.setBacklightPin(3,POSITIVE);
   lcd.setBacklight(HIGH);
   lcd.home();

   lcd.setCursor(0,0);
   lcd.print("Pompe:OFF");
   lcd.setCursor(0,1);
   lcd.print("EV Purge:OFF");
   lcd.setCursor(0,2);
   lcd.print("230V:OFF");
   lcd.setCursor(0,3);
   lcd.print("Defaut:OFF");
   
   pinMode(relai_1, OUTPUT); // Relai 1 = pompe
   pinMode(relai_2, OUTPUT); // Relai 2 = electrovanne
   pinMode(relai_3, OUTPUT); // Relai 3 = coupure 230V
   pinMode(relai_4, OUTPUT); // Relai 4 = Défaut
   pinMode(entree_1, INPUT_PULLUP); // Pressostat
   pinMode(entree_2, INPUT_PULLUP); // Pressostat différentiel

   digitalWrite(relai_1, HIGH);
   digitalWrite(relai_2, HIGH);
   digitalWrite(relai_3, HIGH);
   digitalWrite(relai_4, HIGH);
}

void loop()
{    
   //////////////////////////////////////////////////////
   // Contrôle automatique pression & niveau haut puit //
   //////////////////////////////////////////////////////
   
   if (millis() >= 4000 && stat_230 == 0) // Attente 4 secondes avant allumage 230V
   {
     digitalWrite(relai_3, LOW);
     stat_230 = 1;
   }

   if (millis() >= tempo_mesure) // Mesure toutes les secondes
   {
     millibars = readPressure(A1)/100;
       
     // Calcul niveau remplissage
     Pourcentage  = (100*millibars)/(1150-Offset_pression_abs);

     tempo_mesure = millis()+1000;
   }
   
   if (millis() >= 8000) // Attente de 8 secondes avant début du script
   {
     if (millis() >= tempo_script && defaut == 0) // Tempo de 500ms entre chaque execution
     {          
       if (((digitalRead(entree_1) == LOW && Pourcentage > Niveau_mini) || (Pourcentage >= Niveau_maxi_tp)) && digitalRead(relai_1) == HIGH)
       {
           Timer_1 = millis() + 5000; // Définition d'un temps d'attente pour la détection manque débit
             
           digitalWrite(relai_1, LOW); // On allume la pompe
           
           lcd.setCursor(6,0);
           lcd.print("ON ");
   
           if (Pourcentage >= Niveau_maxi_tp)
           {
             digitalWrite(relai_2, LOW); // On allume l'électrovanne de vidange
 
             lcd.setCursor(9,1);
             lcd.print("ON ");
           }
       }
     
       if (millis() >= Timer_1 && digitalRead(relai_1) == LOW && digitalRead(entree_2) == HIGH) // Contrôle débit
       {
         digitalWrite(relai_1, HIGH); // Coupure pompe pour absence débit
         digitalWrite(relai_2, HIGH); // Coupure électrovanne de vidange
         digitalWrite(relai_3, HIGH); // COupure alimentation 230V ( sécurité )
         digitalWrite(relai_4, LOW); // COupure alimentation 230V ( sécurité )
 
         lcd.setCursor(6,0);
         lcd.print("OFF");
         lcd.setCursor(9,1);
         lcd.print("OFF");
         lcd.setCursor(5,2);
         lcd.print("OFF");
         lcd.setCursor(7,3);
         lcd.print("ON ");
           
         defaut = 1; // Activation du défaut
       }
       
       if ((digitalRead(entree_1) == HIGH || Pourcentage <= Niveau_mini_tp) && digitalRead(relai_1) == LOW)
       {
         digitalWrite(relai_1, HIGH); // Coupure pompe
         digitalWrite(relai_2, HIGH); // Coupure électrovanne de vidange
 
         lcd.setCursor(6,0);
         lcd.print("OFF");
         lcd.setCursor(9,1);
         lcd.print("OFF");
       }
 
       tempo_script = millis()+500;
     }
   }

   if (millis() >= tempo_lcd)
   {
     lcd.setCursor(12,0);
     lcd.print(digitalRead(relai_1));
     lcd.setCursor(12,1);
     lcd.print(digitalRead(relai_2));
     lcd.setCursor(12,2);
     lcd.print(digitalRead(relai_3));
     lcd.setCursor(12,3);
     lcd.print(digitalRead(relai_4));
     lcd.setCursor(14,0);
     lcd.print(digitalRead(entree_1));
     lcd.setCursor(14,1);
     lcd.print(digitalRead(entree_2));
     lcd.setCursor(14,2);
     lcd.print(Pourcentage,1);
     lcd.setCursor(14,3);
     lcd.print(millibars,1);

     tempo_lcd = millis()+500;
   }
}

float readPressure(int pin){
   int pressureValue = analogRead(pin);
   float pressure=((pressureValue/1023.0)+0.095)/0.000009;
   return pressure;
}
Biduleohm


Membre
Messages : 906

dimanche 31 décembre 2017 à 01:20:51     
Laisse-moi deviner: ça le fait toujours au bout d'un certain temps ? Au hasard une trentaine de secondes ou une minute ?
OrOoX


AFK ? Késako ? :D
Messages : 9889

dimanche 31 décembre 2017 à 01:31:21     
Presque, en moyenne c'est de 15 à 30 secondes
kissagogo27


Méchant Vieux Râleur
Messages : 28148

dimanche 31 décembre 2017 à 01:52:27     
mémoire pleine ?
OrOoX


AFK ? Késako ? :D
Messages : 9889

dimanche 31 décembre 2017 à 02:02:30     
J'y ai pensé mais j'ai exclus la possibilité avec la mise en place des tempos, en plus j'ai déjà fait des scripts plus "gourmand"
mais c'était sur une mega donc va savoir ...
Google




     
Pages :  1  2  3  4 
Page précédente    Page suivante