Le capteur est instantanée !
Un transistor est très rapide pour comuter. Rend toi compte dans un ordinateur, tu en a des millions à la chaine et c'est rapide
La question va plutôt être :
Si je met plusieurs capteurs, il faut qu'il ai chacun un port diférent. Attention avec ça... L'alim sera effectivement utilisable par tous les capteurs, mais pas le fil raccordé en entrée.
En revanche, tu peux utiliser un PCF8574 qui te permettra d'avoir des voies libéré. Grace à l'I2c ! Par contre, tu est limité à 8 entrées. Mais cela simplifie beaucoup de choses.
Remplace ta led par un afficheur LCD.. Ah tien, tu pourraît savoir ou viens l'avanie ! Et ce sur 2 fils
Bon, là c'est déjà un peu plus compliquer. Reste d'bord avec un seul capteur, essaie le et ensuite, tu songera à en mettre un autre. Entre temps, ça peut être intéressant de jeter un oeil sur les bus synchrones.
Bon allé, chu sympa, je te donne la logique (pas le code hein).
Mettons un soum avec 8 compartiments. J'aurais la logique suivante: Chaque compartiment à soit pas d'eau 0 logique, soit une voie d'eau 1 logique :
Compartiments ->[moteur][ballast arrière][compresseur, pompe][radio, batteries][servo][moteurs aériens][ballast avant][vide]
En état normal, j'aurais : 11111111 (ben oui, si il n'y a pas d'eau, j'ai un 1 logique).
Mais si j'ai une voie d'eau sur le compartiment radio ?
Très simple : 11101111 -> et là on remonte à la surface.
Ensuite, c'est une question de discussion etre la carte arduino et le PCF... J'en ai déjà trop dit !
Dans ton cas, tu ne passera pas par l'i2c donc tu va utiliser des broches de ta carte. Genre 40 à 43. De la même façon tu aura des 1 en absence d'eau. Du coup avec un simple afficheur à 4 leds montés entre 44 et 47 tu aura une indication. Enfin, moi j'aurais bien mis un afficheur à ce compte la. Donc pour en revenir à tes broches...
Si je suis logique, j'aurais créer un mot de 4 bits. Déclaration du type "int motSecu = 1111;"
Ensuite tu procède ainsi:
Code : Tout sélectionner
motSecu = digitalRead(40);
motSecu += digitalRead(41);
motSecu += digitalRead(42);
motSecu += digitalRead(43);
motSecu contient donc la donnée de chaque capteur en une seule variable. Astucieux non ?
Tu n'a plus qu'à faire un case sur motSecu et voir s'il vaut autre-chose que "1111". S'il est différent, tu remonte, sinon tu reste dans l'eau. Si le case ne fonctionne pas sur un "int" passe par les if(s).
Enfin voila, te prive pas de faire une sauvegarde de ce qui fonctionne et te lancer sur une autre programmation pour tester.
Bon jeu