geekservo

Prérequis

Pour réaliser ce tutoriel, vous aurez besoin :

  • d'un arduino UNO,
  • d'un servo-moteur GeekServo,
  • de quelques fils jumper,
  • un bouton poussoir miniature,
  • un ordinateur pour réaliser la programmation,
  • et bien sûr des Lego.

Le montage Lego

Le montage que je vous propose est utilisé dans deux dioramas que j'ai créé dernièrement. Le premier simule un combat de soldats médiévaux et le deuxième anime des bonhommes de neige avec une ambiance de Noël.

Voici la troisième version de mon montage servant dans mes dioramas. Il est constitué d'un mélange de technic et de briques classiques.

mecanisme

Je vous joins le fichier de montage en PDF. Cliquez sur l'image ci-dessous pour le télécharger.

montage lego

Si vous voulez utiliser le servo-moteur GeekServo dans vos modélisation Studio, vous devrez récupérer le pack GeekServo à cette adresse https://jc-tchang.philohome.com/model/Studio_Pack.htm

Utilisation de l'Arduino Uno

Le cablage du servo est très simple. Il y a trois fils, un fil pour la commande du servo et les deux autres pour son alimentation.

cablage arduino servo

Voici un code tout simple activant toutes les demi-secondes une position. Pour le montage Lego, j'ai choisi pour la première position 3° et la seconde 40° afin d'éviter de forcer sur les pièces lego.

#include "Servo.h"

Servo servo; //création de l'objet servo

void setup() {
  servo.attach(10); //attache le servo au pin spécifié 10
}

void loop() {
  servo.write(3);
  delay(500);
  
  servo.write(40);
  delay(500);
}

Voici le résultat.

Ajoutons un bouton pour contrôler le scénario

Maintenant que nous avons vu comment faire fonctionner le servo-moteur, nous allons ajouter un bouton pour gérer le scénario.

cablage arduino servo bouton

 Et voici le code

#include "Servo.h"

Servo servo; //création de l'objet servo

const int buttonPin = 5; //on défini la constante bouton sur 5

int buttonState = 0; //variable état du bouton

void setup() {
  servo.attach(10); //attache le servo au pin spécifié 10

  pinMode(buttonPin, INPUT); //attache le bouton au pin spécifié 5

}

void loop() {
  buttonState = digitalRead(buttonPin); //lecture du bouton

  if (buttonState == HIGH) {
    servo.write(3);
    delay(500);
  
    servo.write(40);
    delay(500);
  }
}

Le servo-moteur fera un aller-retour à chaque appui sur le bouton. Voici le résultat.