Bonjour à tous, pour commencer étant nouveau sur ce forum, je vous fais une brève présentation, je suis un étudiant en ingénierie mécanique et j'adore toucher un peu à tout, j'aime beaucoup réaliser des projets en tout genre (comme celui que je vais vous présenter et qui me requiert votre aide ....).
Donc actuellement je travail sur un petit projet de système de gestion de tir pour une réplique d'airsoft, mon but étant de pouvoir via une arduino UNO de pouvoir gérer les modes suivant:
SAFE : rien ne se passe
SEMI : Lors d'une pression sur la trigger (la gâchette), le module doit donner l'ordre de tirer, mais une seule fois, même si l'utilisateur reste appuyé sur celle-ci.
BURST : Le même système que le semi, sauf qu'ici, nous aurons un nombre de tir déterminé à effectuer que l'opérateur garde le doigt sur la trigger ou non, et si il reste sur la gâchette, comme pour le SEMI, l'opérateur devra relâcher la trigger puis appuyer à nouveau pour commencer un nouveau cycle
FULL : Tant que l'opérateur à le doigt sur la gâchette, le système tir sans interruption.
Donc dans le principe, c'est relativement simple, or ces fonctions pour être disponible à tout moments doivent être dans ma Void loop, or mon soucis est pour INTERDIRE la répétition de ma fonction en cas de SEMI ou BURST.
Pouvez vous éclairer ma lanterne ?
Avant de me taper, j'ai cherché un minimum, mais je ne sais pas trop quoi chercher pour trouver un résultat similaire à ce que je cherche, de plus je ne veux pas recopier bêtement un morceau de code qui ferait tout ce que je veux faire, j'aimerais comprendre ce que je réalise!
ça ressemble à une machine à état avec un bouton (gâchette) et un mode (potentiomètre qui prend plusieurs valeurs par exemple pour choisir un mode) + une gestion du temps (tirer plusieurs fois, c'est comme faire clignoter un LED, on allume, on éteint, on allume, on éteint, ...)
Bonsoir, merci beaucoup pour vos réponses rapides et claires !!
Je comprends tout à fait ce que tu veux me dire pepe, en effet tu as raison, j'ai ressorti mon arduino histoire de tuer le temps donc j'ai rapidement commencé à coder sans forcément commencer sur le papier ce qui est à proscrire du coup en effet j'ai un code qui a ni queue ni tête et que je rafistole pour avancer ....
Le gros problème que je rencontre actuellement c'est surtout que si je suis en burst et que j'appuis sur la gâchette, je ne veux pas qu'il me fasse une rafale de burst, comment interpréter que si la gâchette n'est pas relâchée le tir suivant ne peut être effectué ? quelle fonction dois-je utiliser pour cela ? Un incrément qui une fois à 1 demande de passer ma gâchette en LOW pour initialiser à 0 ?
Dés que j'ai un peu de temps je reprends mon code de zero en suivant ton architecture !
Désolé pour mes questions de newbies, mais j'ai pas réellement codé depuis le bac (plus de 3 ans quoi ...) et je n'ai jamais poussé ce dernier dans ces retranchements donc je suis chiant à poser 36000 questions mdr
si je suis en burst et que j'appuis sur la gâchette, je ne veux pas qu'il me fasse une rafale de burst,
euh... pas compris là....
c'est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)
en fonction de votre état vous saurez si le fait que le bouton est appuyé déclenche quelque chose ou pas (il y aura une transition et une action associé ou pas à cet état)
En gros, pour le moment mon burst (donc une rafale de N tirs), si je reste appuyé sur la gâchette va m'enchainer toutes mes burst, comme le ferait un tir en full automatique.
J'ai regardé en travers le lien que tu as posté et merci, pour réaliser la sélection des modes de tirs ça me parait être ce qui ce fait de mieux ! merci !