Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Brazo de robot Arduino DIY con control de teléfono inteligente

En este tutorial, aprenderemos cómo hacer un brazo robótico Arduino que se puede controlar y programar de forma inalámbrica utilizando una aplicación de Android personalizada. Te mostraré todo el proceso de construcción, desde el diseño y la impresión en 3D de las piezas del robot, la conexión de los componentes electrónicos y la programación del Arduino, hasta el desarrollo de nuestra propia aplicación de Android para controlar el brazo robótico.

Puede ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

Usando los controles deslizantes en la aplicación, podemos controlar manualmente el movimiento de cada servo o eje del brazo del robot. También usando el botón "Guardar" podemos grabar cada posición o paso y luego el brazo del robot puede ejecutar automáticamente y repetir estos pasos. Con el mismo botón podemos pausar el funcionamiento automático así como resetear o borrar todos los pasos para poder grabar nuevos.

Arduino Robot Arm 3D Model

Para empezar, diseñé el brazo robótico utilizando el software de modelado 3D Solidworks. El brazo tiene 5 grados de libertad.

Para los primeros 3 ejes, la cintura, el hombro y el codo, usé los servos MG996R, y para los otros 2 ejes, el giro de la muñeca y el paso de la muñeca, así como la pinza, usé los micro servos SG90 más pequeños.

Puede buscar y descargar este modelo 3D, así como explorarlo en su navegador en Thangs:

Descargue el modelo 3D de ensamblaje de Thangs.

Gracias Thangs por apoyar este tutorial.

Archivos STL para impresión 3D:

Arduino Robot Arm Archivos STL

1 archivo(s) 0.00 KB Descargar

Impresión 3D del brazo robótico

Con mi nueva impresora 3D, Creality CR-10, imprimí en 3D todas las piezas del brazo robótico Arduino.

Aquí me gustaría agradecer a Banggood.com por proporcionarme esta increíble impresora 3D. La calidad de impresión de la Creality CR-10 es increíble por su precio y lo que también es genial es que casi el 90 % viene preensamblada.

Para completar el montaje solo tenemos que conectar los marcos de las partes superior e inferior usando unos pernos y soportes, y luego conectar los componentes electrónicos con la caja de control usando los cables provistos.

Antes de probarlo, se recomienda comprobar si las ruedas de los rodillos están lo suficientemente apretadas, y si no lo están, simplemente puede usar las tuercas excéntricas para apretarlas. Y eso es todo, después de nivelar su cama de impresión 3D, está listo para transformar sus creaciones 3D en realidad.

Tuve todas las piezas para el Arduino Robot Arm listas en solo unas horas.

Leer más:Los 15 mejores accesorios y herramientas para impresoras 3D imprescindibles

Ensamblaje del brazo robótico

Ok, en este punto estamos listos para ensamblar el brazo robótico. Empecé con la base sobre la que fijé el primer servomotor utilizando los tornillos incluidos en su paquete. Luego, en el eje de salida del servo, aseguré una bocina redonda con un perno.

Y encima coloqué la parte superior y la fijé con dos tornillos.

Aquí, de nuevo, primero va el servo, luego la bocina redonda a la siguiente parte, y luego se aseguran entre sí usando el perno en el eje de salida.

Podemos notar aquí que en el eje del hombro es buena idea incluir algún tipo de resorte o, en mi caso, usé una banda elástica para ayudar al servo porque este servo también lleva todo el peso del resto del brazo. como carga útil.

De manera similar continué ensamblando el resto del brazo robótico. En cuanto al mecanismo de agarre, utilicé unos tornillos y tuercas de 4 milímetros para montarlo.

Finalmente, coloqué el mecanismo de agarre en el último servo y se completó el brazo robótico Arduino.

Diagrama del circuito del brazo del robot Arduino

La siguiente etapa es conectar la electrónica. El diagrama de circuito de este proyecto es bastante simple. Solo necesitamos una placa Arduino y un módulo Bluetooth HC-05 para la comunicación con el smartphone. Los pines de control de los seis servomotores están conectados a seis pines digitales de la placa Arduino.

