domingo, 5 de junio de 2022

Mini robot con servomotores

Durante este curso académico 2021-2022 hemos trabajado con varios grupos de 4º ESO pequeños proyectos, han investigado sobre el funcionamiento de algunos sensores y hemos aprendido el funcionamiento de los servomotores. 

Como proyecto final, han realizado un pequeño robot utilizando servomotores.



Los alumnos han puesto 2 servos para cada una de las piernas del robot, los han pegado con una pistola de silicona y los han programado para que se muevan de la siguiente manera:

#include <Servo.h>

Servo der_arriba;

Servo der_abajo;

Servo izq_arriba;

Servo izq_abajo;

void setup() {

  der_arriba.attach(5);

  der_abajo.attach(6);

  izq_arriba.attach(7);

  izq_abajo.attach(8);  

  posicion_inicial(); 

  delay(3000); 

}

int f=0;

void loop() {

  if (f==0) {

    saludar();

    caminar();

    bailar();

    f=1;

  }

}

  void posicion_inicial(){

  der_arriba.write(0); delay(100);

  der_abajo.write(0); delay(100);

  izq_arriba.write(90); delay(100);

  izq_abajo.write(90); delay(100);

}

void saludar(){

  for (int i=0;i<2;i++){

    der_abajo.write(50); delay(100);

    izq_abajo.write(40); delay(100);

    der_abajo.write(0); delay(100);

    izq_abajo.write(90); delay(100);

  }

}

void caminar(){

  int vel=50; //Velocidad a la que anda 

  for (int i=0;i<30;i++){

    der_arriba.write(90); delay(vel);

    der_abajo.write(50); delay(vel);

    der_arriba.write(0); delay(vel);

    der_abajo.write(0); delay(vel);

    izq_arriba.write(0); delay(vel);

    izq_abajo.write(40); delay(vel);

    izq_arriba.write(90); delay(vel);

    izq_abajo.write(90); delay(vel);

  }

}

void bailar(){

  for (int i=0;i<5;i++){

    der_abajo.write(50); delay(300);

    izq_abajo.write(40); delay(150);

    der_abajo.write(0); delay(300);

    izq_abajo.write(90); delay(150);

    der_arriba.write(90); delay(500);

    izq_arriba.write(0); delay(500);

    der_arriba.write(0); delay(500);

    izq_arriba.write(90); delay(500);

    der_arriba.write(90); delay(500);

    izq_arriba.write(0); delay(500);

    der_arriba.write(0); delay(500);

    izq_arriba.write(90); delay(500);

  }

}

Finalmente el resultado ha sido:


No hay comentarios: