0% encontró este documento útil (0 votos)
24 vistas6 páginas

Control de Robot: Caminar y Bailar

El documento es un código en Arduino que controla un robot con servomotores, un sensor ultrasónico y un buzzer. El robot puede caminar y bailar en función de la distancia medida por el sensor, y también puede cantar una melodía. Se definen pines para los servos, el sensor y el buzzer, y se implementan funciones para medir distancia y ejecutar acciones basadas en el estado del robot.

Cargado por

Alex
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas6 páginas

Control de Robot: Caminar y Bailar

El documento es un código en Arduino que controla un robot con servomotores, un sensor ultrasónico y un buzzer. El robot puede caminar y bailar en función de la distancia medida por el sensor, y también puede cantar una melodía. Se definen pines para los servos, el sensor y el buzzer, y se implementan funciones para medir distancia y ejecutar acciones basadas en el estado del robot.

Cargado por

Alex
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

#include <Servo.

h> // Biblioteca para controlar servomotores

// Definición de pines para servomotores

#define SERVO_PIERNA_DERECHA 3

#define SERVO_PIERNA_IZQUIERDA 4

#define SERVO_PIE_DERECHO 5

#define SERVO_PIE_IZQUIERDO 6

// Definición de pines para sensor ultrasónico

#define TRIG_PIN 8

#define ECHO_PIN 9

// Definición de pines para otros dispositivos

#define BUZZER_PIN 10

// Definición de umbral de distancia en cm

#define DISTANCIA_UMBRAL 20

// Creación de objetos de servomotores

Servo piernaDerecha;

Servo piernaIzquierda;

Servo pieDerecho;

Servo pieIzquierdo;

// Variables para medición de distancia

long duration;

int distance;

// Variables para el sistema de estado

enum Estado { CAMINANDO, BAILANDO };

Estado estadoActual = CAMINANDO;

void setup() {

[Link](9600); // Inicializar comunicación serie


// Inicializar servomotores

[Link](SERVO_PIERNA_DERECHA);

[Link](SERVO_PIERNA_IZQUIERDA);

[Link](SERVO_PIE_DERECHO);

[Link](SERVO_PIE_IZQUIERDO);

// Configuración de pines del sensor ultrasónico

pinMode(TRIG_PIN, OUTPUT);

pinMode(ECHO_PIN, INPUT);

// Configuración del buzzer

pinMode(BUZZER_PIN, OUTPUT);

[Link]("Sistema iniciado."); // Mensaje de inicio

void loop() {

// Medir distancia y tomar decisiones basadas en el estado

distance = medirDistancia();

[Link]("Distancia: ");

[Link](distance);

[Link](" cm");

// Cambiar el estado basado en la distancia

if (distance < DISTANCIA_UMBRAL) {

estadoActual = BAILANDO;

} else {

estadoActual = CAMINANDO;

// Ejecutar acciones basadas en el estado

switch (estadoActual) {

case CAMINANDO:

caminar();

break;
case BAILANDO:

bailar();

cantarNocheDePaz();

break;

delay(1000); // Pausa de un segundo

void caminar() {

// Movimiento básico de caminar alternando las piernas

[Link]("Robot está caminando.");

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

moverPiernaDerecha();

moverPiernaIzquierda();

void moverPiernaDerecha() {

[Link](180);

[Link](90);

delay(500);

[Link](0);

[Link](0);

void moverPiernaIzquierda() {

[Link](180);

[Link](90);

delay(500);

[Link](0);

[Link](0);

void bailar() {
// Movimiento de baile simple con sincronización

[Link]("Robot está bailando.");

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

[Link](90);

[Link](90);

[Link](90);

[Link](90);

delay(300);

[Link](0);

[Link](0);

[Link](180);

[Link](180);

delay(300);

void cantarNocheDePaz() {

// Notas y duraciones para "Noche de paz"

int notas[] = { 523, 523, 587, 587, 659, 659, 587, 0, 523, 523, 587, 587, 659, 659, 587, 0 };

int duraciones[] = { 500, 500, 500, 500, 500, 500, 1000, 500, 500, 500, 500, 500, 500, 1000,
500, 500 };

[Link]("Robot está cantando 'Noche de paz'.");

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

if (notas[i] > 0) {

tone(BUZZER_PIN, notas[i]);

delay(duraciones[i]);

noTone(BUZZER_PIN);

long medirDistancia() {
// Medir distancia utilizando el sensor ultrasónico

digitalWrite(TRIG_PIN, LOW);

delayMicroseconds(2);

digitalWrite(TRIG_PIN, HIGH);

delayMicroseconds(10);

digitalWrite(TRIG_PIN, LOW);

duration = pulseIn(ECHO_PIN, HIGH);

long distanciaCm = duration * 0.034 / 2;

return distanciaCm; // Retorna distancia en cm

Resumen de cada palabra clave y función

• Servo: Biblioteca para controlar servomotores.


• define: Define constantes que se pueden usar en el código.
• enum: Crea un tipo de dato personalizado con valores específicos (aquí
se usa para definir estados).
• [Link](): Inicia comunicación serial para enviar y recibir datos.
• attach(): Asocia un pin a un objeto Servo.
• digitalWrite(): Establece un pin como HIGH o LOW.
• delay(): Pausa la ejecución del programa por el tiempo especificado en
milisegundos.
• tone() y noTone(): Activa y desactiva el tono de sonido en un pin.
• switch: Controla el flujo del programa dependiendo del valor de una
variable.

Definiciones de Variables y Bibliotecas


• Servo.h: Biblioteca que permite controlar los servomotores,
permitiendo especificar posiciones angulares.
• pines de servos (SERVO_PIERNA_DERECHA, etc.): Definen los pines a
los que están conectados los servos.
• pines de sensor (TRIG_PIN, ECHO_PIN): Controlan el sensor ultrasónico
de distancia.
• BUZZER_PIN: Pin para el buzzer, usado para reproducir tonos de
canciones.
• duration: Tiempo de viaje de ida y vuelta del sonido en el sensor
ultrasónico.
• distance: Distancia calculada en centímetros.
• enum Estado: Enumera estados como CAMINANDO y BAILANDO.
• medirDistancia(): Calcula la distancia usando el sensor ultrasónico.

También podría gustarte