Para alimentar los servos necesitamos 5V, pero esto debe provenir de una fuente de alimentación externa porque el Arduino no puede manejar la cantidad de corriente que todos ellos pueden consumir. La fuente de alimentación debe poder manejar al menos 2 A de corriente. Entonces, una vez que hayamos conectado todo, podemos pasar a programar el Arduino y hacer la aplicación de Android.

Puede obtener los componentes necesarios para este ejemplo en los siguientes enlaces:

  • Servomotor MG996R………………………….….
  • Microservomotor SG90 ……..…….….…….
  • Módulo Bluetooth HC-05 ………………….… 
  • Placa Arduino …………………………………….
  • Fuente de alimentación de CC de 5 V y 2 A ………………….….. 

Arduino Robot Arm Code

Como el código es un poco más largo, para una mejor comprensión, publicaré el código fuente del programa en secciones con descripción para cada sección. Y al final de este artículo publicaré el código fuente completo.

Entonces, primero debemos incluir la biblioteca SoftwareSerial para la comunicación en serie del módulo Bluetooth, así como la biblioteca servo. Ambas bibliotecas se incluyen con el IDE de Arduino para que no tenga que instalarlas externamente. Luego necesitamos definir los seis servos, el módulo Bluetooth HC-05 y algunas variables para almacenar la posición actual y anterior de los servos, así como matrices para almacenar las posiciones o los pasos para el modo automático.

#include <SoftwareSerial.h>
#include <Servo.h>

Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;

SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)

int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position
int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps
int speedDelay = 20;
int index = 0;
String dataIn = "";Code language: Arduino (arduino)

En la sección de configuración, debemos inicializar los servos y el módulo Bluetooth y mover el brazo del robot a su posición inicial. Hacemos eso usando la función write() que simplemente mueve el servo a cualquier posición de 0 a 180 grados.

void setup() {
  servo01.attach(5);
  servo02.attach(6);
  servo03.attach(7);
  servo04.attach(8);
  servo05.attach(9);
  servo06.attach(10);
  Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
  Bluetooth.setTimeout(1);
  delay(20);
  // Robot arm initial position
  servo1PPos = 90;
  servo01.write(servo1PPos);
  servo2PPos = 150;
  servo02.write(servo2PPos);
  servo3PPos = 35;
  servo03.write(servo3PPos);
  servo4PPos = 140;
  servo04.write(servo4PPos);
  servo5PPos = 85;
  servo05.write(servo5PPos);
  servo6PPos = 80;
  servo06.write(servo6PPos);
}Code language: Arduino (arduino)

A continuación, en la sección de bucle, utilizando la función Bluetooth.available(), comprobamos constantemente si hay datos entrantes desde el teléfono inteligente. Si es verdadero, usando la función readString() leemos los datos como una cadena y los almacenamos en la variable dataIn. Dependiendo de los datos recibidos, le diremos al brazo robótico qué hacer.

// Check for incoming data
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.readString();  // Read the data as stringCode language: Arduino (arduino)

Controlar la aplicación de Android

Echemos un vistazo a la aplicación de Android ahora y veamos qué tipo de datos está enviando realmente al Arduino.

Creé la aplicación usando la aplicación en línea MIT App Inventor y así es como funciona. En la parte superior tenemos dos botones para conectar el smartphone al módulo Bluetooth HC-05. Luego, en el lado izquierdo tenemos una imagen del brazo del robot, y en el lado derecho tenemos los seis controles deslizantes para controlar los servos y un control deslizante para el control de velocidad.

Cada control deslizante tiene un valor inicial, mínimo y máximo diferente que se adapta a las articulaciones del brazo del robot. En la parte inferior de la aplicación, tenemos tres botones, GUARDAR, EJECUTAR y REINICIAR a través de los cuales podemos programar el brazo robótico para que se ejecute automáticamente. También hay una etiqueta debajo que muestra el número de pasos que hemos guardado. Sin embargo, para obtener más detalles sobre cómo crear aplicaciones como esta con MIT App Inventor, puede consultar mi otro tutorial detallado.

Ok, ahora veamos el programa o los bloques detrás de la aplicación. Primero, en el lado izquierdo tenemos los bloques para conectar el teléfono inteligente al módulo Bluetooth.

