Boule magique avec Arduino (Open Fabriques 2023/2024)
Tuto de préparation et de suite à l'Open Fabriques du 16 mai : crée ta boule magique avec Arduino !
Sommaire
Introduction
Cette séance permet de découvrir la programmation et la réalisation d'un montage électronique. L'objet final s'inspire des "boules magiques", qui lorsqu'on pose une question, nous propose une réponse aléatoire.
Matériel nécessaire
Par participant·e :
- une carte de programmation (D1 mini ?) et son câble d'alimentation
- une breadboard
- un servo moteur
- un bouton poussoir
- une batterie externe
- des câbles dupont
- médium ou carton de -- x -- cm
- fichier .svg pour découpeuse laser
Ce qui est préparé en amont
- ordinateurs du fablab avec Arduino IDE
- clé USB avec les fichiers ino et .svg
- ? prédécoupage de pièces ?
- de quoi customiser
Montage électronique
Simulation en ligne du montage électronique à réaliser :
Le test est réalisé avec une carte Arduino UNO mais on essaiera d'utiliser une carte D1 mini pour la réalisation finale (carte moins coûteuse et plus discrète).
Programme Arduino
Test n°2
Avec la contrainte de servos à rotation CONTINUE, j'adapte mon programme en demandant d'appuyer sur le bouton pour "lancer la roue", puis : attendre x temps (au hasard) pour s'arrêter.
J'ai choisi de faire appuyer deux fois sur l'interrupteur : une première fois pour lancer la roue, et une seconde pour l'arrêter. Lorsqu'on appuie la seconde fois, j'ai demandé dans le code d'ajouter un délai d'attente aléatoire pour faire arrêter le servo (lignes 28 à 30 du code). Ainsi, le servomoteur s'arrêter quelques secondes après avoir appuyé sur l'interrupteur.
Test n°1
Après test EN RÉEL du montage, je me rends compte que les 2 types de servomoteurs qui existent ne permettent pas d'aller aux angles voulus :
- MICRO SERVO SG90 9G : vont à des angles souhaités UNIQUEMENT entre 0 et 180°
- MICRO SERVO DM-S0090D : sont à rotation CONTINUE
Je dois revoir mon programme pour prendre en compte ces contraintes.
En principe, la bibliothèque permettant de contrôler un servo moteur est déjà comprise dans Arduino. Si elle n'y est pas, voilà un tutoriel pour installer une bibliothèque sur Arduino.
Ce programme permet de modifier l'angle du servomoteur de façon "aléatoire" lorsqu'on appuie sur le bouton. "Aléatoire", entre guillemets, car on a déterminé 6 positions dans le code, et qu'on lui demande de choisir parmi ces 6 options à chaque fois. Un léger délai est donné au cycle du code afin d'éviter les tressautements du servo.
Les lignes du code sont commentées afin d'être plus compréhensible.