Catégories
Liens
Un arduino contrôle des vibreurs par MIDI-USB. À chaque vibreur est attribué un numéro de Control Change qui permet de l'actionner plus ou moins rapidement.
Le circuit est très simple. Chaque vibreur est actionné par un petit transistor NPN. Une diode de roue libre protège le transistor et une résistance limite le courant provenant du pin de l'arduino. Un petit condensateur filtre les transients.
La librairie midiUSB permet à l'arduino d'être reconnu comme une interface MIDI. Afin de pouvoir connecter des vibreurs sur n'importe quel pin numérique, la librairie SoftPWM gère manuellement le PWM. Chaque moteur est déclaré dans un struct contenant le pin associé ainsi que son numéro de CC :
struct motor { byte ccNumber; unsigned int pin; };
Ces structs sont ensuite ajoutés à un tableau qui permettra d'en modifier le nombre dynamiquement, sans avoir à modifier le reste du code. Il suffira donc d'ajouter une ligne {numéroDuCC, numéroDuPin}
au tableau pour ajouter un vibreur:
motor motors[] = { {1, 2}, // CC#1 will control pin 2 {2, 3} // and CC#2 -> pin 3 };
Selon le moteur, il est possible qu'il n'ait pas la force de vibrer en dessous d'une certaine valeur de PWM. Cette valeur peut être renseignée dans un #define en début de fichier : #define MIN_PWM 30 // minimal PWM value that will start the motor (0~255)
. De cette façon, le moteur tournera plus ou moins vite selon la valeur du CC reçu mais il s'éteindra toujours en recevant zéro. Un fondu peut également être appliqué en ouverture comme en fermeture à chaque changement de valeur. Sa durée est réglable en ms (0 pour le désactiver). Enfin, le numéro du canal MIDI est également réglable dans un define.
Autres photos, galerie, …