servo visual

Dependencies:   MAX7219 mbed

Realizamos mediante comunicacion serial, ingresando el comando para los servomotores:

COMANDO MOVER MOTOR

POS 1POS 2POS 3POS 4POS 5
<#M,#°G>
  1. M -> indica el motor que se va a mover (00,01,02)
  2. °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 1POS 2POS 3POS 4POS 5
<#MDIR#PASOS>
  1. M -> indica el motor que se va a mover ( 03)
  2. 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)

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);
+        
+     
+        }
+    }
+ 
+ 
+