Draw me silly : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Création du mécanisme)
(Code arduino)
Ligne 79 : Ligne 79 :
 
void loop() {
 
void loop() {
  
   double sensorValueX = analogRead(A1)/100.0;      //recupération des données fournie par le joystick sur les pins A1 et A2
+
   double sensorValueX = analogRead(A1)/100.0;      //recupération des données fournies par le joystick sur les pins A1 et A2
 
   double sensorValueY = analogRead(A2)/100.0;
 
   double sensorValueY = analogRead(A2)/100.0;
  
   //Serial.println(sensorValueX);                    //l'affichage dans la console permet de debuger et peut etre placé en commentaire ensuite
+
   //Serial.println(sensorValueX);                    //l'affichage dans la console permet de debuger et peut être placé en commentaire ensuite
 
   //Serial.println(sensorValueY);
 
   //Serial.println(sensorValueY);
  
Ligne 88 : Ligne 88 :
 
    
 
    
 
   // SensorValue va de 0 a 10.23, on défini que entre 4.5 et 5.5 le moteur ne tourne pas
 
   // SensorValue va de 0 a 10.23, on défini que entre 4.5 et 5.5 le moteur ne tourne pas
   // Il faut un espace suffisant pour etre sur que le moteur se soit eteind avant de changer de sens
+
   // Il faut un espace suffisant pour etre sur que le moteur se soit éteint avant de changer de sens
  
 
    
 
    
Ligne 109 : Ligne 109 :
 
   if (sensorValueX>6)
 
   if (sensorValueX>6)
 
   {
 
   {
     digitalWrite(xMotorB1,LOW);                //On met les pins controllant l'autre sens de rotation au cas où nous  
+
     digitalWrite(xMotorB1,LOW);                //On met les pins contrôlant l'autre sens de rotation au cas où nous  
 
     digitalWrite(xMotorB2,LOW);                //passons trop vite d'un sens à l'autre que nous sautons l'intervalle 4.5-5.5
 
     digitalWrite(xMotorB2,LOW);                //passons trop vite d'un sens à l'autre que nous sautons l'intervalle 4.5-5.5
 
     digitalWrite(xMotorA1,HIGH);                //Alimentation de 2 pins pour avoir plus de courant
 
     digitalWrite(xMotorA1,HIGH);                //Alimentation de 2 pins pour avoir plus de courant
Ligne 118 : Ligne 118 :
 
     digitalWrite(xMotorA1,LOW);
 
     digitalWrite(xMotorA1,LOW);
 
     digitalWrite(xMotorA2,LOW);
 
     digitalWrite(xMotorA2,LOW);
     digitalWrite(xMotorB1,HIGH);              // on fais varier x dans le sens B
+
     digitalWrite(xMotorB1,HIGH);              // on fait varier x dans le sens B
 
     digitalWrite(xMotorB2,HIGH);
 
     digitalWrite(xMotorB2,HIGH);
 
   }
 
   }
Ligne 126 : Ligne 126 :
 
     digitalWrite(yMotorB1,LOW);
 
     digitalWrite(yMotorB1,LOW);
 
     digitalWrite(yMotorB2,LOW);
 
     digitalWrite(yMotorB2,LOW);
     digitalWrite(yMotorA1,HIGH);                  // on fais varier y dans le sens A
+
     digitalWrite(yMotorA1,HIGH);                  // on fait varier y dans le sens A
 
     digitalWrite(yMotorA2,HIGH);
 
     digitalWrite(yMotorA2,HIGH);
 
   }
 
   }
Ligne 133 : Ligne 133 :
 
     digitalWrite(yMotorA1,LOW);
 
     digitalWrite(yMotorA1,LOW);
 
     digitalWrite(yMotorA2,LOW);
 
     digitalWrite(yMotorA2,LOW);
     digitalWrite(yMotorB2,HIGH);              // on fais varier y dans le sens B
+
     digitalWrite(yMotorB2,HIGH);              // on fait varier y dans le sens B
 
     digitalWrite(yMotorB1,HIGH);
 
     digitalWrite(yMotorB1,HIGH);
 
   }
 
   }

Version du 23 janvier 2019 à 16:13

Résumé de notre projet

Draw me silly est un projet qui se base sur les jeux pour enfants "ardoises magiques" et pictionnary. Le but principal de cet objet est de dessiner à l'aide d'un joystick qui va guider un crayon dont la mine ne se décollera jamais de la feuille.