Luego tenemos los bloques deslizantes para el control de posición del servo y los bloques de botones para programar el brazo robótico. Entonces, si cambiamos la posición del control deslizante, usando la función Bluetooth .SendText, enviamos un texto al Arduino. Este texto consta de un prefijo que indica qué control deslizante se ha cambiado, así como el valor actual del control deslizante.

Aquí hay un archivo de descarga del proyecto MIT App Inventor anterior, así como la aplicación de Android lista para instalar en su teléfono inteligente:

Arduino Robot Arm Control MIT App Inventor Archivo de proyecto

1 archivo(s) 24.85 KB Descargar

Aplicación para Android Arduino Robot Arm Control

1 archivo(s) 2.57 MB Descargar

Por lo tanto, en Arduino, usando la funciónstartsWith(), verificamos el prefijo de cada dato entrante y así sabemos qué hacer a continuación. Por ejemplo, si el prefijo es “s1” sabemos que necesitamos mover el servo número uno. Usando la función substring() obtenemos el texto restante, o ese es el valor de posición, lo convertimos en un número entero y usamos el valor para mover el servo a esa posición.

// If "Waist" slider has changed value - Move Servo 1 to position
    if (dataIn.startsWith("s1")) {
      String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120"
      servo1Pos = dataInS.toInt();  // Convert the string into integerCode language: Arduino (arduino)

Aquí podemos simplemente llamar a la función write() y el servo irá a esa posición, pero de esa manera el servo correría a su velocidad máxima, lo cual es demasiado para el brazo del robot. En cambio, necesitamos controlar la velocidad de los servos, así que usé algunos bucles FOR para mover gradualmente el servo desde la posición anterior a la actual implementando un tiempo de retraso entre cada iteración. Cambiando el tiempo de retardo puedes cambiar la velocidad del servo.

// We use for loops so we can control the speed of the servo
      // If previous position is bigger then current position
      if (servo1PPos > servo1Pos) {
        for ( int j = servo1PPos; j >= servo1Pos; j--) {   // Run servo down
          servo01.write(j);
          delay(20);    // defines the speed at which the servo rotates
        }
      }
      // If previous position is smaller then current position
      if (servo1PPos < servo1Pos) {
        for ( int j = servo1PPos; j <= servo1Pos; j++) {   // Run servo up
          servo01.write(j);
          delay(20);
        }
      }
      servo1PPos = servo1Pos;   // set current position as previous position
    }Code language: Arduino (arduino)

Se utiliza el mismo método para impulsar cada eje del brazo robótico.

Debajo de ellos está el botón GUARDAR. Si pulsamos el botón SAVE, la posición de cada servomotor se almacena en un array. Con cada pulsación, el índice aumenta para que la matriz se llene paso a paso.

// If button "SAVE" is pressed
    if (dataIn.startsWith("SAVE")) {
      servo01SP[index] = servo1PPos;  // save position into the array
      servo02SP[index] = servo2PPos;
      servo03SP[index] = servo3PPos;
      servo04SP[index] = servo4PPos;
      servo05SP[index] = servo5PPos;
      servo06SP[index] = servo6PPos;
      index++;                        // Increase the array index
    }Code language: Arduino (arduino)

Luego, si presionamos el botón EJECUTAR, llamamos a la función personalizada runservo() que ejecuta los pasos almacenados. Echemos un vistazo a esta función. Así que aquí ejecutamos los pasos almacenados una y otra vez hasta que presionamos el botón RESET. Usando el bucle FOR, recorremos todas las posiciones almacenadas en las matrices y, al mismo tiempo, verificamos si tenemos datos entrantes desde el teléfono inteligente. Este dato puede ser el botón RUN/PAUSE, que detiene el robot, y si se vuelve a pulsar continúa con los movimientos automáticos. Además, si cambiamos la posición del control deslizante de velocidad, usaremos ese valor para cambiar el tiempo de retraso entre cada iteración en los bucles FOR a continuación, que controlan la velocidad de los servomotores.

