Difference between revisions of "Arduino Code für Mitsubishi Roboter"

From Hackteria Wiki
Jump to: navigation, search
(Verwendete Arduino Codes)
(Verwendete Arduino Codes)
 
(8 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
Links Arduinoprogramme:
 
Links Arduinoprogramme:
  
Link 1:
+
Link 1: https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/install-software
 +
Von hier aus kann die Library heruntergeladen werden, woraus das Beispielprogramm "DCMotorTest" verwendet wurde.
  
Link 2:
+
Link 2: https://backyardbrains.com/experiments/MuscleSpikerShield_StepperMotor
 +
Von hier wurde das Programm MotorStepStep_SpikerShield.ino heruntergeladen.
  
Nachdem wesentliche Passagen des Codes etwas klarer wurden, wurde er so abgeändert das der Roboter die gewünschten Bewegungen ausführt. Wie gesagt hat unser Team kaum Programmier-Skills. Deshalb enthält der abgeänderte Code zum Teil noch Passagen die die wahrscheinlich nicht gebraucht werden. Da diese aber keiner bestimmten Funktion zugeordnet werden konnten, wurden sie im Programm belassen.  
+
 
 +
Nachdem wesentliche Passagen des Codes etwas klarer wurden, wurde er so abgeändert das der Roboter die gewünschten Bewegungen ausführt. Wie gesagt hat unser Team kaum Programmier-Skills. Deshalb enthält der abgeänderte Code zum Teil noch Passagen, die wahrscheinlich nicht gebraucht werden. Da nicht herausgefunden werden konnte was derern Funktion ist, wurden sie im Programm belassen.  
  
  
 
=== Programm 1: ===
 
=== Programm 1: ===
 +
 +
Mit diesem Program wurde der Bewegungsablauf, der im Video "Mitsubishi Movemaster EX gesteuert von Arduino mit MotorShield" zu sehen ist,gesteuert. Alle Bewegungen wurden nur zeitgesteuert.
 
<pre>
 
<pre>
 
/*  
 
/*  
Line 128: Line 133:
  
 
=== Programm 2: ===
 
=== Programm 2: ===
 +
Dieses Programm dient dazu, die vom Muscle SpikerShield ausgelesenen Daten, in eine "Auf- und Zubewegung" des Greifers umzuwandeln.
 +
 
<pre>
 
<pre>
 
#include <Stepper.h> //Librería para el control del Motor.
 
#include <Stepper.h> //Librería para el control del Motor.

Latest revision as of 19:13, 2 March 2018

Verwendete Arduino Codes

Als Grundlage für die Arduinoprogramme zum steuern des Roboters dienten Beispielprogramme. Da im Team niemand professionell programmieren kann wurden in einem ersten Schritt folgende Programme unverändert auf das Arduino geladen und geschaut was passiert.

Links Arduinoprogramme:

Link 1: https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/install-software Von hier aus kann die Library heruntergeladen werden, woraus das Beispielprogramm "DCMotorTest" verwendet wurde.

Link 2: https://backyardbrains.com/experiments/MuscleSpikerShield_StepperMotor Von hier wurde das Programm MotorStepStep_SpikerShield.ino heruntergeladen.


Nachdem wesentliche Passagen des Codes etwas klarer wurden, wurde er so abgeändert das der Roboter die gewünschten Bewegungen ausführt. Wie gesagt hat unser Team kaum Programmier-Skills. Deshalb enthält der abgeänderte Code zum Teil noch Passagen, die wahrscheinlich nicht gebraucht werden. Da nicht herausgefunden werden konnte was derern Funktion ist, wurden sie im Programm belassen.


Programm 1:

Mit diesem Program wurde der Bewegungsablauf, der im Video "Mitsubishi Movemaster EX gesteuert von Arduino mit MotorShield" zu sehen ist,gesteuert. Alle Bewegungen wurden nur zeitgesteuert.

/* 
This is a test sketch for the Adafruit assembled Motor Shield for Arduino v2
It won't work with v1.x motor shields! Only for the v2's with built in PWM
control

For use with the Adafruit Motor Shield v2 
---->	http://www.adafruit.com/products/1438
*/

#include <Wire.h>
#include <Adafruit_MotorShield.h>

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); 

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor1 = AFMS.getMotor(1);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(2);
Adafruit_DCMotor *myMotor3 = AFMS.getMotor(3);
Adafruit_DCMotor *myMotor4 = AFMS.getMotor(4);
// You can also make another motor on port M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Adafruit Motorshield v2 - DC Motor test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
}

