
Brazo Robótico 2° A
- AGR
- Web , Programación
- 05 Jan, 2025
Índice
Explicación del Proyecto
Materiales necesarios
# | Componente | Imagen | Link |
---|---|---|---|
1 | Arduino NANO | ![]() | link |
1 | Shield Compatible con Arduino UNO | ![]() | link |
4 | Servomotor MG90S Servomotor 180° con Engranes Metálicos | ![]() | link |
3 | Servomotor MG996R DIGI HI-TORQUE Engranes de Metal 180° | ![]() | link |
1 | Fuente conmutada 5V 3A | ![]() | link |
6 | Potenciómetro 3 Pines con valor de 10kOhm | ![]() | link |
2 | Push Button KY-004 | ![]() | link |
Herramientas
- 1 Destornillador
- 1 Pinza
- 1 Tijera
- 1 Cautín
- 1 Soldadura
- 1 Cableado
Desarrollo
Sigue cuidadosamente las instrucciones para armar el brazo robótico
Electrónica
Realiza el siguiente diagrama de conexión para los servomotores
Conecta tambien los potenciometros a los pines A0 al A5 del arduino
Puedes encontrar el enlace de la simulación en Tinkercad
Programación
Código para movimiento de servo usando potenciometro
#include <Hummingbird.h>
Hummingbird hummingbird;
void setup() {
hummingbird.init();
}
void loop() {
// Leer el valor del sensor en el puerto 1 (0-1023)
int knob_sensor = hummingbird.readSensorValue(1);
// Mapear el valor del sensor al rango del servomotor (0-180)
int servo_position = map(knob_sensor, 0, 1023, 0, 180);
// Mover el servomotor a la posición calculada
hummingbird.setServo(1, servo_position);
// Pequeño retraso para suavizar el movimiento
delay(15);
}
Explicación del código
hummingbird.init()
inicializa el módulo Hummingbird.hummingbird.readSensorValue(1);
→ Lee el valor del sensor o potenciómetro en el puerto 1.map(knob_sensor, 0, 1023, 0, 180);
→ Convierte el valor del sensor de su rango (0-1023) al rango del servo (0-180).hummingbird.setServo(1, servo_position);
→ Mueve el servomotor a la posición calculada.delay(15);
→ Da tiempo al servomotor para moverse suavemente. Ahora el servomotor se moverá en función del sensor o potenciómetro en tiempo real. 🚀
Desafíos
Recursos
Videos
Video de ensamble de brazo robotico
Código
Codigo en Arduino para el control de los servomotores usando potenciometros y un boton para el gripper
#include <Servo.h>
Servo servos[7]; // Array para los 7 servomotores
const int potPins[6] = {A0, A1, A2, A3, A4, A5}; // Pines de los potenciómetros
const int buttonPin = 9; // Pin del botón para el gripper
int buttonState = 0; // Estado del botón
bool gripperClosed = false; // Estado del gripper (abierto o cerrado)
// Pines de los servos
const int servoPins[7] = {2, 3, 4, 5, 6, 7, 10};
void setup() {
for (int i = 0; i < 7; i++) {
servos[i].attach(servoPins[i],500,2500); // Conectar cada servo a su pin
servos[i].write(45); // Inicializar todos los servos en posición media
}
pinMode(buttonPin, INPUT_PULLUP); // Configurar el botón como entrada con resistencia pull-up
Serial.begin(9600);
}
void loop() {
// Control de los primeros 6 servos con potenciómetros
for (int i = 0; i < 6; i++) {
int potValue = analogRead(potPins[i]); // Leer el valor del potenciómetro
int angle = map(potValue, 0, 1023, 0, 180); // Convertir el valor a un ángulo
Serial.println(potValue);
servos[i].write(angle); // Mover el servo correspondiente
}
// Control del séptimo servo (gripper) con botón
buttonState = digitalRead(buttonPin); // Leer el estado del botón
if (buttonState == LOW) { // Si el botón está presionado
delay(50); // Pequeño retraso para evitar rebotes
if (digitalRead(buttonPin) == LOW) { // Confirmar que sigue presionado
gripperClosed = !gripperClosed; // Cambiar el estado del gripper
if (gripperClosed) {
servos[6].write(100); // Cerrar el gripper
} else {
servos[6].write(10); // Abrir el gripper
}
while (digitalRead(buttonPin) == LOW); // Esperar a que se suelte el botón
}
}
}
Enlaces
Enlaces a web Chareditor.
Enlaces a blog Instalacion de arduino.