Files
programmationc/maquette43.md

61 lines
1.5 KiB
Markdown
Raw Normal View History

2026-01-16 13:27:44 +01:00
# Réservoir
2026-01-16 12:58:26 +01:00
Un réservoir se vide avec une vitesse réglée sur la consigne.
Mettre en route le nombre de moteur nécessaire pour que le niveau soit toujours enrte c1 et c2
![Pompes](maquettes/43.png)
2026-01-16 13:41:11 +01:00
Le programme utilise des tableaux
- m0, m1, m2 et m3 sont remplacés par moteur[0], moteur[1], moteur[2] et moteur[3]
- c0, c1, c2, c3 sont remplacés par capteur[0] ...
## Mode capteurs seulement
En utilisant uniquement les capteurs (sans indication du niveau). Faire en sorte que le niveau soit toujours entre c1 et c2.
2026-01-16 13:50:32 +01:00
Minimiser l'utilisation des moteurs. Démarrer un moteur après 2 secondes après le précédent seulement si le niveau n'est pas atteint.
2026-01-16 16:03:53 +01:00
## Optimisation de l'utilisation des moteurs
### Par nombre de démarrage
Ajouter un compteur pour compter le nombre de démarrage des moteurs. Démarrer le moteur avec le moins de démarrage.
Arrêter le moteur avec le moins de démarrage.
2026-01-21 07:36:35 +01:00
```c
int moteur_plusutilise() {
int index = -1;
int max = 0;
for (int i = 0 ; i < 4 ; i++) {
if (compteur[i] > max) {
max = compteur[i];
index = i; // Lequel est le maximum
}
}
return index;
}
int moteur_moinsutilise() {
int index = -1;
int min = INT32_MAX;
for (int i = 0; i < 4; i++)
{
if (compteur[i] < min)
{
min = compteur[i];
index = i; // Lequel est le maximum
}
}
return index;
}
```
2026-01-16 16:03:53 +01:00
### Par temps d'utilisation
Mesurer le temps d'utilisation de chaque moteur. Démarrer le moteur avec le moins temps de'utilisation. Arrêter le moteur avec le plus de temps d'utilisation.