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
Publicar un comentario