Différences entre les pages « Chasse LED avec arduino » et « Pince avec arduino »

 
 
Ligne 1 : Ligne 1 :
 
{{Tuto Details
 
{{Tuto Details
|Main_Picture=Chasse_LED_avec_arduino_250px-Vatx_proto_0_2.jpg
+
|Main_Picture=Pince_avec_arduino_500px-Pince_servo.JPG
 
|Licences=Attribution (CC-BY)
 
|Licences=Attribution (CC-BY)
|Description=Chasse LED
+
|Description=Et si vous en pinciez pour la carte arduino ? Une fois greffé sur un manche, on pourra attraper, grâce à des servomoteurs, différent objets en tournant les potentiomètres !
|Disciplines scientifiques=Electricity
+
|Disciplines scientifiques=Arduino, Computing
 
|Difficulty=Technical
 
|Difficulty=Technical
|Duration=50
+
|Duration=1
|Duration-type=minute(s)
+
|Duration-type=hour(s)
}}
 
{{Introduction
 
|Introduction=D'horribles LED nous envahissent ! L'heure est venue de les éliminer, mais il faut d'abord s’entraîner. Fabriquons donc un simulateur à base de LED pour préparer la guerre finale...
 
 
}}
 
}}
 +
{{Introduction}}
 
{{Materials
 
{{Materials
 
|ItemList={{ItemList
 
|ItemList={{ItemList
 
|Item=Logiciel Arduino
 
|Item=Logiciel Arduino
 
}}{{ItemList
 
}}{{ItemList
|Item=Fil électrique
+
|Item=Ordinateur
 +
}}{{ItemList
 +
|Item=Colle
 +
}}{{ItemList
 +
|Item=Breadboard
 +
}}{{ItemList
 +
|Item=Bobine de fil d'étain
 
}}{{ItemList
 
}}{{ItemList
|Item=Led
+
|Item=Servomoteur
 
}}{{ItemList
 
}}{{ItemList
|Item=Platine de Prototypage
+
|Item=Potentiomètre
 
}}{{ItemList
 
}}{{ItemList
 
|Item=Arduino Uno
 
|Item=Arduino Uno
Ligne 26 : Ligne 30 :
 
{{Tuto Step
 
{{Tuto Step
 
|Step_Title=Réaliser
 
|Step_Title=Réaliser
|Step_Content=* Réaliser le montage en suivant la vidéo/le schéma.
+
|Step_Picture_00=Pince_avec_arduino_500px-Schema_Pince_servo.png
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Relier
 +
|Step_Content=Le 5V de la carte arduino à la breadboard afin de créer plus de broches (il en faut une par servomoteurs et une par potentiomètre)
 +
}}
 +
{{Tuto Step
 +
|Step_Content=* Un des GND de la carte à une autre ligne de la breadboard (il en faut également un par servomoteurs et un par potentiomètre)
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Lancer
+
|Step_Content=* Un des servomoteurs à la broche 9
|Step_Content=* Lancer le logiciel Arduino.
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Copier
+
|Step_Content=* L'autre à la broche 6
|Step_Content=Copier/coller le code suivant dans le programme permettant d'utiliser Arduino :
 
 
 
// Ce programme sert à faire le chasse-led
 
int led[4]={8,9,10,11};              //Déclaration des pattes des leds
 
int bp[4]={2,3,4,5};                //Déclaration des pattes des boutons poussoirs
 
//Déclaration et initialisation des variables globales servant pour la suite du code
 
int initLed = 0;       
 
int i;
 
int randnumber ;
 
int tirage = 0;
 
int compteur;
 
int score;
 
void setup(){                        //Fonction permettant d'initialiser le matériel (leds et boutons poussoir)
 
  Serial.begin(9600);                //Indique que Arduino se situe sur le port usb 9600
 
  for(i=0;i<4;i++){                  //Boucle parcourant toutes les variables de 0 à 3
 
      pinMode(bp[i], INPUT);        //Indique que le bouton poussoir est une entrée
 
      pinMode(led[i],OUTPUT);      //Indique que les leds sont des sorties
 
      digitalWrite(led[i],LOW);    //On met les leds au niveau bas (elles sont eteintes au depart)
 
      digitalWrite(bp[i],HIGH);    //On met les boutons poussoirs au niveau haut
 
}
 
  compteur=0;                        //Initialisation du compteur à 0
 
}
 
void loop(){
 
    if (initLed == 0)  {                    //Premier passage dans la fonction loop
 
      randnumber=random(0,4);              //Déclaration d'un premier nombre aléatoire de 0 à 3
 
      digitalWrite(led[randnumber],HIGH);  //Met la led correspondant au numéro aléatoire au niveau haut
 
      Serial.println("valeur aleatoire:");  //Affiche "valeur aléatoire :" dans le terminal
 
      Serial.println(randnumber,DEC);      //Affiche dans le terminal le numéro aleatoire
 
      compteur = compteur + 1;              //incrémentation du compteur
 
      initLed =1;                          //Indique que le programme est déjà lancé pour ne plus aller dans ce test
 
      tirage = 1;                          //Permet d'aller au test suivant
 
      delay(500);                          //Attente d'une demi seconde (500 = 500ms)
 
}
 
  if (tirage == 1 ){                            //Deuxième test valide si on a passé le premier test
 
      if(digitalRead(bp[randnumber])==LOW){      //Regarde si le bouton poussoir associé a la led est active
 
          Serial.println("valeur du compteur:"); //Affiche "valeur du compteur :" dans le terminal
 
          Serial.println(compteur,DEC);          //Affiche la valeur du compteur dans le terminal
 
          digitalWrite(led[randnumber],LOW);    //Éteint la led quand on a appuyé sur le bp (bp=bouton poussoir)
 
          randnumber=random(4);                  //Cherche un autre nombre aléatoire
 
          digitalWrite(led[randnumber],HIGH);    //Allume la led correspondant a ce nouveau nombre
 
          compteur = compteur + 1;              //Incrémente le compteur
 
          Serial.println("valeur aleatoire:");  //Affiche "valeur aléatoire :" dans le terminal
 
          Serial.println(randnumber,DEC);        //Affiche dans le terminal le numero aleatoire
 
          delay(500);                            //Attente d'une demi seconde
 
}
 
      else { if ( digitalRead(bp[(randnumber+1)%4])==LOW
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Brancher
+
|Step_Content=* Un des potentiomètres à la broche A0
|Step_Content=* Brancher l'Arduino sur un port USB de l'ordinateur.
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Cliquer
+
|Step_Content=* L'autre à la broche A1
|Step_Content=* Cliquer sur l'image représentant une sorte de v, puis sur l'image
+
On colle ensuite un servomoteur d'un côté du support et le second de l'autre côté (par exemple avec du double face ou avec de la colle).
représentant une flèche (le programme sera mis dans l'Arduino).
+
 
 +
le code :
 +
 
 +
<nowiki>#</nowiki>include <Servo.h> //on ajoute la librairie pour piloter les servomoteurs
 +
//On créé 2 objets de type servo
 +
Servo gauche;
 +
Servo droite;
 +
//On créé 2 variables qui représente les broches où sont reliées les potentiomètres
 +
int potpin = 0;
 +
int potpin2 = 1;
 +
//On créé 2 variables où seront stockées les valeurs reçues des potentiomètres
 +
int val2;
 +
int val;
 +
void setup() {
 +
  gauche.attach(9); //On lie le servo nommé "gauche" avec la broche 9
 +
  droite.attach(6); //On lie le second avec la broche 6
 +
}
 +
void loop() {
 +
  //On lit les valeurs des ponteiomètres
 +
val = analogRead(potpin);
 +
val2 = analogRead(potpin2);
 +
  //On "map" les variables : le potentiomètre renvoie une valeur entre 0 et 1023 or le servo
 +
  //Ne "comprend" que les valeurs comprises entre 0 et 180 : on fait donc un changement
 +
  //D'intervale
 +
val2 = map(val2, 0, 1023, 0, 179); 
 +
val = map(val, 0, 1023, 0, 179);
 +
  //On applique ensuite ces valeurs aux servomoteurs
 +
droite.write(val2);
 +
gauche.write(val);   
 +
  //On fait une "pause" pour ne pas surcharger la carte arduino
 +
delay(20);
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Resultat
+
|Step_Title=Que voit-on
|Step_Content=Attendre la fin du transfert.
+
|Step_Content=Explication ci-dessous
 +
|Step_Picture_00=Pince_avec_arduino_500px-Pince_servo.JPG
 +
|Step_Picture_01=Pince_avec_arduino_500px-Pince_servo2.JPG
 
}}
 
}}
 
{{Notes
 
{{Notes
|Observations=Appuyer, sans se tromper, sur le bouton associé à chaque Del. Dès qu'une erreur est commise, le jeu s'arrête et le score s'affiche. Chaque Del correspond à un palier. Celle de gauche signifie que vous êtes un champion de la ligue Pokémon, celle du milieu gauche un champion de l’arène de Cramois'ile, celle du milieu droit un champion d'Azuria, et celle de droite que vous quittez Bourg-palette.
+
|Observations=On voit que si l'on tourne les potentiomètres, les servomoteurs tournent également : cela permet de refermer les servomoteurs pour former une pince capable d'attraper des objets.
|Avertissement=Se tromper dans les codages
+
|Explanations=Les potentiomètres sont des résistances variables quand on les tourne : elles permettent de bloquer plus ou moins fortement le courant et ainsi de renvoyer à la carte arduino une valeur qui varie selon le courant qui passe. Cette valeur varie généralement (pour arduino) de 0 à 1023, on utilise alors la fonction map afin de passer de l'intervalle 0-1023 à 0-180, angles selon lesquels le servomoteur peut tourner.
|Explanations==== '''De manière simple''' ===
 
Les Leds s'allument de manière aléatoire de plus en plus vite. À chaque pression sur un bouton poussoir se produit l'événement suivant : soit ce bouton correspond à la bonne led et le jeu continue, soit ce bouton ne correspond pas à la bonne Led, le jeu s’arrête et le score s'affiche à l'aide des leds.
 
|Deepen==== '''Allons plus loin dans l'explication''' ===
 
L'Arduino est un microprocesseur dont les instructions sont codées dans un langage proche du C. Plus d'info sur l'article Wikipédia [http://wikipedia.org/wiki/langage_C Langage C].
 
  
En C, on déclare le type des variables avant de les utiliser : ici les int correspondent à des nombres entiers (1,2,3...), et le void correspond à une fonction non typée. Le const devant un type signifie que l'objet  manipulé ne peut pas être modifié
+
Il suffit ensuite de faire tourner les servomoteurs l'un vers l'autre pour former une pince s'actionnant à l'aide des potentiomètres.
 +
|Applications=Cela peut faire une approche pour un sujet traitant de la robotique : on voit souvent des pinces dans les labo et autres.
 
}}
 
}}
 
{{Tuto Status
 
{{Tuto Status
|Complete=Published
+
|Complete=Draft
 
}}
 
}}
 
{{Separator}}
 
{{Separator}}

Version actuelle datée du 12 décembre 2020 à 11:31

Auteur avatarTess | Dernière modification 12/12/2020 par Antonydbzh

Pince avec arduino 500px-Pince servo.JPG
Et si vous en pinciez pour la carte arduino ? Une fois greffé sur un manche, on pourra attraper, grâce à des servomoteurs, différent objets en tournant les potentiomètres !
Licence : Attribution (CC-BY)

Étape 1 - Réaliser




Étape 2 - Relier

Le 5V de la carte arduino à la breadboard afin de créer plus de broches (il en faut une par servomoteurs et une par potentiomètre)

Étape 3 -

  • Un des GND de la carte à une autre ligne de la breadboard (il en faut également un par servomoteurs et un par potentiomètre)

Étape 4 -

  • Un des servomoteurs à la broche 9

Étape 5 -

  • L'autre à la broche 6

Étape 6 -

  • Un des potentiomètres à la broche A0

Étape 7 -

  • L'autre à la broche A1

On colle ensuite un servomoteur d'un côté du support et le second de l'autre côté (par exemple avec du double face ou avec de la colle).

le code :

#include <Servo.h> //on ajoute la librairie pour piloter les servomoteurs //On créé 2 objets de type servo Servo gauche; Servo droite; //On créé 2 variables qui représente les broches où sont reliées les potentiomètres int potpin = 0; int potpin2 = 1; //On créé 2 variables où seront stockées les valeurs reçues des potentiomètres int val2; int val; void setup() {

 gauche.attach(9); //On lie le servo nommé "gauche" avec la broche 9
 droite.attach(6); //On lie le second avec la broche 6

} void loop() {

 //On lit les valeurs des ponteiomètres

val = analogRead(potpin); val2 = analogRead(potpin2);

 //On "map" les variables : le potentiomètre renvoie une valeur entre 0 et 1023 or le servo
 //Ne "comprend" que les valeurs comprises entre 0 et 180 : on fait donc un changement
 //D'intervale

val2 = map(val2, 0, 1023, 0, 179); val = map(val, 0, 1023, 0, 179);

 //On applique ensuite ces valeurs aux servomoteurs

droite.write(val2); gauche.write(val);

 //On fait une "pause" pour ne pas surcharger la carte arduino

delay(20);

Étape 8 - Que voit-on

Explication ci-dessous



Comment ça marche ?

Observations : que voit-on ?

On voit que si l'on tourne les potentiomètres, les servomoteurs tournent également : cela permet de refermer les servomoteurs pour former une pince capable d'attraper des objets.

Explications

Les potentiomètres sont des résistances variables quand on les tourne : elles permettent de bloquer plus ou moins fortement le courant et ainsi de renvoyer à la carte arduino une valeur qui varie selon le courant qui passe. Cette valeur varie généralement (pour arduino) de 0 à 1023, on utilise alors la fonction map afin de passer de l'intervalle 0-1023 à 0-180, angles selon lesquels le servomoteur peut tourner.

Il suffit ensuite de faire tourner les servomoteurs l'un vers l'autre pour former une pince s'actionnant à l'aide des potentiomètres.

Applications : dans la vie de tous les jours

Cela peut faire une approche pour un sujet traitant de la robotique : on voit souvent des pinces dans les labo et autres.


Dernière modification 12/12/2020 par user:Antonydbzh.

Commentaires

Draft