Hello, je vous présente ce soir mon projet bricolage du week-end.
J'ai une grosse envie de construite un tapis de danse double depuis un petit moment pour jouer avec ma fille. Faute de temps à y consacrer, j'ai fait un bricolage express ce week-end pour modifier mon vieux tapis TX 6000.
En gros, j'ai activé une sortie non documentée de Stepmania pour allumer les lampes sur les tapis d'arcade, je me suis tapé le code du jeu pour comprendre ce qu'elle sortait, j'ai programmé un décodeur sur un Arduino Nano, je l'ai raccordé à une guirlande de LED adressables, et j'ai collé la guirlande autour du tapis, dans des rails à placo (parce que ça fait un super réflecteur et c'est solide).
Le résultat en images. Attention, il est possible que je danse un peu à la fin!
Pimp my DDR mat!
- Bouz
- Référent Technique
- Messages : 1061
- Enregistré le : mer. 22 déc. 2021 18:52
- Localisation : Hérault
- Contact :
- Xrider
- Administrateur
- Messages : 3692
- Enregistré le : sam. 14 sept. 2019 10:47
- Localisation : MaskRom
- Contact :
Re: Pimp my DDR mat!
Excellent !
Quand tu dis que l’arduino « decode », il fait quoi exactement sur la sortie non documenté ? C’est un signal protocolaire (style RS232) ou des pins qui sortent directement des tensions ?
C’est top stemania !
C’était une super idée !
Félicitations Bouz !
Quand tu dis que l’arduino « decode », il fait quoi exactement sur la sortie non documenté ? C’est un signal protocolaire (style RS232) ou des pins qui sortent directement des tensions ?
C’est top stemania !
C’était une super idée !
Félicitations Bouz !
- Bouz
- Référent Technique
- Messages : 1061
- Enregistré le : mer. 22 déc. 2021 18:52
- Localisation : Hérault
- Contact :
Re: Pimp my DDR mat!
Merci .
Pour la connexion, à la base, StepMania proposait une sortie sur une double carte parallèle.
Plus récemment, un driver "fichier" a été implémenté, avec Linux pour cible. Vu que tout est fichiers par là-bas, ça réglait tous les problèmes.
Sous Windows, quand on lit les commentaires du code, on voit que le développeur se disait que ça marcherait avec des "Named Pipes" (canal nommé local de communication série). Malheureusement, après avoir essayé, le jeu me crée un fichier et écrit les données dedans. Visiblement, le format de nommage des named pipes n'est pas reconnu par les API utilisées pour écrire.
Du coup, je me suis dit qu'avec une sortie sur un port COM, ça devrait le faire, vu que c'est reconnu à peu près nativement comme des fichiers par l'OS.
L'Arduino reçoit les données via sa puce FTDI et il ne me reste plus qu'à interpréter les commandes.
Pour la structure des commandes, je suis allé voir par ici: https://github.com/stepmania/stepmania/ ... 974fe45ccd
Les infos arrivent par groupes de 6 bits complémentés pour faire des caractères affichables. Il y en a pour les innombrables lampes d'une borne DDR (je ne récupère que les lampes des enceintes qui clignotent), et pour les innombrables lampes des contrôleurs supportés (je ne récupère que les 4 flèches).
Le code se résume donc à récupérer le flux d'infos en provenance du port série, à intercepter les états qui m'intéressent, et à détecter des modifications éventuelles, puis à appliquer les modifications sur la bande de LED.
J'en ai juste bavé avec la connexion série, qui se faisait couper aléatoirement au démarrage de StepMania (l'Arnuino utilise les signaux de contrôle de flux matériel pour commander le RESET du MCU!), et dont les paramètres configurés sous Windows étaient virés aléatoirement aussi. => environ 6h perdues juste pour régler ça, il faut être motivé!
Pour la connexion, à la base, StepMania proposait une sortie sur une double carte parallèle.
Plus récemment, un driver "fichier" a été implémenté, avec Linux pour cible. Vu que tout est fichiers par là-bas, ça réglait tous les problèmes.
Sous Windows, quand on lit les commentaires du code, on voit que le développeur se disait que ça marcherait avec des "Named Pipes" (canal nommé local de communication série). Malheureusement, après avoir essayé, le jeu me crée un fichier et écrit les données dedans. Visiblement, le format de nommage des named pipes n'est pas reconnu par les API utilisées pour écrire.
Du coup, je me suis dit qu'avec une sortie sur un port COM, ça devrait le faire, vu que c'est reconnu à peu près nativement comme des fichiers par l'OS.
L'Arduino reçoit les données via sa puce FTDI et il ne me reste plus qu'à interpréter les commandes.
Pour la structure des commandes, je suis allé voir par ici: https://github.com/stepmania/stepmania/ ... 974fe45ccd
Les infos arrivent par groupes de 6 bits complémentés pour faire des caractères affichables. Il y en a pour les innombrables lampes d'une borne DDR (je ne récupère que les lampes des enceintes qui clignotent), et pour les innombrables lampes des contrôleurs supportés (je ne récupère que les 4 flèches).
Le code se résume donc à récupérer le flux d'infos en provenance du port série, à intercepter les états qui m'intéressent, et à détecter des modifications éventuelles, puis à appliquer les modifications sur la bande de LED.
J'en ai juste bavé avec la connexion série, qui se faisait couper aléatoirement au démarrage de StepMania (l'Arnuino utilise les signaux de contrôle de flux matériel pour commander le RESET du MCU!), et dont les paramètres configurés sous Windows étaient virés aléatoirement aussi. => environ 6h perdues juste pour régler ça, il faut être motivé!
- Xrider
- Administrateur
- Messages : 3692
- Enregistré le : sam. 14 sept. 2019 10:47
- Localisation : MaskRom
- Contact :
Re: Pimp my DDR mat!
Great job !
le puce AVR de atmel sont vraiment top et surtout très polyvalentes.
La plupart de mes devs ne nécessitant pas de CPLD/FPGA sont basé sur ces puces
le puce AVR de atmel sont vraiment top et surtout très polyvalentes.
La plupart de mes devs ne nécessitant pas de CPLD/FPGA sont basé sur ces puces
- Bouz
- Référent Technique
- Messages : 1061
- Enregistré le : mer. 22 déc. 2021 18:52
- Localisation : Hérault
- Contact :
Re: Pimp my DDR mat!
Je suis fan des ATTiny84 et 85. Le 85 a 8 pattes, au format DIP, tourne à 16MHz dans quartz externe et envoie sérieusement du bois.
Ca se programme avec les environnements Arduino et ça ne coûte rien!
Je n'ai jamaIs utilisé de PIC, mais ça doit être similaire.
Le microcontrôleur RPI a l'air sympa aussi, avec ses GPIO programmables. Une bonne alternative au CPLD?
Ca se programme avec les environnements Arduino et ça ne coûte rien!
Je n'ai jamaIs utilisé de PIC, mais ça doit être similaire.
Le microcontrôleur RPI a l'air sympa aussi, avec ses GPIO programmables. Une bonne alternative au CPLD?