TIPE aide code

Bonjour à tous,
Dans le cadre de mon TIPE , J'aurais besoin de votre aide. Je suis un débutant sur Arduino mais j'ai besoin de votre expertise afin de réussir un code.
Voila le problème:
J'ai en ma disposition tous ce qui me faut

  • A l'aide d'un afficheur et de plusieurs capteurs de poids je veux tous simplement que l'afficheur m'indique le nombre de capteurs branchés et un fois que j'appuis sur un capteur de poids je veux qu'il me l'enlève

Par exemple, j'ai 4 capteurs une fois que j'appuie sur un capteur l'affichage doit m'indiquer 3.

Voilà c'est un code qui m'a l'air simple mais je ne suis pas en mesure de le réussir.
Je sais réalisé les branchements mais je n'arrive pas à modifier les codes.

Merci de votre compréhension et de votre aide

Tu fais une variable nomée "nombreCapteurs" ou un truc du genre

 if (poids1 > 0 || poids2 > 0 || poids3 > 0 || poids4 > 0) {
nombreCapteurs -= 1 }

Il faut que ça soit réversible ? Genre si on enlève le poids sur le capteur, le nombre de rétablit ?

iFrostizz67:
Il faut que ça soit réversible ? Genre si on enlève le poids sur le capteur, le nombre de rétablit ?

Merci de votre réponse.
Oui il faut que ce soit réversible.
Dans le cadre de mon TIPE, J'essaye de simuler une rame de RER avec des capteurs de poids dans les sièges.
Et un afficheur au bout indiquant le nombre de places libre.

Bon, vous déclarez un tableau de booleans ayant exactement le nombre de sièges.
Avant l’affichage, vous remplissez chaque case de ce tableau avec true si le siege i est disponible, faux sinon

for (uint8_t i =0; i < maxSieges; i++) tablo[i] = ( poids[i] < seuil):

et vous comptez le nombre de places vacantes:

nbVacantes=0;
for ( uint8_t i=0; i < maxSieges; i++) if ( tablo[i] ) nbVacantes++;

Je vous laisse le soin de vous passer d’un tableau au nom peu parlant… et qui prend de la place inutilement.

Dbrion06, après plus de 900 messages, tu devrais savoir utiliser les balises, notamment lorsqu'il y a des indices de tableaux...

capteurpoids:
Voilà c'est un code qui m'a l'air simple mais je ne suis pas en mesure de le réussir.

OK, admettons que tu ne saches pas coder. Mais tu as quand même un cerveau et tu sais raisonner. Je pense que quand même tu pourrais t'impliquer à minima en écrivant un algorithme résolvant ton problème et que l'on pourrait t'aider à le coder.

lesept:
Dbrion06, après plus de 900 messages, tu devrais savoir utiliser les balises, notamment lorsqu'il y a des indices de tableaux...

Oio, mais jre préfère laisser le soin au tipigiste de comprendre pourquoi un tableau (m^me si son indice n'est pas mangé) ne sert à rien, d'où une tout petite modification de code)

OK, alors on pourrait carrément faire un truc comme ça :

nbVacantes=0;
for (uint8_t i=0; i < maxSieges; i++) nbVacantes+= (poids[i] < seuil);

PS : attention au ‘:’ en fin de ligne à la place du ‘;’

Certes; mais je codais au fur et à mesure (en indiquant que le tableau ne servait pas à grand chose et en laissant le soin -pour un travail personnel, ce n'est pas absurde- de le retirer...)

Le tableau ne servirait que si on veut traquer quelle place se libère, pour juste compter les sièges vides (ou occupés) ce n’est effectivement pas utile

Bonjour,

Le capteur de poids est-il monté sur un seul et même port?

Si oui, alors le port reçoit une valeur binaire globale. J'explique. Admettons qu'on utilise les 4 bits de poids faible d'un registre, par exemple sur le PORT B:
0000 = 4 places libres
0001
0010
0100
1000 = 3 places libres
0011
0110
1100
1001
1010
.... = 2 places libres
0111
1110
1101
.... = 1 place libre
1111 = 0 places libres

Au total, il n'y aurait que 16 combinaisons.

Il faut - et il suffit - pour chaque valeur récupéré sur le port B (si capteurs montés sur PORT B), de faire une simple table de correspondance:
0000 => 4
0001 => 3
0010 => 3
0011 => 2
0100 => 3... etc...

Donc, je résume. On récupère l'état du PORT B en entrée (si capteurs montés sur PORT B), on prend cette valeur qui devient l'index de correspondance, on prend la valeur en face et on a le nombre de places disponibles....

Avec beaucoup plus de capteurs, il faudrait faire un petit programme capable de compter les "0" (zéros) dans la valeur récupérée (décalage de valeur binaire)....

Cdlt