Le matériel utilisé

  1. matériel
  • 2 lecteurs CD récupérés sur un vieil ordinateur
  - 2 moteurs 
  - 2 élastiques 
  • 1 carte arduino + câble d'alimentation
  • 1 joystick
  • Des plaques fines de bois
  • 1 règle
  • 1 équerre
  • 1 crayon
  • Des vis
  • 1 embout de compas pour maintenir le crayon
  • Du ruban adhésif
  1. Outils et machines à commande numériques
  • 1 soudeuse
  • 1 pistolet à colle
  • 1 découpeuse laser
  • Tournevis
  • 1 scie
  • 1 lime à bois
  • 1 perceuse

Création du mécanisme

Récupérez 2 lecteurs CD d'une vieille tour d'ordinateur. Démonter les mécanismes qui les contrôle et ne garder que les moteurs et le bati qui contrôlent l'entrée/sortie du lecteur.

AxeDrawMeSilly.jpg


Connecter les moteurs à la carte arduino par des fils. Cette dernière va donner les ordres aux moteurs selon les informations qu'elle va recueillir à partir du joystick.


CâblageDrawMeSilly.png

Création de la structure

La structure est en réalité une boîte et des soutiens pour sécuriser le lecteur CD qui maintien le crayon. Cette dernière est créée à l'aide d'une découpeuse laser

Code arduino


// Nous utilisons 2 pins pour chaque commande du moteur, car l'intensité du signal de sortie d'un pin
// est de 40Ma. Pour plus d'info voir la partie sur le cablage.

int xMotorA1 = 10,xMotorA2 = 11,xMotorB1 = 12,xMotorB2 = 13;          //moteur X sens A et B
int yMotorA1 = 6,yMotorA2 = 7,yMotorB1 = 8,yMotorB2 = 9;              //moteur Y sens A et B


void setup() {

  // On défini les pins de controle du moteur en sortie
  pinMode(xMotorB1,OUTPUT);      
  pinMode(xMotorB2,OUTPUT);
  pinMode(xMotorA1,OUTPUT);
  pinMode(xMotorA2,OUTPUT);

  pinMode(yMotorB1,OUTPUT);
  pinMode(yMotorB2,OUTPUT);
  pinMode(yMotorA1,OUTPUT);
  pinMode(yMotorA2,OUTPUT);

  Serial.begin(9600);
}


void loop() {

  double sensorValueX = analogRead(A1)/100.0;       //recupération des données fournies par le joystick sur les pins A1 et A2
  double sensorValueY = analogRead(A2)/100.0;

  //Serial.println(sensorValueX);                     //l'affichage dans la console permet de debuger et peut être placé en commentaire ensuite
  //Serial.println(sensorValueY);


  
  // SensorValue va de 0 a 10.23, on défini que entre 4.5 et 5.5 le moteur ne tourne pas
  // Il faut un espace suffisant pour etre sur que le moteur se soit éteint avant de changer de sens

  
  if (sensorValueX>4.5 && sensorValueX<5.5)       //remise a zéro de la puissance en X
  {
    digitalWrite(xMotorA1,LOW);
    digitalWrite(xMotorA2,LOW);
    digitalWrite(xMotorB1,LOW);
    digitalWrite(xMotorB2,LOW);

  }
  if (sensorValueY>4.5 && sensorValueY<5.5)       //remise a zéro de la puissance en Y
  {
    digitalWrite(yMotorA1,LOW);
    digitalWrite(yMotorA2,LOW);
    digitalWrite(yMotorB1,LOW);
    digitalWrite(yMotorB2,LOW);
  }

  if (sensorValueX>6)
  {
    digitalWrite(xMotorB1,LOW);                 //On met les pins contrôlant l'autre sens de rotation au cas où nous 
    digitalWrite(xMotorB2,LOW);                 //passons trop vite d'un sens à l'autre que nous sautons l'intervalle 4.5-5.5
    digitalWrite(xMotorA1,HIGH);                //Alimentation de 2 pins pour avoir plus de courant
    digitalWrite(xMotorA2,HIGH);                // on fais varier x dans le sens A
  }
  else if (sensorValueX<4)
  {
    digitalWrite(xMotorA1,LOW);
    digitalWrite(xMotorA2,LOW);
    digitalWrite(xMotorB1,HIGH);               // on fait varier x dans le sens B
    digitalWrite(xMotorB2,HIGH);
  }

  if (sensorValueY>6)
  {
    digitalWrite(yMotorB1,LOW);
    digitalWrite(yMotorB2,LOW);
    digitalWrite(yMotorA1,HIGH);                  // on fait varier y dans le sens A
    digitalWrite(yMotorA2,HIGH);
  }
  else if (sensorValueY<4)
  {
    digitalWrite(yMotorA1,LOW);
    digitalWrite(yMotorA2,LOW);
    digitalWrite(yMotorB2,HIGH);               // on fait varier y dans le sens B
    digitalWrite(yMotorB1,HIGH);
  }

  delay(10);        // delay
}

Projet final

Difficultés

Le mot de la fin

Logo-enib.png