Conception d'un pong mécanique

Salut tout le monde !

Je voudrais me lancer dans un projet sympa, qui lie un peu d'algorithmique, de mécanique et d'électronique dans une moindre mesure.

L'idée est de créer un pong mais en vrai, opposant deux joueurs contrôlant leur palette respective à l'aide d'un potentiomètre.
Et la balle se déplacerait à l'aide d'une machine 2 axes, similaire à un drawbot finalement.
Mécaniquement vu que je n'ai pas besoin de la précision d'une imprimante 3D je pense partir d'une mécanique proche d'une ultimaker 2 mais en pas mal plus grand (surface utile de 600x800), le chariot ne servant qu'à emprisonner un aimant qui guidera la balle à travers la surface de l'aire de jeu.

Le petit soucis c'est que ca fait un sacré moment que je n'ai pas touché à Arduino, et surtout jamais pour contrôler des moteurs pas à pas. Donc ca m'amène une grosse question :

Niveau hardware et software, je ne sais pas comment gérer les 4 moteurs pas à pas dont j'aurai besoin (un par palette, 2 pour la balle)
J'ai la carte mère d'une dagoma discoeasy200 qui traine, techniquement c'est une mks base 1.5 il me semble.
Puisqu'on est infiniment loin de la complexité d'une imprimante 3D, je ne sais pas si je dois me battre avec le GCODE en installant un GRBL dedans ou si je peux créer un programme moi même pour éviter de passer par du GCODE, quitte à devoir tout reprendre histoire de ne construire que les fonctions dont j'aurai besoin. A titre perso je préfèrerait l'option 2, mais je ne sais même pas par où commencer mes recherches pour le soft, même le pinout de la mkbase 1.5 je ne sais pas où le trouver.

Voilà voilà c'est un gros projet j'en ai conscience, mais j'ai pas mal de temps pour me pencher dessus et pour toute la partie mécanique je pense pouvoir me débrouiller sans soucis, alors si vous avez des pistes pour cette histoire de contrôle des stepper ce serait top.

Merci d'avance !

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

n'importe quelle carte Arduino fera l'affaire, il n'y a pas du tout besoin de GRBL... éventuellement prenez accelStepper comme bibliothèque pour gérer la trajectoire

Ok c'est noté, ca pourrait aider en effet. Après quelques recherches je vois que ca à pas l'air si compliqué de piloter les moteurs, je vais faire ça.
En revanche je ne parviens vraiment pas à trouver quels pins je déclare pour quel usage sur la mks base 1.5, c'est moi qui ne sais pas me servir de google ou c'est pas évident à trouver ? si quelqu'un à de la doc qui traine je prends.

Bonjour cuillereapot

Si tu dois avoir plusieurs moteurs pas à pas (MPAP) qui doivent se déplacer en même temps, par exemple un MPAP doit faire 200 pas et l'autre 50 et partent en même temps et arrivent en même temps, GRBL te sera d'une grande aide. C'est pas si difficile d'envoyer des G-codes de commande, seul contingence il faut un Arduino pour GRBL.

Cordialement
jpbbricole

Bonjour cuillereapot

Ta carte est, à la base, est un Mega.
Tu trouvera le pinout des axes dans le GRBL version Mega 4 axes, fichier cpu_map.h.

Cordialement
jpbbricole

Aah super merci à toi ! pour le pinout je devrais pouvoir me débrouiller avec ca (peut être)
Ce qui m'effraie c'est que je n'ai pas tellement l'habitude de gérer du gcode, et je ne vois pas trop comment je pourrais faire un truc interactif avec les joueurs.
Autant pour le déplacement de la balle je pense voir comment me débrouiller, calculer la trajectoire de la balle jusqu'à la ligne de déplacement de la palette et vérifier si au croisement la palette du joueur est "en face" de la balle, et réagir en fonction en renvoyant un autre jeu de commandes ca c'est faisable.
Mais pour ce qui est du contrôle des palettes il me faut des commandes qui s'adaptent en permanence à l'input des joueurs, je ne peux pas me contenter de faire avancer la palette de x mm/tour de potentiomètre. Il faudra que je tienne compte de l'accélération de la vitesse de rotation du potar, et aussi que si le joueur arrête brutalement la rotation, la palette s'arrête net également. Déjà d'un point de vue algorithmique je n'ai qu'une vague idée de comment m'y prendre, mais si en plus je dois le faire en traduisant en gcode par des commandes de déplacement à telle ou telle coordonnée c'est chaud.
Je voyais plutôt juste donner une valeur de vitesse d'avance adaptable en mesurant régulièrement la vitesse de rotation du potar sans donner de coordonnée d'arrivée précise, et ca en gcode je ne vois pas comment faire.
Ou alors il existe peut être des commandes gcode qui donnent seulement des vitesses de rotation ? je vais regarder ca.
Après le dernier soucis c'est que je suis un peu froid à l'idée de construire autour de GRBL, je ne saurais même pas où écrire mon programme principal tellement j'ai pas l'habitude de travailler avec de telles usines à gaz. d'où la question de recommencer un truc de zéro, en soi ça n'a pas l'air infaisable, il me "suffirait" de développer un pong, et de faire coincider le déplacement des moteurs avec leur équivalent numérique.
C'est quoi au fait la difficulté qui m'empêche de gérer plusieurs mpap en même temps sans utiliser grbl ?

Bonjour cuillereapot

GRBL était juste une proposition, ce n'est pas indispensable, au moins ça donne le pinout :wink:

Pour moi, à mon niveau, la difficulté serait de déplacer 2 axes sur une distance différente avec départ et arrivée en même temps, donc avec des vitesses à calculer.

Cordialemen
jpbbricole

d'accord, je vais tenter sans grbl, pour ce qui est des trajectoire/vitesses je m'inquiète pas trop, c'est jamais qu'un peu de maths en principe. Je vais attaquer la conception de la mécanique en attendant de trouver le temps d'aller rechercher ma vieille imprimante à l'autre bout du pays.
Merci pour ton aide !

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.