Bonjour,
J'ai pour projet de faire un débitmètre avec différentes session (avec un selecteur). J'utilise RemoteXY !
Je mesure le débit d'une session et je peux switcher à une autre.
Par exemple quand je sélectionne la session 0 alors j'obtiens la valeur du débit d'eau particulière... Pareil pour session 1,2 et 3.
Tous les résultats sont exprimés sous la forme d'un graphique.
Le problème est que les valeurs sont gérer par un seul et même compteur d'impulsions... donc à chaque fois que je change de session mes débits s'incrémente directement par rapport aux derniers....avez-vous des solutions ?
double totalflow; // Liters of passing water volume
double flow1; // Liters of passing water volume
double flow2; // Liters of passing water volume
double flow3; // Liters of passing water volume
double flow4; // Liters of passing water volume
unsigned long pulse_freq;
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// RemoteXY select connection mode and include library
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
// RemoteXY connection settings
#define REMOTEXY_SERIAL_RX 10
#define REMOTEXY_SERIAL_TX 11
#define REMOTEXY_SERIAL_SPEED 9600
// RemoteXY configurate
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = // 30 bytes
{ 255,1,0,20,0,23,0,16,31,1,3,132,11,15,41,11,2,26,68,21,
4,45,56,48,8,36,135,94,204,233 };
// this structure defines all the variables and events of your control interface
struct {
// input variables
uint8_t select_1; // =0 if select position A, =1 if position B, =2 if position C, ...
// output variables
float onlineGraph_1_var1;
float onlineGraph_1_var2;
float onlineGraph_1_var3;
float onlineGraph_1_var4;
float onlineGraph_1_var5;
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
void setup()
{
RemoteXY_Init ();
pinMode(2,INPUT);
attachInterrupt(0, pulse, RISING); // Setup Interrupt
}
void loop()
{
RemoteXY_Handler ();
if (RemoteXY.select_1 == 3) {
// Si select_1 est égal à 3
flow4 = 0.00225 * pulse_freq;
RemoteXY.onlineGraph_1_var4 = float (flow4);
} else if (RemoteXY.select_1 == 2) {
// Si select_1 est égal à 2
flow3 = 0.00225 * pulse_freq;
RemoteXY.onlineGraph_1_var3 = float (flow3);
} else if (RemoteXY.select_1 == 1) {
// Si select_1 est égal à 1
flow2 = 0.00225 * pulse_freq;
RemoteXY.onlineGraph_1_var2 = float (flow2);
} else if (RemoteXY.select_1 == 0) {
// Si select_1 est égal à 0
flow1 = 0.00225 * pulse_freq;
RemoteXY.onlineGraph_1_var1 = float (flow1);
}
double totalflow = flow1 + flow2 + flow4+ flow3; // Additionner les trois variables
RemoteXY.onlineGraph_1_var5 = float (totalflow);
RemoteXY_delay(1000) ;
}
void pulse() // Interrupt function
{
pulse_freq++;
}
Merci beaucoup pour votre aide