0% encontró este documento útil (0 votos)
17 vistas4 páginas

Subtitle

Prototipo de Arduino motor servo modificado

Cargado por

jose ferreira
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 TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas4 páginas

Subtitle

Prototipo de Arduino motor servo modificado

Cargado por

jose ferreira
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 TXT, PDF, TXT o lee en línea desde Scribd

[AUDIO EN BLANCO] Hola y continuamos con la segunda clase de

esta lección, Prototipo Electrónico. Vamos a hacer un ejemplo,


y el ejemplo que escogimos, guiado un poco por lo que hemos visto hasta el
momento en el curso, es un pequeño robot. este pequeño robot va a tener
un par de sensores infrarrojos, como los que vimos hace
algunas clases atrás. Sensores que detectan
una salida analógica. Entonces aquí vemos que van conectados
a la entrada analógica del arduino. Como ven, todos comparten la misma tierra,
todos comparten la misma alimentación
de 5 volts que es dada por el arduino. Utilizamos una batería externa
para el voltaje del arduino y em, tenemos otra batería que
alimenta los servos. Entonces tenemos servos que
comparten la tierra del arduino, tienen una alimentación propia
de 6 volts y las salidas de estos servos van conectados
a entradas digitales del arduino. Si estos servos no tuvieran la
misma tierra que el arduino, el arduino no los podría controlar tiene
que tener la misma referencia de voltaje. Luego tenemos un buzzer que es una
especie de parlante que va a emitir
sonidos en función de algún comando. Tenemos un botón que va a permitirnos
controlar de alguna forma el robot y tenemos el módulo bluetooth,
que nos va a permitir ingresarle comandos arbitrarios al
robot a través de un teléfono celular. En esta lámina vemos el diagrama
de conexiones del robot. Esto es puramente electrónico,
no hay nada mecánico todavía. Tenemos el arduino al centro. El arduino va conectado
a dos servos. Ya vemos que el cable amarillo del
servo es el que va al arduino. Los otros cables del servo
simplemente sirven de alimentación. Tenemos un buzzer conectado
directamente desde el arduino. Tenemos un módulo de comunicación
bluetooth conectado al arduino. Tenemos un par de sensores
de distancia analógicos que van conectados al arduino
y tenemos las baterías. Y con esto ya tenemos todo el hardware
necesario para implementar nuestro robot. Vamos a hacer un programa para este
robot,
que establezca ciertas funcionalidades. Que incluyan la lectura del bluetooth,
la lectura de un sensor infrarrojo, y la emisión de sonidos de un buzzer y además,
que permita comandar
los movimientos de los servos. Y los servos van a ir a las ruedas. O sea, yo aquí
voy a conectar ruedas. la idea es que estos servos estén
modificados de manera de conectarle ruedas y hacer que el robot se mueva con
ruedas. Y vamos a programar algunas funciones,
que van a ser llamadas desde el código principal, va a haber
esta función para detectar la distancia y esta función que va
a ser para el movimiento. Vamos a programar con un código principal
usando bibliotecas que ya conocemos, y con estas funciones que van
a estar alimentando este código. En la pantalla vemos el código del robot es un
código que toma varias partes
de programas que ya hemos hecho. Tenemos que incluir la
biblioteca para software serial que es la que estamos usando para
comunicarnos con el módulo bluetooth. Y tenemos la biblioteca servo que es la
que va a comandar las ruedas del robot. Luego tenemos los pines asociados
a diferentes piezas del hardware. Por ejemplo,
el buzzer va a estar en el pin 8. El botón va a estar en el pin 7. Un LED que nos
indica una
función va a estar en el pin 13. Tenemos el sensor izquierdo
que va a estar en el pin analógico 0,
sensor derecho en el pin analógico 1, luego el servo izquierdo en el pin digital
de salida 9 y el servo derecho en el 6. Luego tenemos variables. Esta variable de
aquí nos indica la velocidad y la dirección en la cual
vamos a estar moviendo la rueda izquierda. Decimos ángulo izquierdo 90. Eso
significa que la rueda
izquierda está quieta porque a 90 grados las ruedas están quietas. Y la derecha va
a estar en 90 grados,
quieta también. Parte quieta. Y luego tenemos la variable estado,
que es la variable que nos va a indicar para donde se va
a estar moviendo el robot. Si la variable estado es 0
significa que el robot está quieto. Si es 1,
significa que el robot va a avanzar. Y así, con diferentes comandos. Entonces, el
estado va a indicar
qué va a hacer el robot. Tenemos boolean apagar que controla el encendido y
apagado del robot Tenemos este otro boolean que es para modo automático,
que nos permite controlar el robot, ya sea por el teléfono o permitir que el robot
se mueva automáticamente,
esquivando obstáculos por sí mismo. Y tenemos este caracter comando, que es el
comando que le estamos
enviando desde el teléfono. Es un puro caracter que va
a indicar avanzar, frenar, retroceder, doblar, etcétera. Y tenemos este, este esta
otra variable que indica si
es que estamos leyendo o no el botón. Luego tenemos las variables para
la medición del sensor izquierdo, del sensor derecho y tenemos
las variables para el cálculo de la distancia izquierda y la
distancia medida por el sensor derecho. Esto es ya, lo mismo que vimos cuando
medíamos, por ejemplo distancia, usando el sensor. Es exactamente lo mismo lo único
es que
aquí estamos integrando todo en un mismo programa. Luego tenemos un par de
tolerancias
que son las que podemos programar para establecer el mejor
funcionamiento del robot. Ya hablaremos de eso. Intervalos. También hablamos de eso
en el pasado. Y finalmente, creamos dos objetos
tipo servos para manejar las ruedas. Tenemos mi servo izquierdo
y mi servo derecho. Cada uno de estos son objetos sobre
los cuales podemos escribir el ángulo, y ese ángulo va a darnos
la velocidad de movimiento. Luego creamos un puerto serial. Esto ya lo hicimos
antes cuando
nos comunicamos por bluetooth. Puerto serial. Entonces tenemos un objeto BT1 que
nos
comunica con el puerto serial de software. Luego vamos a setup. La rutina de setup
nos
liga o nos vincula el servo izquierdo al pin definido
arriba como servo izquierdo. Lo mismo con el servo derecho. Al pin definido como
servo derecho. Hacer exactamente lo mismo con las
diferentes entradas y salidas y comienza con las transmisiones o la comunicación
serial con el módulo bluetooth. [SONIDO] Antes de hablar de la función loop,
vamos a ver un par de funciones extra que escribimos de manera de implementarlas
después dentro del mismo loop. Estas están al final. Entonces está la función dist_
sensor_ buzzer que lo que hace es leer los dos sensores, leer la salida de los
dos sensores, y luego emitir pitidos que tienen que ver con la distancia a la
que se encuentra el robot de un objeto. El esa distancia la elige de
acuerdo a la suma de la distancia izquierda y distancia derecha. Esto es
exactamente lo que ya hicimos
cuando hablamos del sensor de distancia, con la única diferencia que aquí estamos
considerando la suma de la distancia izquierda y distancia derecha
que se calculan a partir de las señales medidas por el sensor
izquierdo y el sensor derecho. La siguiente función que vamos
a ver es la función movimiento, cuyo objetivo es mover las ruedas
del robot en función del estado. Entonces lo que hace la función movimiento
es actuar sobre el servo izquierdo y actuar sobre el servo derecho con el
dato ángulo izquierdo y ángulo derecho. ¿Y cómo define el ángulo
izquierdo y ángulo derecho? Según el estado. Si el estado es 0, lo cual
significa que el robot está quieto, ambos ángulos están en 90 grados,
ambas ruedas están quietas. Si el estado es 1, significa que el
robot va a avanzar ¿A qué velocidad? Yo tengo que definir la velocidad. Entonces,
lo que definimos aquí fué
que avance a una velocidad de 30. La rueda izquierda se mueve a 30 con ángulo de
menos 30
respecto de el reposo, 90. Y la rueda derecha se mueve a un ángulo
de más 30, respecto del reposo, 90. ¿Por qué se mueven en sentidos diferentes?
Porque están apuntando
en sentidos diferentes. La rueda izquierda apunta
hacia la izquierda, la rueda derecha apunta hacia la derecha. Si la rueda izquierda
se
mueve en una dirección, la derecha tiene que moverse en la otra
dirección para que el robot avance. Para que el robot retroceda,
definimos una velocidad de menos 20. Por lo tanto la rueda izquierda avanza
20 respecto de su estado en reposo, y la rueda derecha se mueve 20 hacia
atrás respecto de su estado en reposo. Esta es para girar a la izquierda. Va a
girar a velocidad 10. Esta es para girar a la derecha. Va a girar a velocidad 10.
10 es la distancia entre 100 y 90. 10 es la distancia entre 80 y 90. Luego, pasamos
a la función loop. Que llama a esas dos funciones
que acabamos de definir. La función loop se divide en tres partes,
la primera parte es ver, verificar si es que hay
algún comando en el buffer. Un comando que llegue desde el bluetooth. Cuando hay
algún comando en el bluetooth,
esta función es down true de resultado. En ese caso guardamos ese comando
en nuestra variable de comandos y luego desechamos lo que haya
en el buffer de manera de recibir nuevos comandos en el futuro. Luego actuamos en
función de ese comando. Leemos si es que el botón
está encendido o no. Y si es que el botón está encendido
y recibimos el comando off apagamos el robot o lo encendemos. Luego está este otro,
este otro else, que nos indica si es que el robot va
a estar en modo manual o modo automático. Si recibimos el comando m, cambiamos
entre el modo automático al modo manual, o del modo manual al modo automático. En
este caso, al igual que en el
caso anterior, partimos en estado 0, lo cual significa robot quieto. Comando 0, lo
cual significa
que si está recibiendo algo, desde el bluetooth,
asuma que no ha recibido nada. Comando 0. Lo último que he recibido es
nada por lo tanto comienza sin realizar ninguna acción. Y luego de eso, realiza el
movimiento, llama a la función movimiento en función
del estado en el que se encuentra. Bueno, ¿y cómo se define el argumento
estado que entra a la función movimiento? Según una serie de condiciones. De
partida la primera condición
es de que está o no apagado. Si es que estaba apagado, no hace nada. Si es que no
estaba apagado va
a medir la distancia y va a sonar, independientemente de en
que modo de operación esté eso es lo que va a hacer con
esta función que está aquí. Si es que está en modo automático, es
decir, que no esté siendo controlado por el bluetooth, lo que va a hacer es
seguir una serie de condiciones. Por ejemplo, si el estado es 1, lo cual
significa que está andando hacia adelante, y ve un obstáculo a una cierta
distancia,
va a ejecutar una serie de comandos para esquivar el obstáculo o para retroceder
si es que está muy cerca del obstáculo. En cambio, si es que se encuentra en
modo manual, controlado por bluetooth, lo que va a hacer es avanzar,
retroceder, etcétera, exactamente o directamente según el estado que yo quiero
enviado por el comando de bluetooth. Por ejemplo, si el comando de
bluetooth es W, eso significa avanzar. Por lo tanto cambia el estado a 1. Si el
comando de bluetooth significa es A,
significa virar izquierda, cambia a estado 3 y así sucesivamente. Y con eso se
cierra el loop. Y eso concluye la clase del robot. Lo que viene a continuación
va a ser muy interesante.

También podría gustarte