Arduino + Servo motor

 



Un servo tiene 3 cables:

Color                              Conexión

Marrón o negro              GND

Rojo                              5V

Amarillo / naranja              Pin digital (ej: 9)


Primer programa básico

Primero se usa la librería Servo.






Servo controlado con botón




Objetivo:
Usar una condición if para controlar el servo.

Reto:

Cuando se presione el botón → el servo gira a 90°

Cuando no se presione → vuelve a 0°

Materiales:

Arduino Uno

Servomotor

Botón

Protoboard

Pines:

Servo → pin 9

Botón → pin 2

Programación:




Programación dos servos y dos botones

#include <Servo.h>

// Crear objetos servo
Servo servo1;
Servo servo2;

// Botones
const int boton1 = 2;
const int boton2 = 3;

void setup() {

  servo1.attach(9);
  servo2.attach(10);

  pinMode(boton1, INPUT_PULLUP);
  pinMode(boton2, INPUT_PULLUP);
}

void loop() {

  // Control Servo 1
  if (digitalRead(boton1) == LOW) {
    servo1.write(90);
  } else {
    servo1.write(0);
  }

  // Control Servo 2
  if (digitalRead(boton2) == LOW) {
    servo2.write(90);
  } else {
    servo2.write(0);
  }

}



JUEGO CON SERVO 

ESTE CODIGO ES PARA COPIAR Y PEGAR EN ARDUINO IDE Y PODER DIALOGAR LO QUE LOS ESTUDIANTES INTERPRETAN









JUEGO CON SERVO 2

ESTE CODIGO ES PARA COPIAR Y PEGAR EN ARDUINO IDE Y PODER DIALOGAR LO QUE LOS ESTUDIANTES INTERPRETAN

#include <Servo.h>

Servo miServo;

const int boton = 2;

int angulo = 0;
int direccion = 5;
int velocidad = 40;

bool presiono = false;

void setup() {
  miServo.attach(9);
  pinMode(boton, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {

  presiono = false;

  // Movimiento continuo hasta que presione
  while (!presiono) {

    miServo.write(angulo);
    angulo += direccion;

    if (angulo >= 180 || angulo <= 0) {
      direccion = -direccion;
    }

    delay(velocidad);

    // Detectar botón
    if (digitalRead(boton) == LOW) {
      presiono = true;
    }
  }

  // =========================
  // VERIFICAR SI GANÓ O PERDIÓ
  // =========================

  if (angulo >= 80 && angulo <= 100) {

    Serial.println("SIGUES VIVO 😎");

    // Aumenta dificultad
    velocidad -= 5;

    if (velocidad < 10) {
      velocidad = 10;
    }

  } else {

    Serial.println("💥 BOOM! PERDISTE");

    perder();
    reiniciar();
  }

  delay(1500);
}

// =========================

void perder() {
  for (int i = 0; i < 3; i++) {
    miServo.write(0);
    delay(200);
    miServo.write(90);
    delay(200);
  }
}

void reiniciar() {
  angulo = 0;
  direccion = 5;
  velocidad = 40;
}

Comentarios

Entradas populares de este blog

RobóticaIJR

Rduino+Resistencias+Leds+Boton