Pedro Campos
/
SERVOS_V0_3
test
auxiliar.cpp@8:b4465148d206, 2021-09-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |