Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 1:526bdd5faa37
- Parent:
- 0:89b318e49395
- Child:
- 2:ff10ffd246e2
--- a/main.cpp Sat Mar 17 00:57:56 2018 +0000
+++ b/main.cpp Tue Sep 04 02:15:49 2018 +0000
@@ -4,18 +4,6 @@
-/*
-El sitema tiene tres estados:
-1. Standby: estado que indica que esta en espera de un telecomando (Ejecutar 0 guardar)
-2. Drawing: estado en donde el piccolo eejecuta las ordenes giardadas en el array
- de memora hasta encontrar el comando CM_STOP
-3. Saving: estado donde el sistema recibe lso datos y lso almacena en memoria acorde
- a los comandos de 0xfd, oxfc, 0xfb,0cfa, se sake de este modo cuado se recibe
- el comando CM_STOP
-
-todo telecomando debe finalizar con el dato CM_END
-*/
-
Serial command(USBTX, USBRX);
@@ -24,17 +12,14 @@
int main() {
init_servo();
init_serial();
- draw();
- nodraw();
- home();
+
debug_m("inicio \n");
uint32_t read_cc;
while(1)
{
read_cc=read_command();
switch (read_cc) {
- case CM_DRAWING: drawing(); break;
- case CM_SAVING: saving(); break;
+ case 0x01: moving(); break;
default: debug_m("error de comando. \nSe espera 0xFEF0 o 0xFFF0 \n");break ;
}
}
@@ -44,88 +29,31 @@
uint32_t read_command()
{
- // retorna los byte recibidos concatenados en un entero, se reciben maximo 4 bytes,
- // recibe hasta que encuetra un fin de comando "CM_END".
- // Ejemplo: para el comando drawing se
- // espera un byte, por lo que al recibir 0xFF y 0xF0 la funcióm retorna el 0xff
- // siempre y cuando se reciba el fin de dato F0 de lo contrario retorna un cero
- // para el caso del comando vertex2d se espera recibir 3 bytes, 1 del comando
- // y dos bytes para x y y, se retorna la concatenación de los tres bytes siempre y
- // cuando el cuarto byte sea CM_END de lo contrario retorna un cero
+ // retorna los byte recibidos concatenados en un entero,
- uint32_t val=0;
- uint8_t cnt=0;
+
+
+ char intc=command.getc();
- char endc=command.getc();
-
- while(endc != CM_END && cnt <4) {
- if(endc!=CM_END)
- val=((val<<8) +endc);
- endc=command.getc();
- cnt++;
- }
- if(endc==CM_END)
- return val;
- return 0; //al retornar 0 indica que no se recibe el comando
+ while(intc != '<')
+ intc=command.getc();
+ return intc;
}
+
+
void init_serial()
{
command.baud(9600);
}
-void drawing(){
- // la funcion se ejecuta siemrpe y cuando exista datos validos para leer de
- // memoria
- debug_m("se esta ejecutando el dibujo... \n");
-
- uint8_t error=0;
- MEM_TYPE dato;
-
- tail_reset();
-
- while(error==0){
- error = mem_get(&dato);
- if (error==0) {
- switch (dato) {
- case CM_DRAW:
- debug_m("-> Baja Z\n");
- draw();
- break ;
- case CM_NODRAW:
- debug_m("-> Sube Z\n");
- nodraw();
- break ;
- default:
- int y = (uint8_t)(dato);
- int x = (uint8_t)(dato>>8);
- char ncomm = (uint8_t)(dato>>16);
-
- if (ncomm == CM_VERTEX2D) {
- debug_m("-> Mover piccolo x a %d y y a %d \n",x,x, y);
- vertex2d(x,y);
- }else
- debug_m("-> ERROR DE COMMANDO: %d %d %d \n " ,ncomm,x,y,y);
- break;
- }
- }
- }
+void moving(){
+ debug_m("se inicia el comado mover..\n");
- debug_m("fin del comando dibujar..\n");
-
-}
-
-
-void saving(){
- debug_m("se inicia el comado guardar..\n");
-
- MEM_TYPE dato=0;
- mem_free();
- while(dato !=CM_STOP){
- dato = read_command();
- if (dato !=CM_STOP)
- mem_put(dato);
- }
+ char nmotor=command.getc();
+ char grados=command.getc();
+ char endc=command.getc();
+ mover_ser(nmotor,grados);
debug_m("fin del comado guardar..\n");
}