Bonjour,
Je dois pour un projet scolaire, "reproduire" une pompe à insuline à l'aide d'Arduino.
Je dispose d'une batterie 9V qui m'a permit de tester la pompe et confirmer son bon fonctionnement. Cependant, une fois le code ci-dessous téléversé, la vitesse du moteur reste la même et la loop semble ne pas boucler. La bibliothèque adafruit motor shield est utilisée.
#include <AFMotor.h>
int LG[24] = {92,350,287,251,240,216,211,205,196,192,172,163,142,124,105,92,84,77,82,81,82,82,85,90}; // Liste de la glycémie en fonction du temps d'un patient quelconque
int LTemps[24] = {0,120,240,360,480,600,720,840,960,1140,1320,1620,1920,2520,3120,3720,4320,4920,5520,6120,7320,8520,9720,10920 }; // Liste des temps associés aux glycémies ci-dessus
int Temps=0;
int G; // Glycémie
int k; // Constante servant à prédire la glycémie
AF_DCMotor motor(3);
void setup() {
//Vitesse initiale nulle et sens de rotation constant
motor.setSpeed(150);
motor.run(FORWARD);
}
void loop() {
// Changement de valeur de la glycémie G lorsque Temps atteint le temps suivant de LT
for (int i=1; i=23; i++){
if (Temps==LTemps[i]) {
G=LG[i];
k=i;
}
}
// Prédiction de la glycémie dans 30min
if ((LG[k]-LG[k-1])/(LTemps[k]-LTemps[k-1])*1800 + LG[k]<80){
motor.run(RELEASE);
}
int EntreeHyper = 2990*(G-60)*0.02/60+ 118;
int EntreeHyperPro = 2990*(G-60)*0.03/60+ 118;
// Glycémie "normale" d=(g-60)*0.02
if ((G > 80) && (G < 110)){
if (EntreeHyper >= 255) {
motor.setSpeed(255);
}
else if (EntreeHyper <=150){
motor.setSpeed(150);
}
else{
motor.setSpeed(EntreeHyper);
}
}
// Hyperglycémie d=(g-60)*0.02
else if ((G > 110)){
if (EntreeHyper >= 255) {
motor.setSpeed(255);
}
else if (EntreeHyper <=150){
motor.setSpeed(150);
}
else{
motor.setSpeed(EntreeHyper);
}
}
delay (1000);
Temps++;
}
La pompe ne fonctionnant pas pour des valeurs inférieures à 150 dans motor.setSpeed() j'ai arbitrairement posé la condition que 150 et 255 soient respectivement les valeurs minimales et maximales
J'ai essayé d'ajouter un Serial.print(1)
pour voir si boucle il y avait, sans résultats.
J'ai également essayé d'ajouter la commande motor.run(FORWARD)
après chaque motor.setSpeed()
, encore une fois sans résultat.
Je ne parviens pas à voir d'où viens le problème et aurait donc besoin de votre aide, merci. (Des indications de ce que je voulais faire sont commentées au dessus des fonctions)