Alors voilà la première vague rapide de ce tuto pour rajouter un potentiomètre de réglage sur l'amplitude du volant de votre borne
Matériel nécessaire pour faire vos tests :
- des câbles dupont
- une breadboard
- un potentiomètre
- un mcp41010 (potentiomètre numérique)
- un arduino uno (dans cette exemple)
- un câble usb
Par la suite si ça fonctionne comme vous le voulez, vous pouvez alimenter directement l'arduino avec l'alim de la borne et déporter le potentiomètre de réglage dans la caisse du monnayeur.
Alors voici pour le câblage :


J'ai directement utilisé des câbles dupont avec embout femelle dans le connecteur rouge femelle et mâle dans la connecteur rouge mâle.
Pour le code Arduino le voici :
#include <SPI.h> // Librairie pour le mcp41010
byte address = 0x11; // Variable pour la librairie SPI
int CS = 10; // Variable pour la librairie SPI
int potPinVolant = A0; //Pin de branchement du potentiomètre du volant
int potPinPot = A1; // Pin de branchement du potentiomètre de réglage
int potValeurOut = 0; // Nouvelle valeur à renvoyer à la borne
int potValeurIn = 0; // Valeur d'entrée du volant
int potValeurModif = 0; // Valeur du potentiomètre de réglage
int ValeurMin = 0 ; // Valeur min du potentiomètre du volant - position gauche
int ValeurMax = 1023; // Valeur max du potentiomètre du volant - position droite
int ValeurMinOK = 0; // Valeur min pour le remplacement - position gauche
int ValeurMaxOK = 255; // Valeur max pour le remplacement - position droite
void setup()
{
pinMode (CS, OUTPUT); //setup pour la librairie SPI
SPI.begin(); //setup pour la librairie SPI
pinMode (potPinVolant, INPUT); //on passe bien en entrée potPinVolant
pinMode (potPinPot, INPUT); //on passe bien en entrée potPinVolant
}
void loop()
{
potValeurIn = analogRead (potPinVolant); //potValeurIn reçoit la position du volant
potValeurModif = analogRead (potPinPot); //potValeurModif reçoit la position du potentiomètre de réglage
ValeurMinOK = ValeurMin + potValeurModif; //ici on vient donc rajouter des "butée" virtuelle pour le min (donc à gauche)
ValeurMaxOK = ValeurMax - potValeurModif; //et pour le max (donc à droite) en fonction de la position de notre potentiomètre de réglage
if(potValeurIn<ValeurMinOK)potValeurIn=ValeurMinOK; //on vérifie que la valeur du potentiomètre du volant ne passe pas en dessous de celle minimum de réglage (de la butée)
if(potValeurIn>ValeurMaxOK)potValeurIn=ValeurMaxOK; //même chose pour le max
potValeurOut = map (potValeurIn, ValeurMinOK, ValeurMaxOK, 0, 255); //on remplace la valeur
digitalPotWrite(potValeurOut); //on envoie la nouvelle valeur
}
//fonction pour la librairie SPI
int digitalPotWrite(int value)
{
digitalWrite(CS, LOW);
SPI.transfer(address);
SPI.transfer(value);
digitalWrite(CS, HIGH);
}
Un petit exemple en fonctionnement dans le menu test d'Outrun 2SP (désolé j'ai toujours un vieux lcd 23" à la place de l'écran) :

Photo 1 : position du milieu qui n'a pas bougé //// Photo 2 : volant à 90° à droite avec la valeur du potentiomètre sans modificateur //// Photo 3 : j'ai tourné le potentiomètre de réglage de notre montage pour définir que le max est désormais à 90°. Si votre volant était bien centré, alors sa valeur à gauche sera du même ratio, soit -90° pour le max.
Voilà !
Hésitez pas si vous avez des retours et point d'amélioration. Si ça intéresse du monde je créerai un topic exclusivement à ce sujet ; car on peut imaginer plein de petites améliorations et options.
++