// Automatic mode custom function - run the saved steps
void runservo() {
  while (dataIn != "RESET") {   // Run the steps over and over again until "RESET" button is pressed
    for (int i = 0; i <= index - 2; i++) {  // Run through all steps(index)
      if (Bluetooth.available() > 0) {      // Check for incomding data
        dataIn = Bluetooth.readString();
        if ( dataIn == "PAUSE") {           // If button "PAUSE" is pressed
          while (dataIn != "RUN") {         // Wait until "RUN" is pressed again
            if (Bluetooth.available() > 0) {
              dataIn = Bluetooth.readString();
              if ( dataIn == "RESET") {     
                break;
              }
            }
          }
        }
        // If SPEED slider is changed
        if (dataIn.startsWith("ss")) {
          String dataInS = dataIn.substring(2, dataIn.length());
          speedDelay = dataInS.toInt(); // Change servo speed (delay time)
        }
      }
      // Servo 1
      if (servo01SP[i] == servo01SP[i + 1]) {
      }
      if (servo01SP[i] > servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) {
          servo01.write(j);
          delay(speedDelay);
        }
      }
      if (servo01SP[i] < servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) {
          servo01.write(j);
          delay(speedDelay);
        }
      }Code language: Arduino (arduino)

De manera similar a como se explicó anteriormente con estas declaraciones IF y bucles FOR, movemos los servos a su siguiente posición. Finalmente, si presionamos el botón RESET, borraremos todos los datos de las matrices a cero y también restableceremos el índice a cero para que podamos reprogramar el brazo del robot con nuevos movimientos.

// If button "RESET" is pressed
    if ( dataIn == "RESET") {
      memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0
      memset(servo02SP, 0, sizeof(servo02SP));
      memset(servo03SP, 0, sizeof(servo03SP));
      memset(servo04SP, 0, sizeof(servo04SP));
      memset(servo05SP, 0, sizeof(servo05SP));
      memset(servo06SP, 0, sizeof(servo06SP));
      index = 0;  // Index to 0
    }Code language: Arduino (arduino)

Y eso es todo, ahora podemos disfrutar y divertirnos con el brazo robótico.

Aquí está el código completo del brazo robótico Arduino:

/*        
       DIY Arduino Robot Arm Smartphone Control  
        by Dejan, www.HowToMechatronics.com  
*/

#include <SoftwareSerial.h>
#include <Servo.h>

Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;

SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)

int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position
int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps
int speedDelay = 20;
int index = 0;
String dataIn = "";

void setup() {
  servo01.attach(5);
  servo02.attach(6);
  servo03.attach(7);
  servo04.attach(8);
  servo05.attach(9);
  servo06.attach(10);
  Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
  Bluetooth.setTimeout(1);
  delay(20);
  // Robot arm initial position
  servo1PPos = 90;
  servo01.write(servo1PPos);
  servo2PPos = 150;
  servo02.write(servo2PPos);
  servo3PPos = 35;
  servo03.write(servo3PPos);
  servo4PPos = 140;
  servo04.write(servo4PPos);
  servo5PPos = 85;
  servo05.write(servo5PPos);
  servo6PPos = 80;
  servo06.write(servo6PPos);
}

