Digispark GamePad

But gérer un stick d’arcade a switch ( 4 switch pour 8 directions ) depuis une entrée analogique pour limiter le nb d’entrées utilisées ( 4 normalement 1 pour chaque switch ) et utiliser un module digispark pro USB ( a base d’ATtiny167 ~3€ chez aliexpress ) et aussi gestion de 8 boutons sur  le gamepad .
.

Pour gérer le signal analogique qui permettras de savoir quelle position a été actionné , j’utilise un pont diviseur de tension a résistance. :petit rappel U1 = (R1/(R1+R2)) x U

schéma du « stick analogique » :

j’utilise des résistances a 1% pour faciliter l’étalonnage du système et pour les tests un module arduino , code de test :

 

valeurs R=20K , R1=10K , R2=20K R3=82K R4=39K,  VE alimentation du module: 5V
pour les positions en diagonale ( HD , BD , BG , HG ) on se retrouve avec 2 résistances en parallèle dans notre pont diviseur :
R5eq=(R1*R2)/(R1+R2) ( pour la position HD )
R6eq=(R3*R2)/(R3+R2) ( pour la position BD )
R7eq=(R3*R4)/(R3+R4) ( pour la position BG )
R8Eq=(R1*R4)/(R1+R4) ( pour la position HG )
pour chaque direction au auras en théorie :

Pos VS  tension  resultat ADC  valeur réelle
X VE 5.00 V 1023 1023
H (R1/(R+R1)) xVE 1.67 V 341 344
B (R2/(R+R2)) xVE 4.02 V 823 825
G (R4/(R+R4)) xVE 3.31 V 677 674
D (R3/(R+R3)) xVE 2.50V 512 513
HD (R5eq/(R+R5eq)) xVE 1.25 V 256 257
BD (R6eq/(R+R6eq)) xVE 2.23 V 456 458
BG (R7eq/(R+R7eq)) xVE 2.85 V 583 582
HG (R8eq/(R+R8eq)) xVE 1.42 V 292 292

 

comme on le voit dans le tableau les valeurs réelle sont très proches des valeurs théoriques , grâce  aux résistances de 1% , pas la peine de prendre des résistances plus précises

source arduino pour retourner les différentes positions

sortie depuis le terminal (depuis l’interface atom / platformio )

firmware de base en cours

Firmware terminé  sources dispos sur Github