Comment utilisez et gérer correctement les signaux analogiques ? Bonjour à tous, bienvenue dans ce didacticiel visant à maîtriser les signaux analogiques, nous étudierons ici cette technique sans TP c'est à dire que nous ne verrons que la théorie, pas la pratique.
Voici les différentes chose à savoir :
Techniques et matériel requisAvant de commencer à vous expliquer quoi que ce soit il faut savoir différentier un signal analogique d'un signal digital.
En effet si vous ne le saviez pas encore il existe de type de signaux sur LBP2, le moins complexe et le plus connu est le signal digital qui ne peut que prendre comme valeurs 0 et 100 (en %), c'est à dire qu'il ne pourra qu'être vrai ou faux.
Les signaux analogiques en revanche eux peuvent être compris entre 0 et 100, ainsi il sont très utiles généralement pour tous les réglages "vitesse" et les différents calculs pour par exemple une barre de vie ou autres.
Par exemple les détecteurs de joueurs émette un signal analogique, plus le joueurs est près du détecteur et plus la valeur se rapproche de 100%. Disons que ce détecteur de joueurs à une portée de 100 mètre, si le joueurs se trouve à 75 mètre de lui le signal émis sera alors de 25% alors que si il se rapproche à 20 mètre du détecteur le signal sera maintenant de 80%. En revanche avec un signal analogique le signal sera de 100% de 0 à 100 mètre, c'est à dire que si le joueurs est à 75 mètre le signal sera de 100% et idem s'il est à 20 mètre.
Pour transformer un signal analogique en signal digital il suffit de le faire passer (le signal > cable) par un sélecteur.
Vous aurez besoin pour connaître la valeur d'un signal analogique (comprise entre 0% et 100%, rappelez vous) d'un compteur analogique, il en existe plusieurs sortes, le plus simple et le plus pratique reste un simple séquenceur divisé en 10 sections (barres verticales) et réglé en Position, comme ci-dessus.
Néanmoins si vous désirez un compteur plus précis Phort un joueur anglophone de LBP en a conçu un qui mesure même les millièmes d'un signal, par exemple il peut afficher un signal de 0.001 là ou un autre compteur aurait simplement afficher un ou zéro. Si ce genre de compteur vous intéresse vous pouvez accéder à son niveau
ici !
A - Portes OR, AND et NOTIl est important de savoir qu'en fonction de la porte ou passent plusieurs signaux analogiques les valeurs seront différente à la sortie :
Lorsque deux signaux passe dans une AND GATE, le signal qui en ressortira sera le plus petit, ici on peut voir que des deux signaux 40 et 20, c'est le 20 qui ressort et qui s'affiche sur le compteur. Contrairement à l'AND, l'OR GATE fait ressortir le signal le plus grand dans ses entrée, ici 40 comme nous pouvons le voir.
La NOT GATE quant à elle réalise une soustraction, elle retirera la valeur du signal à 100, par exemple ici le signal est de 30%, la NOT GATE fera donc 100-30 et le nouveau signal sera donc de 70%
!
B - Soustractions simplesPour effectuer une soustraction il suffit d'utilisez un combinateur de direction, placez le signal que vous voulez soustraire dans l'entrée + et dans l'entrée - placé le signal qui va le soustraire, par exemple ci-dessus on soustrait 40 à 60, c'est à dire 60-40 qui est égal à 20.
Même si un raisonnements mathématique pourrez nous poussez à croire que si on réalise une soustraction comme 20-60 cela donnerais -40 et bien sur LBP2 cette affirmation est fausse.
En effet les signaux analogiques doivent être compris entre 0 et 100 c'est pourquoi le jeu additionne ce qui est en dessous de zéro, ou soustrait ce qui est au dessus de 100, par exemple ici le jeu à fait :
20-60=-40
, Il voit que c'est négatif donc :20-20=0
0+40=40
Pour remédier à ce problème et rester à 0 lorsque on soustrait n'importe quelles valeurs on doit extraire la valeur négative du signal pour ça il faut utiliser un séparateur de direction, la sortie - renverra la mauvaise valeur c'est pourquoi on y connectera rien.
La sortie + elle renverra la valeur que nous voulions obtenir et la soustraction marchera.
C - Additions simplesUn autre raisonnement mathématique similaire pourrait nous pousser à croire qu'en soustrayant par exemple (50)-(-20) cela pourrait donner 50+20 et donc 70, en réalité cela donnerais 30 puisque le jeu ferait la valeur absolu de 20, avant de le soustraire.
Cette fois il n'y a pas de solution magique comme avec le séparateur de directions, c'est pourquoi il faut utiliser un autre raisonnement mathématique, fiable cette fois
! Nous devons réaliser une addition à partir d'une soustraction
A + B = C
, on part de la puisque c'est ce qu'on veut100 - 100 + A + B = C
, 100-100 donnant 0 l'égalité est toujours vrai100 - (100 - A - B) = C
, l'égalité est toujours vrai puisqu'en développant on reviendrai à l'équation précédentePour réalisé cette opération sur le jeu on calculera d'abord l'intérieur de la parenthèse, c'est à dire qu'on fera d'abord 100-A puis (100-A) - B puis finalement 100-[(100-A)-B] :
Pour économisez du temps et que vos circuits logiques soit plus claires je vous conseille d'en faire une puce, puis de la sauvegarder dans vos objets, voici la mienne
:
D - Boucles rétroactives (ou "feedback loop")Les boucles rétroactives (ou "feedback loop") consiste simplement à garder un signal en circuit fermé dans un combinateur de direction généralement même si on pourrait faire des boucles sur presque tout les élément de logique...
Pour réaliser une boucle placer simplement une pile avec la valeur désirer et faite passer le signal dans un combinateur, ensuite reliez la sortie de ce même combinateur à l'entrée ou était la pile (borne +), le signal circule désormais à travers le combinateur.
D.1 - Soustraction d'une boucle rétroactiveC'est bien beau de pouvoir enfermé (à jamais
) une valeurs dans une boucle mais bon si on ne peut pas la changer autant mettre une pile, non ?
C'est pourquoi nous allons voir comment réaliser un système pour modifier la valeur...
Vous pouvez tester de mettre une pile de 1% de préférence pour bien observer le phénomène dans la borne - et vous pourrez voir que rapidement la valeur de votre boucle descend jusqu'à arriver à 0.
En fait vous créez un cycle de soustraction infini :
Vous avez une boucle 100%, et vous connectez sur la borne moins une pile 1%
Une première soustraction à lieu 100-1 = 99, cette même valeur revient à la borne + de la borne
Une deuxième soustraction à lieu mais cette fois avec 99, 99-1 = 98, cette même valeur revient à la borne + de la borne
Etc...
Système avant soustraction
Système après soustraction
Pour évitez ce cycle, ou plutôt pour le contrôler on doit envoyer un signal par un, c'est à dire par exemple d'envoyer 1% à chaque fois que l'on veut soustraire, et lorsque on ne veut pas soustraire que le système envoie 0% de façon à ne pas soustraire. Pour ça il faut un pulseur (Compte à rebours réglé sur 1, qui se réinitialise lui même, voir A ci-dessus), celui-ci se ne laissera passer qu'un seul signal à chaque fois qu'il est activer car il se réinitialiser très vite... Combiner ça à une pile qui soustraira la valeur que vous voulez et un AND qui se chargera de prendre rappelez-vous le valeur la plus basse, soit 0 quand rien n'est activé et le signal à soustraire lorsque vous souhaitez le soustraire et vous aurez votre système de soustraction de boucle.
D.2 - Addition d'une boucle rétroactiveSystème avant addition
Le système reste le même que la soustraction, sauf que cette fois-ci nous allons intercepter la boucle pour lui additionné une valeur avant qu'elle reprenne son cycle, pour cela utilisez votre puce d'addition et branchez y la borne + de la boucle et le signal que vous voulez additionnez (qui se base sur un système similaire à la soustraction de boucle, comme vous pouvez le voir).
Système après addition, en rouge la boucle après addition
D.3 - Valeurs opératoires multiples pour une même boucleUne boucle n'est pas limité seulement à une addition et une soustraction, nous pouvons utilisé des OR GATE pour rajouter plusieurs valeurs à soustraire ou à additionner. L'OR GATE prendra toujours le signal le plus grand rappelez-vous, c'est à dire que si le signal viens dans l'exemple ci-dessus du 10 elle prendra le 10 mais si c'est le 30 elle prendra le 30, cette OR couplé avec le système de signal unique grâce aux AND et pulseur nous permet donc d'ajouter plusieurs valeurs.
E - MultiplicationsE.1 - Multiplications par additionsComme vous le savez surement multiplier un chiffre par X revient à l'additionné X fois, utile quand on ne connait pas ses tables de multiplications
!
Et bien sur LBP2 se principe est aussi valable, c'est à dire que pour multiplier un nombre par 2 il suffit de sortir votre puce d'addition et de le brancher sur les deux bornes d'entrée. Vous vous douterez maintenant que pour multiplier par 4 il suffira d'additionner de multiplications par 2 :
Pour multiplier par un chiffre impair il suffit d'additionner ou de soustraire une fois le signal aux résultat final des multiplications, par exemple pour multiplier par 3 vous pouvez multipliez par 2 puis additionné une fois le signal, ou alors vous pouvez multiplier par 4 et soustraire une fois le signal :
E.2 - Multiplications concrètesIl existe une autre technique pour multiplier, un peu plus dur à comprendre mais qui est plus économique en thermo et ou le jeu fait le calcul plus vite.
Comme nous avons vu avec l'addition ou nous arrivions, rappelez-vous de A+B=C à 100-(100-A-B)=C, nous partirons avec la multiplication de 2A = C à un résultat faisable sur LBP2, pour ça les changements qui nous sont autorisé sont, le rajout ou la soustraction de 100% et la division d'un signal comme 2A en, A + A par exemple, bref trêve de bavardage au travail :
2A = C
100 - 100 + A + A = C
100 - ( 100 - 2A) = C
, voilà pour 2A4A = C
100 - 100 +2A +2A = C
100 - (100 - 2A - 2A) = C
100 - [100 - 2A - (100 - (100 - 2A))] = C
, et ainsi de suite pour 8A, 10A, etc...Comme pour la multiplications par addition pour multiplier par un chiffre impair il faut soustraire ou additionner le signal une fois au signal final, comme ci-dessous :
Je vous conseille tout de même comme pour l'addition de fabriquer une puce de multiplication pour tout les nombres entre 2 et 10, voici ma dixième
:
F - ApprofondissementF.1 - Valeurs inférieur à 0,1Jusqu'ici nos valeurs était comprise entre 0 et 100%, rappelez vous, mais en fait on peut aussi dire que cette intervalle est de 0 à 10% ou de 0 à 1%. C'est seulement pour éviter les décimales et pour mieux s'adapter aux piles que nous avons travaillé avec [0,100], et aussi car je trouve que c'est plus commode
. Par exemple une valeur qui vaut 50 dans [0,100] vaudra 5 dans [0,10] et 0,5 dans [0,1], de simples divisions
.
En général et pour ce que nous allons voir, il vaut mieux travailler avec 1, à moins que vous ne vouliez toujours tout multipliez par cent !
Il faut donc savoir que grâce à un chrono régler en vitesse nous pouvons avoir des valeurs inférieur à 0,1 (Intervalle [0,1]) et nous pouvons donc aussi par conséquent les enfermer dans une boucles rétroactive.
Pour cela régler le chrono en vitesse connecter y une pile à 0% (pour pas que la valeur ne se modifie), pour obtenir 0,01 par exemple vous mettrez en temps cible 10 et en temps actuel 0,1 car 0,1/10 = 0,01. Le signal qui ressortira du chrono sera donc le temps actuel divisé par le temps cible !
C'est le compteur de Phort dont je vous ai parlé au début
F.2 - Affichage du signal sur un timerPour afficher le signal sur un timer il suffit simplement de le régler en vitesse avec un temps cible de 0,1 (cette valeur indiquera la vitesse avec laquelle il s'actualise, le plus court sera le mieux donc) et de connecter sa sortie à une soustraction du signal à afficher - la sortie du timer.
F.3 - Signaux analogiques des joysticksOn pourrait croire à premier abords que les joystick envoie un signal analogique qui pourrait se traduire par un cercle mais non, c'est un ovale !
Chaque directions (Haut, Bas, Gauche, Droite) émet les même signaux, avec des rotations, c'est à dire que la direction droite émet les signaux de la direction haut avec une rotation vers la droite à 90°, voici un schéma des signaux de la partie droite de la direction haut (chaque directions émet des signaux sur un angle de 180° or ici je n'en ai mit que 90) :
Comme vous pouvez le voir ce ne sont que les valeurs à la circonférence de l'ovale (quand le joystick est à max). Les valeur à l'intérieur de l'ovale diffèrent mais reste proportionnels aux vecteurs partant de l'origine... Comme on peut l'observer l'intervalle [9,10] de l'axe Y prend la moitié de la circonférence (je l'ai mal représenté mais c'est la moitié normalement), toutes les directions auront pour point commun 9, c'est à dire que elles seront égales au point 9, par exemple au point 9 de ce schéma la direction Haut et Droite seront égal, mais plutôt que d'expliquer ça avec un pavé interminable voilà un schéma :
On ne peut pas trop travailler sur ce genre de courbes puisque l'ovale, ne possède pas d'équation mathématique, c'est une forme géométrique très complexe. Il faudrait le diviser et passé par d'autres procédés mathématiques que je ne connais pas, donc si vous voulez travaillez sur ce genre de signaux, bonne chance
!
Vous êtes maintenant fin prêt à vous attaquez aux signaux analogiques, je vous souhaite bonne chance, et surtout amusez vous bien !
La F.A.Q.Pourquoi ton compteur analogique va de 0 à 100 alors qu'on m'a dit que les signaux analogiques allez de 0 à 1 ?Comme je l'ai expliqué dans les approfondissements lorsque je parlais des valeurs inférieur à 0,1, c'est par commodité que j'ai choisi l'intervalle [0,100], j'aurais pu prendre n'importe quelle autre intervalle équivalent comme [0,10], [0,1], [0,1000], ou même [0,5]
!
Pourquoi ne nous à pas tu parler de la division ?Et bien premièrement car ce n'est que très très rarement utile et ensuite car il suffit de multiplier par l'inverse, par exemple pour diviser 10 par 2 il suffit de le multiplier par 1/2 soit 0,5.
Pourquoi tu as fait une boucle dans un nœud avec le chrono et pas dans un combinateur de direction ?Et bien j'aurais pu aussi le faire dans un combinateur, mais on peut faire des boucles comme je l'ai dit sur presque tout
!
_________________________
Voilà, si vous avez d'autres questions n'hésitez pas à les poser à la suite ! Sachez que vous pouvez remodeler ce système selon vos besoin (d'ailleurs c'est même conseiller) !