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.
Je vous joins le fichier de montage en PDF. Cliquez sur l'image ci-dessous pour le télécharger.
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.
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.
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.