Projet de pachislot DIY

Bonjour à tous, je me penche depuis quelques temps sur un nouveau projet, la création d'un pachislot avec un arduino Mega.
Je n'en suis pour le moment qu'à l'étude de faisabilité, préparation des plans.
Je vais essayer de dessiner et d'imprimer en 3d un maximum de pièces moi même.
Là ou je bloque un peu pour le moment, c'est la possibilité de pouvoir intégrer un petit écran, qui lira à la demande des vidéos, qui seront commandées par l'arduino.
En gros qu'est ce qui pourrait être faisable en parallèle de l'arduino ? Un pc ? un raspberry ?
Merci d'avance si quelqu'un pouvait m'aiguiller sur le procéder. :wink:

:warning: post déplacé dans la partie principale du forum (ce que vous postez n'est pas un "projet finis"...).

Merci de lire et appliquer "Les bonnes pratiques du Forum Francophone” pour votre question.


un RPi peut être adapté si vous avez de la vidéo (la MEGA ne pourra bien sûr pas gérer la vidéo). Il suffit de définir la communication entre les 2. Comme une MEGA a plusieurs voies série, vous pourriez en utiliser une pour cela.

oups désolé de ne pas avoir été dans la bonne section.
Pour le raspberry, ça risque d'être compliqué pour moi, Linux m'est totalement inconnu. :sweat_smile:

c'est une opportunité d'apprendre :slight_smile:

Sinon utilisez ce que vous connaissez, un petit PC d'occasion par exemple si vous savez programmer sur PC. La communication par voie série reste envisageable

1 Like

C'est vrai, pourquoi pas me pencher dessus pour essayer d'apprendre.
J'ai encore du chemin à faire de toute façon pour démarrer tout cela.
Je vais également démarrer des tests avec 3 moteurs pas à pas pour voir comment je pourrais gérer tout cela.

Pour bien comprendre les moteurs (et pour bien débuter avec l'arduino), c'est bien de lire Le mouvement grâce aux moteurs - les tutos d'eskimon. Les autres tutos sont aussi intéressants

super, merci :grinning_face_with_smiling_eyes:

Ne pas oublier qu'une RASPBERRY PI consomme quelques watts, contre 30W au minimum pour un PC, soit 40€ par an, plus cher qu'une RASPBERRY PI ZERO.

1 Like

Pour la consomation, c'est pas le plus important, la machine ne sera pas allumée 24h/24.
J'ai déja pas mal de bornes d'arcades et autres machines à côtés qui consomment également plus.
Je vais commencer par commander le matériel pour gérer les roues, et l'électronique, puis voir comment comuniquer entre le raspberry et l'arduino, mais ça c'est pas gagné :sweat_smile:

J'ai reçu mon matériel (3 moteurs Nema17, 1 arduino mega, des fils, une breadboard), et j'ai commencé l'impression d'une roue pour test sur mon imprimante 3D.
Je vais bientôt pouvoir démarrer les tests. C'est pas gagné car c'est seulement mon second projet arduino :sweat_smile:

La première chose que je dois essayer d'assimiler, c'est comment faire pour que l'arduino sache exactement où la roue c'est arrêtée quand je decide subitement de la stopper?

Je m'explique:
Un capteur optique sera fixé sur la roue, afin de savoir quand celle ci aura fait un tour complet ( servira également à la calibration au démarrage) Tout ceci pour connaitre le nombres de pas complets d'une rotation.
La roue comprendra un certains nombres de facettes ( chiffres et logos)
Si j'arrive, avec mes tests à connaitre le nombre de pas qu'il faut pour afficher une facette complète après l'autre, comment puis je faire pour connaitre la position exacte ou la roue va s'arreter si j'appuie sur un bouton (stop) ? après plusieurs rotation ? Et que cela reste en mémoire pour relancer une rotation ? Et ainsi de suite ?

Merci d'avance pour vos lumières :grinning_face_with_smiling_eyes:

Comme c'est l'arduino qui fait avancer la roue, il sait combien de pas il a fait et donc il peut connaitre la position.

Il faut néanmoins avoir pour chaque roue un repère qui permet d'avoir une position de référence.
Pour plusieurs raisons

  • Typiquement, à la mise sous tension, l'Arduino ne sait pas dans quelle position sont les roues. Il lui faut donc un moyen de trouver une position de référence. Pour cela il fait tourner les roues et il note le passage du repère.
  • Au bout d'un certain temps s'il y a des approximations dans le pilotage des roues, ou des durs
    mécanique l'Arduino risque de se décaler et petit à petit les roues les facettes ne seront plus correctement alignées. La détection du repère sur les roues permet de recaler le système.

Oui je comprends bien, d'où le capteur optique qui enverra une donnée à l'arduino à chaque tour complet. C'est plus sur la mise en forme que je bloque.
Il me faut créer dans le code des valeurs repères, mais comment savoir quand on stop net, à l'appuie du bouton, sur quelle facette il s'arrête ? et surtout calibrer pour que la roue s'arrête sur une facette, et non entre deux :face_with_monocle:

Un moteur pas-à-pas est spécifié pour un certain nombre de pas par tour et c'est invariable donc lorsque tu choisis ton moteur tu connais cette information. En divisant le nombre de pas par le nombre de facettes tu sais combien de pas tu doit faire pour passer d'une facette à la suivante.
L'Arduino pilote le moteur. Il sait à chaque instant combien de pas il a fait faire au moteur donc il connait en permanence la position de la roue.
Lorsqu'on stoppe net le moteur on dit à l'Arduino de cesser d'envoyer des impulsions pour faire avancer le moteur. Donc l'Arduino sait où il s'est arrêté.

Donc il me faudra créer une variable int nombre de pas pour un tour
une variable nombre de pas par facette.
Je suis encore un peu novice avec la gestion des moteurs pas à pas, existe t'il des exemples qui justement puisse gérer ces moteurs, et surtout la gestion des tours sous forme de variable ?

Merci en tout cas pour l'aide apporté :star_struck:

ce ne sont pas des variables, mais des constantes...

const unsigned long nombreDePasParTour = 200;  // constante du moteur
const unsigned long nombreDeFacettes   = 8;    // constante de votre montage
const unsigned long nombreDePasParFacette = nombreDePasParTour / nombreDeFacettes; // mieux si c'est un nombre rond (car la division entière arrondit)

Pour gérer vos moteurs regardez la bibliothèque AccelStepper, ça vous simplifiera la vie sans doute et il y a des exemples.

Merci, il me tarde de tester tout ça. :grinning:

Ne faudrait-il pas lors d'une demande d'arrêt continuer la rotation jusqu'à la position suivante?

Oui, bien sur, il faut lors de l’arrêt afficher une facette complète.

Oui effectivement, lors de l'appuie sur le bouton, soit demander l'arrêt sur la facette suivante, ou peut être même 1 ou 2 facette suivantes, pour simuler l'inertie de la roue en s'arrêtant.
Cela donnerait plus de réalisme je pense.

C'est au choix du programmeur