void loop() {
  delay(5000);

  myMotor2->run(BACKWARD);
  myMotor2->setSpeed(130);
  delay(300);
  myMotor2->run(RELEASE);

  myMotor4->run(FORWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor1->run(FORWARD);
  myMotor1->setSpeed(130);
  delay(1000);
  myMotor1->run(RELEASE);
                                                                                                      
  myMotor4->run(BACKWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor2->run(FORWARD);
  myMotor2->setSpeed(130);
  delay(300);
  myMotor2->run(RELEASE);

  delay(3000);

  myMotor2->run(BACKWARD);
  myMotor2->setSpeed(130);
  delay(1300);
  myMotor2->run(RELEASE);

  myMotor1->run(FORWARD);
  myMotor1->setSpeed(130);
  delay(650);
  myMotor1->run(RELEASE);

  delay(3000);

  myMotor1->run(BACKWARD);
  myMotor1->setSpeed(130);
  delay(640);
  myMotor1->run(RELEASE);

  myMotor2->run(FORWARD);
  myMotor2->setSpeed(130);
  delay(1000);
  myMotor2->run(RELEASE);

  delay(3000);

  myMotor2->run(BACKWARD);
  myMotor2->setSpeed(130);
  delay(300);
  myMotor2->run(RELEASE);

  myMotor4->run(FORWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor1->run(BACKWARD);
  myMotor1->setSpeed(130);
  delay(900);
  myMotor1->run(RELEASE);

  myMotor4->run(BACKWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor2->run(FORWARD);
  myMotor2->setSpeed(130);
  delay(250);
  myMotor2->run(RELEASE);
   
}

Programm 2:

Dieses Programm dient dazu, die vom Muscle SpikerShield ausgelesenen Daten, in eine "Auf- und Zubewegung" des Greifers umzuwandeln.

#include <Stepper.h> //Librería para el control del Motor.
#define PASOS 48  //Número de pasos que tiene el motor.
Stepper motor(PASOS, 2, 3, 4, 5);  // Especifica el número de pasos del motor y los pines.




#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 

Adafruit_DCMotor *myMotor3 = AFMS.getMotor(3);



#define MAX 20   // Máxima lectura posible.¡JUEGA CON ESTE VALOR!.
#define PASOSMAX 10 // Este es el número máximo de pasos que avanzará (Puedes modificar este valor).
int lecturas[10];  
int lecturaFinal;
byte multiplicador = 1;
byte pasosAvanza = 0;
int  cuentaPasos = 0;

void setup(){
  Serial.begin(9600); //begin serial communications
  motor.setSpeed(200);  // Se especifica la velocidad del motor RPMs.

  AFMS.begin();

}//Fin de void setup.

void loop(){
  
  for(int i = 0; i < 10; i++){    //Toma diez lecturas en ~ 0,02 segundos.
    lecturas[i] = analogRead(A0) * multiplicador;
    delay(2);
  }
  for(int i = 0; i < 10; i++){   //Promedia las diez lecturas.
    lecturaFinal += lecturas[i];
  }
  lecturaFinal /= 10;
  
  

  lecturaFinal = constrain(lecturaFinal, 0, MAX); //Restringe "lecturaFinal" a un rango definido(0->MAX).
  
  pasosAvanza = map(lecturaFinal, 0, MAX, 0, PASOSMAX); //Convierte el valor de "lecturafinal" a un numero de pasos a avanzar.

  
  
      if(pasosAvanza == 0) //Si no hay lectura, el motor se detiene.
      
      {  
      motor.step(0);

      motor.step(1);
      myMotor3->run(BACKWARD);
      myMotor3->setSpeed(255);
      delay(10);
      myMotor3->run(RELEASE);

      delay(10);

      }
      
      else{
            for(cuentaPasos = 0 ; cuentaPasos <= pasosAvanza ; cuentaPasos++)  
      
      {
      Serial.println(cuentaPasos);

      motor.step(1);
      myMotor3->run(FORWARD);
      myMotor3->setSpeed(255);
      delay(10);
      myMotor3->run(RELEASE);

      delay(10);
      }
          }
    
    
    delay(10);
}//Fin de void loop.
    

Links

Zu Team Hacker
Zu Medizintechnik DIY