Qu'est-ce qu'un moteur à vibration ? Comment le faire fonctionner dans votre projet ?

Le moteur à vibration est un système générant des vibrations à l’aide d’un mécanisme rotatif,  linéaire ou électromagnétique.

Dans notre cas, nous allons utiliser un moteur à mécanisme rotatif. Son intensité vibratoire fonctionne avec la force centrifuge provoquée par la masse excentrée et de la vitesse de rotation.

Ce moteur omniprésent dans les téléphones et les manettes de jeux vidéos.

Le moteur de vibration permet de faire vibrer votre projet afin de par exemple faire vibrer une manette, une alarme ou pour simuler l’arrivée d’une notification.

Les broches du moteur à vibration

Le moteur à vibration possède deux broches :

  • Vcc : Alimente le moteur. Doit être branché sur le 5V ou une broche pilotable de la carte Arduino.
  • GND : Se branche à la masse de la carte Arduino

Brancher votre moteur

Maintenant, nous allons expliquer comment connecter ce moteur vibrant à votre carte Arduino pour le faire fonctionner. Pour cela, il vous suffit de brancher le moteur vibrant aux broches 5V et GND de votre carte Arduino.

Allumer et éteindre le moteur

Pour allumer et éteindre votre moteur à vibration, nous allons utiliser l’une des broches pilotables de la carte Arduino. Voici le nouveau schéma du circuit :

int moteur_vibration = 12; // Broche du moteur a virabtion
 
void setup() {
    pinMode(moteur_vibration, OUTPUT ); // On met la broche du moteur en sortie
}
 
void loop(){
    digitalWrite(moteur_vibration, HIGH); //On allume le moteur
    delay(1000); // On fait une pause d'une seconde
    digitalWrite(moteur_vibration, LOW); // On éteint le moteur
    delay(1000);
}

Faire varier la vitesse du moteur

Pour réguler l’intensité de votre moteur vibrant, nous allons utiliser la fonction analogWrite. Cela nous permet de faire varier la tension du moteur de 0V à 5V. Le schéma reste identique à celui présenté précédemment.

int broche_moteur = 12; // Broche moteur a vibration
 
void setup() { } 
 
void loop() { 
  // On augmente la valeur
  for (int Valeur = 0 ; Valeur <= 255; Valeur += 5) {
    analogWrite(broche_moteur, Valeur);// On ajoute assigne la valeur au servomoteur (De 0 à 255)
    delay(30); // On fait une pause de 30 milli-seconde
  }
 
  // On décrémente maintenant de 255 à 0
  for (int Valeur = 255 ; Valeur >= 0; Valeur -= 5) {
    analogWrite(broche_moteur, Valeur);// On ajoute assigne la valeur au servomoteur (De 0 à 255)
    delay(30);// On fait une pause de 30 milli-seconde
  }
}