Bonjour à tous,
Je dispose d'une carte picdem 2+ et d'un p18f4520. J'utilise ce matériel pour piloter une pompe et des électrovannes dans le but de réguler la pression dans les coussins d'un matelas (cycle gonflage dégonflage).
Des capteurs de flexion sont installés sur les matelas et l'ordre de gonfler/dégonfler est donné selon la valeur en tension qu'ils fournissent.
Pour l'instant je fais le test sur 2 coussins. Lorsque j'agis sur un seul d'entre eux (aucune instruction pour l'autre), tout marche nickel. Par contre, lorsque je rentre des instructions pour les 2, seul l'instruction pour le 2ème coussin fonctionne.
Je pense savoir pourquoi mais je ne sais pas trop quelle autre structure condition utiliser pour palier à ce problème.
Voici mon programme :
Le souci doit venir du "else"...Code:#include <p18cxxx.H> #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <adc.h> #include <string.h> #include "ftoa.c" #define q 4.8828e-3 //Déclaration des variables char string1[30]; char string2[30]; float Sortie_Capteur1; float Sortie_Capteur2; void main (void) { TRISAbits.TRISA0=0; PORTAbits.RA0=0;//Commande de la pompe (0 = arrêt, 1 = marche) TRISD=0; PORTD=0; /* Configuration du module ADC */ ADCON1 = 0b00001000; // Vref+ = +Vdd & Vref+ = -Vdd ADCON2 = 0b10101011; // Right justify result, Set Acq Time 12 Tad & Conversion clock Fosc/16 while(1){ ADCON0 = 0b00000101; // Select AN1 Delay100TCYx(20); ADCON0bits.GO = 1; // Start acquisition Delay100TCYx(20); while (ADCON0bits.GO == 1) {} Sortie_Capteur1 = ADRES; ftoa(Sortie_Capteur1*q, string1,0,'f'); ADCON0 = 0b00001001; // Select AN2 Delay100TCYx(20); ADCON0bits.GO = 1; // Start acquisition Delay100TCYx(20); while (ADCON0bits.GO == 1) {} Sortie_Capteur2 = ADRES; ftoa(Sortie_Capteur2*q, string2,0,'f'); /* Régulation */ if (Sortie_Capteur1*q < 3.8) { PORTD=0b0100 // Vanne coussin 1 ouverte PORTAbits.RA0=1; //Activation pompe } else { PORTD=0; // Vannes fermées PORTAbits.RA0=0; //Désactivation pompe }[/ if (Sortie_Capteur2*q < 2.5) { PORTD=0b010000 // Vanne coussin 2 ouverte PORTAbits.RA0=1; //Activation pompe } else { PORTD=0; // Vannes fermées PORTAbits.RA0=0; //Désactivation pompe }
Voila si quelqu'un a une autre approche à me proposer je suis preneur
Cordialement
-----