Bonjour à tous, ça fait un moment que j'ai pas eu l'occasion de poster ici
Je me lance (encore) dans un petit projet, je l'ai quasiment terminé, mais je bute sur une condition
Pour simplifier mon programme, voila je que je souhaite faire pour l'exemple:
Je joue avec un capteur de flexion. Donc en fonction de sa résistance interne, je converti le tout pour savoir son degré d'inclinaison (ça pas de pb ça marche très bien)
Maintenant, la ou ça déconne, je souhaite que passé 10°, donc état initial 0°, passé le cap des 10°, ma led s'allume pendant 2 seconde, puis s'éteint, et que TANT QUE mon flex sensor n'est pas revenu au minimum à 5° (donc entre 0 et 5°), la partie allumage led ne peut se faire
Donc vraiment faire 10° ou plus -> allumage 2s -> extinction et tant que le capteur n'est pas repassé sous la barre des 5°, je ne peux rallumer la led si je passe les 10° à nouveau
Je me suis inspiré d'un exemple que dfgh m'avait fourni à l'époque
Voila la bête:
// Déclaration des variables
unsigned long deb = 0;
float angle = 0; // angle actuel du capteur
const int FLEX_PIN = A0; // Capteur de flexion sur A0
// Mesure de la tension à 5V et la résistance du capteur (/w multimetre)
// Mettre les vraies valeurs
const float VCC = 4.95; // Mettre valeur mesurer au volmetre sur l'entree 5V de l'arduino
const float R_DIV = 47500.0;
// Calcul d'angle
const float STRAIGHT_RESISTANCE = 30500.0; // resistance capteur a plat
const float BEND_RESISTANCE = 63200.0; // resistance capteur à 90°
void setup()
{
//Configuration des Entrées/Sorties
Serial.begin(9600);
pinMode(FLEX_PIN, INPUT);
pinMode(LED_BUILTIN, OUTPUT); //Led interne, juste pour contrôler le fonctionnement
}
void loop()
{
flex();
led();
}
void flex(){
// Lecture C.A.N, et calcul de la resistance du capteur
int flexADC = analogRead(FLEX_PIN);
float flexV = flexADC * VCC / 1023.0;
float flexR = R_DIV * (VCC / flexV - 1.0);
Serial.println("Resistance: " + String(flexR) + " ohms");
// Utilisation de la resistance pour estimer l'angle
// bend angle:
angle = map(flexR, STRAIGHT_RESISTANCE, BEND_RESISTANCE,
0, 90.0);
Serial.println("Angle: " + String(angle) + " degres");
Serial.println();
}
void led(){
if (angle > 10){
deb = millis();
while ((millis() - deb) < 2000) {
Serial.println("Led interne ON"); Serial.println();
digitalWrite(LED_BUILTIN, HIGH);
}
digitalWrite(LED_BUILTIN, LOW); //Led interne OFF
Serial.println("Led interne OFF");
Serial.println();
while (angle > 5) {
;
}
}
}
Ça ne doit vraiment pas être grand chose, mais bon ![]()
Merci en tout cas!