test

Committer:
dapi08
Date:
Tue Sep 07 10:28:08 2021 +0000
Revision:
8:b4465148d206
Parent:
6:c21017e969af
SERVOS_V0_3 test de control

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dapi08 2:82fdfeec5799 1
dapi08 2:82fdfeec5799 2 #include "declaraciones.h"
dapi08 2:82fdfeec5799 3
dapi08 2:82fdfeec5799 4
dapi08 2:82fdfeec5799 5 extern Serial pc;
dapi08 2:82fdfeec5799 6 extern volatile byte estado;
dapi08 2:82fdfeec5799 7
dapi08 2:82fdfeec5799 8
dapi08 2:82fdfeec5799 9
dapi08 4:7564d0ffd595 10
dapi08 4:7564d0ffd595 11 //***************************************************************
dapi08 4:7564d0ffd595 12 // * DEVUELVE VALOR DENTRO DEL LIMITE
dapi08 4:7564d0ffd595 13 //***************************************************************
dapi08 4:7564d0ffd595 14 long constrain(long valor, long minimo, long maximo){
dapi08 4:7564d0ffd595 15
dapi08 4:7564d0ffd595 16 return (valor < minimo)? minimo : ((valor > maximo)? maximo : valor);
dapi08 4:7564d0ffd595 17 }
dapi08 4:7564d0ffd595 18
dapi08 4:7564d0ffd595 19
dapi08 4:7564d0ffd595 20 //***************************************************************
dapi08 4:7564d0ffd595 21 // * EXTRAPOLA VALOR EN UN RANGO
dapi08 4:7564d0ffd595 22 //***************************************************************
dapi08 4:7564d0ffd595 23 long map(long valor, long minimo_in, long maximo_in, long minimo_out, long maximo_out){
dapi08 4:7564d0ffd595 24
dapi08 4:7564d0ffd595 25 long val = (valor < minimo_in)? minimo_in : ((valor > maximo_in)? maximo_in : valor);
dapi08 4:7564d0ffd595 26
dapi08 4:7564d0ffd595 27 float dif_in = (float)maximo_in - (float)minimo_in;
dapi08 4:7564d0ffd595 28 float dif_out = (float)maximo_out - (float)minimo_out;
dapi08 4:7564d0ffd595 29 float conv = dif_out/dif_in;
dapi08 4:7564d0ffd595 30 val = (long)(((float)val * conv)+0.5) + minimo_out;
dapi08 4:7564d0ffd595 31 return val;
dapi08 4:7564d0ffd595 32 }
dapi08 4:7564d0ffd595 33
dapi08 4:7564d0ffd595 34
dapi08 4:7564d0ffd595 35
dapi08 2:82fdfeec5799 36 void PrintValorDecimal(char *txt, int32_t valor){
dapi08 2:82fdfeec5799 37 pc.printf("%s: %d\r\n", txt, valor);
dapi08 2:82fdfeec5799 38 }
dapi08 2:82fdfeec5799 39
dapi08 2:82fdfeec5799 40
dapi08 2:82fdfeec5799 41 void PrintValorFloat(char *txt, float valor){
dapi08 2:82fdfeec5799 42 pc.printf("%s: %f\r\n", txt, valor);
dapi08 2:82fdfeec5799 43 }
dapi08 2:82fdfeec5799 44
dapi08 2:82fdfeec5799 45
dapi08 2:82fdfeec5799 46
dapi08 2:82fdfeec5799 47 void PrintHex8(uint8_t *data, uint8_t length) // prints 8-bit data in hex with leading zeroes
dapi08 2:82fdfeec5799 48 {
dapi08 2:82fdfeec5799 49 for (int i=0; i<length; i++) {
dapi08 2:82fdfeec5799 50 pc.printf("0x%02x ", data[i]);
dapi08 2:82fdfeec5799 51 }
dapi08 2:82fdfeec5799 52 }
dapi08 2:82fdfeec5799 53
dapi08 2:82fdfeec5799 54
dapi08 2:82fdfeec5799 55
dapi08 2:82fdfeec5799 56
dapi08 2:82fdfeec5799 57 // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
dapi08 2:82fdfeec5799 58 // devuelve grados
dapi08 2:82fdfeec5799 59 void grados(float pos, int res[]){ // devuelve grados
dapi08 2:82fdfeec5799 60
dapi08 2:82fdfeec5799 61 res[0] = int(pos);
dapi08 2:82fdfeec5799 62 pos -= res[0];
dapi08 2:82fdfeec5799 63 pos *= 60;
dapi08 2:82fdfeec5799 64 res[1] = int(pos);
dapi08 2:82fdfeec5799 65 pos -= res[1];
dapi08 2:82fdfeec5799 66 pos *= 60;
dapi08 2:82fdfeec5799 67 res[2] = int(pos);
dapi08 2:82fdfeec5799 68 }
dapi08 2:82fdfeec5799 69
dapi08 2:82fdfeec5799 70
dapi08 2:82fdfeec5799 71
dapi08 2:82fdfeec5799 72 /*
dapi08 2:82fdfeec5799 73 * CALCULA CHECKSUM
dapi08 2:82fdfeec5799 74 */
dapi08 2:82fdfeec5799 75 uint16_t checksum(uint8_t *buf, uint16_t nb){
dapi08 2:82fdfeec5799 76 uint16_t chk=0;
dapi08 2:82fdfeec5799 77
dapi08 2:82fdfeec5799 78 for(uint8_t i=0; i<nb; i++){
dapi08 2:82fdfeec5799 79 chk += buf[i];
dapi08 2:82fdfeec5799 80 }
dapi08 2:82fdfeec5799 81 chk ^= 0xffff;
dapi08 2:82fdfeec5799 82 return chk;
dapi08 2:82fdfeec5799 83 }