Arduino Code für Mitsubishi Roboter

From Hackteria Wiki
Revision as of 21:27, 16 February 2018 by Tbkaufma (talk | contribs) (Verwendete Arduino Codes)
Jump to: navigation, search

Verwendete Arduino Codes

Programm 1:

/* 
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:

#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