void loop() {
  // Check for incoming data
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.readString();  // Read the data as string
    
    // If "Waist" slider has changed value - Move Servo 1 to position
    if (dataIn.startsWith("s1")) {
      String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120"
      servo1Pos = dataInS.toInt();  // Convert the string into integer
      // We use for loops so we can control the speed of the servo
      // If previous position is bigger then current position
      if (servo1PPos > servo1Pos) {
        for ( int j = servo1PPos; j >= servo1Pos; j--) {   // Run servo down
          servo01.write(j);
          delay(20);    // defines the speed at which the servo rotates
        }
      }
      // If previous position is smaller then current position
      if (servo1PPos < servo1Pos) {
        for ( int j = servo1PPos; j <= servo1Pos; j++) {   // Run servo up
          servo01.write(j);
          delay(20);
        }
      }
      servo1PPos = servo1Pos;   // set current position as previous position
    }
    
    // Move Servo 2
    if (dataIn.startsWith("s2")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo2Pos = dataInS.toInt();

      if (servo2PPos > servo2Pos) {
        for ( int j = servo2PPos; j >= servo2Pos; j--) {
          servo02.write(j);
          delay(50);
        }
      }
      if (servo2PPos < servo2Pos) {
        for ( int j = servo2PPos; j <= servo2Pos; j++) {
          servo02.write(j);
          delay(50);
        }
      }
      servo2PPos = servo2Pos;
    }
    // Move Servo 3
    if (dataIn.startsWith("s3")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo3Pos = dataInS.toInt();
      if (servo3PPos > servo3Pos) {
        for ( int j = servo3PPos; j >= servo3Pos; j--) {
          servo03.write(j);
          delay(30);
        }
      }
      if (servo3PPos < servo3Pos) {
        for ( int j = servo3PPos; j <= servo3Pos; j++) {
          servo03.write(j);
          delay(30);
        }
      }
      servo3PPos = servo3Pos;
    }
    // Move Servo 4
    if (dataIn.startsWith("s4")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo4Pos = dataInS.toInt();
      if (servo4PPos > servo4Pos) {
        for ( int j = servo4PPos; j >= servo4Pos; j--) {
          servo04.write(j);
          delay(30);
        }
      }
      if (servo4PPos < servo4Pos) {
        for ( int j = servo4PPos; j <= servo4Pos; j++) {
          servo04.write(j);
          delay(30);
        }
      }
      servo4PPos = servo4Pos;
    }
    // Move Servo 5
    if (dataIn.startsWith("s5")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo5Pos = dataInS.toInt();
      if (servo5PPos > servo5Pos) {
        for ( int j = servo5PPos; j >= servo5Pos; j--) {
          servo05.write(j);
          delay(30);
        }
      }
      if (servo5PPos < servo5Pos) {
        for ( int j = servo5PPos; j <= servo5Pos; j++) {
          servo05.write(j);
          delay(30);
        }
      }
      servo5PPos = servo5Pos;
    }
    // Move Servo 6
    if (dataIn.startsWith("s6")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo6Pos = dataInS.toInt();
      if (servo6PPos > servo6Pos) {
        for ( int j = servo6PPos; j >= servo6Pos; j--) {
          servo06.write(j);
          delay(30);
        }
      }
      if (servo6PPos < servo6Pos) {
        for ( int j = servo6PPos; j <= servo6Pos; j++) {
          servo06.write(j);
          delay(30);
        }
      }
      servo6PPos = servo6Pos; 
    }
    // If button "SAVE" is pressed
    if (dataIn.startsWith("SAVE")) {
      servo01SP[index] = servo1PPos;  // save position into the array
      servo02SP[index] = servo2PPos;
      servo03SP[index] = servo3PPos;
      servo04SP[index] = servo4PPos;
      servo05SP[index] = servo5PPos;
      servo06SP[index] = servo6PPos;
      index++;                        // Increase the array index
    }
    // If button "RUN" is pressed
    if (dataIn.startsWith("RUN")) {
      runservo();  // Automatic mode - run the saved steps 
    }
    // If button "RESET" is pressed
    if ( dataIn == "RESET") {
      memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0
      memset(servo02SP, 0, sizeof(servo02SP));
      memset(servo03SP, 0, sizeof(servo03SP));
      memset(servo04SP, 0, sizeof(servo04SP));
      memset(servo05SP, 0, sizeof(servo05SP));
      memset(servo06SP, 0, sizeof(servo06SP));
      index = 0;  // Index to 0
    }
  }
}

