Boule magique avec Arduino (Open Fabriques 2023/2024)

De Les Fabriques du Ponant
Révision datée du 30 avril 2024 à 14:16 par Sarah.aio (discussion | contributions) (Programme Arduino)
Aller à : navigation, rechercher

Tuto de préparation et de suite à l'Open Fabriques du 16 mai : crée ta boule magique avec Arduino !

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 :

Fritzing-boule-magique.png

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.

Capture-code-boule-magique-v2.png

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.

Capture-code-boule-magique.png

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.