ENIB 2022 - groupe D : CandyGrabber : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Code)
Ligne 82 : Ligne 82 :
 
   monServomoteur.write(90);
 
   monServomoteur.write(90);
 
   monServomoteur2.write(90);
 
   monServomoteur2.write(90);
   pinMode(5,INPUT);//activation led bleu pour simuler le piston
+
   pinMode(5,INPUT);//activation vérin (dans notre cas une led bleu pour simuler le vérin que l'on a pas)
   pinMode(6,OUTPUT);//activation led rouge pour simuler la descente de la pince
+
   pinMode(6,OUTPUT);//activation du moteur (dans notre cas la led rouge) pour la descente de la pince
 
   pinMode(7,INPUT);//bouton poussoir
 
   pinMode(7,INPUT);//bouton poussoir
   digitalWrite(7,HIGH);//on active la résistance de pull-up
+
   digitalWrite(7,HIGH);//on active la résistance de pull-up du bouton poussoir du joystick
 
   pinMode(A6,INPUT);//vrx
 
   pinMode(A6,INPUT);//vrx
 
   pinMode(A7,INPUT);//vry
 
   pinMode(A7,INPUT);//vry

Version du 28 janvier 2022 à 12:24

photo de l'équipe

La famille.jpg

Que fait ce projet ?

Le principe du Candy Grabber est simple. Un joystick permet de déplacer une pince, et le but est que celle-ci attrape les bonbons contenus dans la boite afin de les récupérer.

Liste des composants

1. Pour la partie électronique :

  • 1 mini breadboard
  • 1 carte nano Arduino (avec cable d'alimentation)
  • 1 joystick (avec un bouton poussoir intégré)
  • 1 paquet de petits câbles de montage (mâle et femelle)
  • 1 mini vérin électrique (pour ouvrir ou fermer la pince)


2. Pour le rail :

Pour le rail vous avez deux possibilités.

Pour la première on a besoin de :

  • 4 tiges en métal (2 de 30cm et 2 autres de 26cm dans notre cas)
  • 1 planches de bois (3mm d'épaisseur)
  • 2 servomoteurs
  • des élastiques assez grands et fins (100mm de longueur pour 1.8mm de diamètre dans notre cas)

Vous trouverez toutes les explications nécessaires pour la fabrication de vos rail dans le lien ci-dessous : https://www.youtube.com/watch?v=xJyjdwXrtXc


Pour la deuxième, on a besoin de :

  • 4 tiges en métal (2 de 30cm et 2 autres de 26cm dans notre cas)
  • 1 planche de bois (3mm d'épaisseur)
  • 4 servomoteurs
  • fil de cuivre assez fin (prévoir un peu de longueur)
  • 2 cure-dents

Voici une petite photo pour illustrer le montage (c'est le même principe que ce qui est expliqué dans le lien précédent avec quelques modifications) : [photo à rajouter]


Vous trouverez le fichier pour la découpe laser en fin de description.


3. Pour la pince :

  • 3 trombones
  • 1 pique à brochette
  • 1 planche de bois
  • 1 vérins électrique (il faudra adapter le code en conséquence, nous n'avions pas eu le temps de le traiter)

Voici un lien pour la fabrication de la pince : https://www.youtube.com/watch?v=hVH8njs6bKw


Vous trouverez le fichier pour la découpe laser ci-dessous.


Découpe Laser

Fichier:Fichier decoupe laser.zip


Code

/* Inclure la librairie Servo pour manipuler le servomoteur */
#include "Servo.h"

/* Créer un objet Servo pour contrôler le servomoteur */ 
Servo monServomoteur;
Servo monServomoteur2;

void setup(){
  // Attache le servomoteur à la broche D9 
  monServomoteur.attach(8);
  monServomoteur2.attach(9);
  monServomoteur.write(90);
  monServomoteur2.write(90);
  pinMode(5,INPUT);//activation vérin (dans notre cas une led bleu pour simuler le vérin que l'on a pas)
  pinMode(6,OUTPUT);//activation du moteur (dans notre cas la led rouge) pour la descente de la pince
  pinMode(7,INPUT);//bouton poussoir
  digitalWrite(7,HIGH);//on active la résistance de pull-up du bouton poussoir du joystick
  pinMode(A6,INPUT);//vrx
  pinMode(A7,INPUT);//vry
  
  Serial.begin(9600);
  }

void loop() {
  // put your main code here, to run repeatedly:
  int BP=digitalRead(7);
  Serial.println(BP);
  double VRx = analogRead(A6);
  double VRy = analogRead(A7);
  int c;
  int x=0;
  int y=10;
  Serial.println(VRx);
  //if (BP){ //si BP est à 1 donc  non appuyer
    
  //On test la position en x
  if (VRx<400){
    x=1;
  }
  if(VRx>600){
    x=2;
  }
  //on test la position en y
  if (VRy<400){
    y=13;
  }
  if(VRy>600){
    y=16;
  }
  //on definie une variable intermediaire
  c=x+y;
  
  switch (c) {
    //cas 1 gauche
  case 11:
    monServomoteur.write(180);
    monServomoteur2.write(90);
    delay(10);
    break;
    //cas 2 droite
  case 12:
    monServomoteur.write(0);
    monServomoteur2.write(90);
    delay(10);
    break;
    //cas 3 gauche
  case 13:
    monServomoteur2.write(180);
    monServomoteur.write(90);
    delay(10);
    break;
    //cas 4 gauche et gauche
  case 14:
    monServomoteur.write(180);
    monServomoteur2.write(180);
    delay(10);
    break;
    //cas 5 gauche et droite
  case 15:
    monServomoteur.write(0);
    monServomoteur2.write(180);
    delay(10);
    break;
    //cas 6 droite Y
  case 16:
    monServomoteur2.write(0);
    monServomoteur.write(90);
    delay(10);
    break;
    //cas 7 x gauche et y droite
  case 17:
    monServomoteur.write(180);
    monServomoteur2.write(0);
    delay(10);
    break;
    //cas 8
  case 18:
    monServomoteur2.write(0);
    monServomoteur.write(0);
    delay(10);
    break;
  default:
    monServomoteur.write(90);
    monServomoteur2.write(90);
    delay(10);
    break;
}
}
}

Catégories