// Automatic mode custom function - run the saved steps
void runservo() {
  while (dataIn != "RESET") {   // Run the steps over and over again until "RESET" button is pressed
    for (int i = 0; i <= index - 2; i++) {  // Run through all steps(index)
      if (Bluetooth.available() > 0) {      // Check for incomding data
        dataIn = Bluetooth.readString();
        if ( dataIn == "PAUSE") {           // If button "PAUSE" is pressed
          while (dataIn != "RUN") {         // Wait until "RUN" is pressed again
            if (Bluetooth.available() > 0) {
              dataIn = Bluetooth.readString();
              if ( dataIn == "RESET") {     
                break;
              }
            }
          }
        }
        // If speed slider is changed
        if (dataIn.startsWith("ss")) {
          String dataInS = dataIn.substring(2, dataIn.length());
          speedDelay = dataInS.toInt(); // Change servo speed (delay time)
        }
      }
      // Servo 1
      if (servo01SP[i] == servo01SP[i + 1]) {
      }
      if (servo01SP[i] > servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) {
          servo01.write(j);
          delay(speedDelay);
        }
      }
      if (servo01SP[i] < servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) {
          servo01.write(j);
          delay(speedDelay);
        }
      }

      // Servo 2
      if (servo02SP[i] == servo02SP[i + 1]) {
      }
      if (servo02SP[i] > servo02SP[i + 1]) {
        for ( int j = servo02SP[i]; j >= servo02SP[i + 1]; j--) {
          servo02.write(j);
          delay(speedDelay);
        }
      }
      if (servo02SP[i] < servo02SP[i + 1]) {
        for ( int j = servo02SP[i]; j <= servo02SP[i + 1]; j++) {
          servo02.write(j);
          delay(speedDelay);
        }
      }

      // Servo 3
      if (servo03SP[i] == servo03SP[i + 1]) {
      }
      if (servo03SP[i] > servo03SP[i + 1]) {
        for ( int j = servo03SP[i]; j >= servo03SP[i + 1]; j--) {
          servo03.write(j);
          delay(speedDelay);
        }
      }
      if (servo03SP[i] < servo03SP[i + 1]) {
        for ( int j = servo03SP[i]; j <= servo03SP[i + 1]; j++) {
          servo03.write(j);
          delay(speedDelay);
        }
      }

      // Servo 4
      if (servo04SP[i] == servo04SP[i + 1]) {
      }
      if (servo04SP[i] > servo04SP[i + 1]) {
        for ( int j = servo04SP[i]; j >= servo04SP[i + 1]; j--) {
          servo04.write(j);
          delay(speedDelay);
        }
      }
      if (servo04SP[i] < servo04SP[i + 1]) {
        for ( int j = servo04SP[i]; j <= servo04SP[i + 1]; j++) {
          servo04.write(j);
          delay(speedDelay);
        }
      }

      // Servo 5
      if (servo05SP[i] == servo05SP[i + 1]) {
      }
      if (servo05SP[i] > servo05SP[i + 1]) {
        for ( int j = servo05SP[i]; j >= servo05SP[i + 1]; j--) {
          servo05.write(j);
          delay(speedDelay);
        }
      }
      if (servo05SP[i] < servo05SP[i + 1]) {
        for ( int j = servo05SP[i]; j <= servo05SP[i + 1]; j++) {
          servo05.write(j);
          delay(speedDelay);
        }
      }

      // Servo 6
      if (servo06SP[i] == servo06SP[i + 1]) {
      }
      if (servo06SP[i] > servo06SP[i + 1]) {
        for ( int j = servo06SP[i]; j >= servo06SP[i + 1]; j--) {
          servo06.write(j);
          delay(speedDelay);
        }
      }
      if (servo06SP[i] < servo06SP[i + 1]) {
        for ( int j = servo06SP[i]; j <= servo06SP[i + 1]; j++) {
          servo06.write(j);
          delay(speedDelay);
        }
      }
    }
  }
}Code language: Arduino (arduino)

Espero que les haya gustado este video y hayan aprendido algo nuevo. No dude en hacer cualquier pregunta en la sección de comentarios a continuación y consulte mi Colección de proyectos de Arduino.


Proceso de manufactura

  1. Controlar el aceptador de monedas con Arduino
  2. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  3. Uso de IoT para controlar de forma remota un brazo robótico
  4. Obstáculos que evitan el robot con servomotor
  5. ¡Arduino con Bluetooth para controlar un LED!
  6. Brazo robótico controlado por Nunchuk (con Arduino)
  7. Arduino Nano:Controla 2 motores paso a paso con joystick
  8. MobBob:Robot Arduino DIY controlado por un teléfono inteligente Android
  9. Littlearm 2C:Construya un brazo robótico Arduino impreso en 3D
  10. ThimbleKrox - Control del mouse con los dedos
  11. Centro de torneado equipado con brazo robótico