![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
servo visual
Realizamos mediante comunicacion serial, ingresando el comando para los servomotores:
COMANDO MOVER MOTOR
POS 1 | POS 2 | POS 3 | POS 4 | POS 5 |
< | #M | , | #°G | > |
- M -> indica el motor que se va a mover (00,01,02)
- °G -> indica los grados a mover del servomotor <,> -> inicio, separdor y fin de comando el inicio de comando no se almacena en el buffer
si el comando no tiene correctamente ingresado los simbolos ',' y '>', nos dara un error.
comando para el paso a paso:
COMANDO MOVER PASO A PASO
POS 1 | POS 2 | POS 3 | POS 4 | POS 5 |
< | #M | DIR | #PASOS | > |
- M -> indica el motor que se va a mover ( 03)
- PASOS -> indica los pasos a mover del motor paso a paso DIR -> indica la direccion en la que girara el motor (00-derecha, 01- izquierda) < > ->inicio, separdor y fin de comando
el inicio de comando no se almacena en el buffer.
En la visualizacion de la matriz se observara el numero del motor que se esta moviendo y su direccion indicada con una flecha
<- hacia la izquierda cuando el angulo de los servos sea mayor que 90, y el sentido del paso a paso sea este. ^ hacia arriba cuando el angulo de los servos sea 90 -> hacia la derecha cuando el angulo de los servos sea menor que 90, y el sentido del paso a paso sea este.
1- servomotor uno (00) 2-servomotor dos (01) 3-servomotor tres (02) 4- paso a paso (03)
Diff: main.cpp
- Revision:
- 0:65caec68ab34
- Child:
- 1:908a41a33553
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Apr 24 22:40:04 2017 +0000 @@ -0,0 +1,79 @@ +#include "mbed.h" +#include "max7219.h" //libreria + + + +unsigned char arrowup[]= {0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55}; //secuencia 1 +unsigned char arrowleft[]= {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa}; //secuencia 2 +unsigned char arrowright[]= {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; //secuencia 3 +unsigned char motor1[]= {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; //secuencia 4 +unsigned char motor2[]= {0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55}; //secuencia 5 +unsigned char motor3[]= {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa}; //secuencia 6 +unsigned char motor4[]= {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; //secuencia 7 + +void Print_pantalla_tabla(unsigned char *pValor); //variable global +void print_punto();//variable global + + + + + +Max7219 pantalla(PB_15, PB_14, PB_13, PB_12); //pines + + int main() +{ + max7219_configuration_t cfg = { + .device_number = 1, + .decode_mode = 0, //configuracion del max7219 + .intensity = Max7219::MAX7219_INTENSITY_5, + .scan_limit = Max7219::MAX7219_SCAN_8 + }; + + pantalla.init_device(cfg); + pantalla.enable_device(1); + pantalla.set_display_test(); //testeo de la matriz + wait(1); + pantalla.clear_display_test(); + + while(1){ + Print_pantalla_tabla(led1); + wait(1); + Print_pantalla_tabla(led2); + wait(1); //ciclo de visualizaciòn + Print_pantalla_tabla(led3); + wait(1); + print_punto(); + } + +} + + +void Print_pantalla_tabla(unsigned char *pValor) +{ +int i; //funcion de puntero, impresión de pantalla + for (i =0;i<8;i++) + pantalla.write_digit(1,i+1,pValor[i]); + +} + + +void print_punto() +{ + unsigned char personal[8]= {0x0,0x0,0,0,0,0,0,0}; + unsigned char filas[8]= {1,3,7,0x0f,0x1f,0x3f,0x7f,0xff}; + int i,j; + + for (i=0;i<8;i++) // secuencia de puntos + personal[i]= 0; + for (j=0;j<8;j++) + for (i=0;i<8;i++){ + personal[i]= filas[j]; + Print_pantalla_tabla(personal); + wait(0.2); + + + } + } + + +