ENIB 2022 - groupe D : CandyGrabber

De Les Fabriques du Ponant
Aller à : navigation, rechercher

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é)
  • 4 cerveaux moteurs
  • 1 paquet de petits câbles de montage (mâle et femelle)

* 1 moteur 5V

  • 1 mini version électronique
  • 1 mini vérin électrique
  • 1 contrôleur moteur


2. Pour le rail :

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


3. Pour la pince :

  • 3 trombones
  • 1 pique à brochette
  • 1 planche de bois


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


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 led bleu pour simuler le piston
  pinMode(6,OUTPUT);//activation led rouge pour simuler la descente de la pince
  pinMode(7,INPUT);//bouton poussoir
  digitalWrite(7,HIGH);//on active la résistance de pull-up
  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