Bras robotique

De Wiki LOGre
Aller à : navigation, rechercher


Projet réalisé par : Jody et Benj.

Le bras robotique est un bras MeArm que l'on trouve sur internet.


Les fichiers .dxf sont trouvable sur thingiverse : MeArm.

Matériel

  • 1x kit MeArm.
  • 4x Servomoteur 9g.
  • 10x écrou M3.
  • 6x vis M3x6.
  • 15x vis M3x8.
  • 3x vis M3x10.
  • 8x vis M3x12.
  • 4x vis M3x20.

Instruction de montage

Les instructions de montage se trouvent sur le site MeArm : ici.

Electronique

TBC

Code

Code is a V0.0Beta :-P, it needs to be cleaned, reviewed and improved.

#include <Servo.h>
 
const int servoP = 6;       // first servo pince
const int servoB2 = 9;       // second servo bras 2
const int servoT = 10;       // second servo tourelle
const int servoB1 = 11;       // second servo bras 1
const int joyX = 0;        // L/R Parallax Thumbstick
const int joyY = 1;        // U/D Parallax Thumbstick
const int joyZ = 2;
 
 int angleX = 90;
 int angleY = 90;
 int angleZ = 90;
 
int servoVal;           // variable to read the value from the analog pin
 
Servo myservoP;  // create servo object to control a servo
Servo myservoB2;  // create servo object to control a servo
Servo myservoT;  // create servo object to control a servo
Servo myservoB1;  // create servo object to control a servo
 
 
void setup() {
 
  // Servo  
  myservoP.attach(servoP);  // attaches the servo
  myservoB2.attach(servoB2);  // attaches the servo
  myservoT.attach(servoT);  // attaches the servo
  myservoB1.attach(servoB1);  // attaches the servo
 
 
  // Inizialize Serial
  Serial.begin(9600);
}
 
 
void loop(){
 
 
 
    // Read the X joystick value  (value between 0 and 1023)
    servoVal = analogRead(joyX);
    if (servoVal <= 256 ) {
           angleX-- ; 
 
    } else if (servoVal >= 768 ) {
           angleX++ ;      
    } else {
 
    }
 
    if (angleX > 180) {
      angleX = 180 ; 
    }
 
    if (angleX < 0) {
      angleX = 0 ; 
    }    
 
    myservoT.write(angleX);                         // sets the servo position according to the scaled value    
 
    // Read the Y joystick value  (value between 0 and 1023)
    servoVal = analogRead(joyY);           
    if (servoVal <= 256 ) {
           angleY-- ; 
 
    } else if (servoVal >= 768 ) {
           angleY++ ;      
    } else {
 
    }
 
    if (angleY > 180) {
      angleY = 180 ; 
    }
 
    if (angleY < 0) {
      angleY = 0 ; 
    }  
 
    myservoB1.write(angleY);                           // sets the servo position according to the scaled value
 
 
 // Read the Y joystick value  (value between 0 and 1023)
    servoVal = analogRead(joyZ);           
    if (servoVal <= 256 ) {
           angleZ-- ; 
 
    } else if (servoVal >= 768 ) {
           angleZ++ ;      
    } else {
 
    }
 
    if (angleZ > 180) {
      angleZ = 180 ; 
    }
 
    if (angleZ < 0) {
      angleZ = 0 ; 
    }  
 
    myservoB2.write(angleZ);                           // sets the servo position according to the scaled value
 
 
 
 
    // Read the Z aka pince button joystick value  (value between 0 and 1023)
    servoVal = digitalRead(joyZ);  
 
 
    if (servoVal == 1) {
           myservoP.write(115);    
    } else {
            myservoP.write(70);    
    }
                           // sets the servo position according to the scaled value
 
 
  Serial.println(servoVal);
 
    // Read
 
    delay(5);                                       // waits for the servo to get there
 
}
 
 
/**
* Display joystick values
*/
void outputJoystick(){
 
    Serial.print(analogRead(joyX));
    Serial.print ("---"); 
    Serial.print(analogRead(joyY));
    Serial.print ("---"); 
    Serial.print(analogRead(joyZ));
    Serial.println ("----------------");
}