Eletronica_Embarcada_2020-1
/
Teste_PROJ
eletronica embarcada
main.cpp@0:9904aeb823e9, 2020-06-19 (annotated)
- Committer:
- robertof3
- Date:
- Fri Jun 19 20:21:44 2020 +0000
- Revision:
- 0:9904aeb823e9
proj eletronica 19/06/2020
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
robertof3 | 0:9904aeb823e9 | 1 | //------------------------------------------------------------------- |
robertof3 | 0:9904aeb823e9 | 2 | // Projeto 2020-06-15_APS3 |
robertof3 | 0:9904aeb823e9 | 3 | // Arquivo: main.cpp |
robertof3 | 0:9904aeb823e9 | 4 | // descrição: Programa APS3 - OBD |
robertof3 | 0:9904aeb823e9 | 5 | // autor: Roberto |
robertof3 | 0:9904aeb823e9 | 6 | //------------------------------------------------------------------ |
robertof3 | 0:9904aeb823e9 | 7 | |
robertof3 | 0:9904aeb823e9 | 8 | #include "mbed.h" |
robertof3 | 0:9904aeb823e9 | 9 | #include <TextLCD.h> |
robertof3 | 0:9904aeb823e9 | 10 | |
robertof3 | 0:9904aeb823e9 | 11 | Serial pc(USBTX, USBRX); // tx, rx |
robertof3 | 0:9904aeb823e9 | 12 | Serial sparkfun(PB_9, PB_8); // tx, rx |
robertof3 | 0:9904aeb823e9 | 13 | |
robertof3 | 0:9904aeb823e9 | 14 | TextLCD lcd(D8, D9, D4, D5, D6, D7); |
robertof3 | 0:9904aeb823e9 | 15 | DigitalOut LCD(LED1); |
robertof3 | 0:9904aeb823e9 | 16 | |
robertof3 | 0:9904aeb823e9 | 17 | char resposta[20]; //com folga e carater vazio |
robertof3 | 0:9904aeb823e9 | 18 | int i = 0; |
robertof3 | 0:9904aeb823e9 | 19 | int y = 0; |
robertof3 | 0:9904aeb823e9 | 20 | char bat[3]; |
robertof3 | 0:9904aeb823e9 | 21 | char rpm[4]; // 4 bytes finais |
robertof3 | 0:9904aeb823e9 | 22 | int resposta_bat; |
robertof3 | 0:9904aeb823e9 | 23 | int resposta_rpm; |
robertof3 | 0:9904aeb823e9 | 24 | |
robertof3 | 0:9904aeb823e9 | 25 | int resposta_temp; |
robertof3 | 0:9904aeb823e9 | 26 | char vel[2]; // 2 bytes finais |
robertof3 | 0:9904aeb823e9 | 27 | int resposta_vel; |
robertof3 | 0:9904aeb823e9 | 28 | |
robertof3 | 0:9904aeb823e9 | 29 | void bateria() { |
robertof3 | 0:9904aeb823e9 | 30 | |
robertof3 | 0:9904aeb823e9 | 31 | i = 0; |
robertof3 | 0:9904aeb823e9 | 32 | |
robertof3 | 0:9904aeb823e9 | 33 | memset(resposta,NULL,20); |
robertof3 | 0:9904aeb823e9 | 34 | |
robertof3 | 0:9904aeb823e9 | 35 | pc.printf("atrv \r"); // valor bat |
robertof3 | 0:9904aeb823e9 | 36 | |
robertof3 | 0:9904aeb823e9 | 37 | |
robertof3 | 0:9904aeb823e9 | 38 | while(pc.readable() == 0) { //trocar para sparkfun |
robertof3 | 0:9904aeb823e9 | 39 | } |
robertof3 | 0:9904aeb823e9 | 40 | |
robertof3 | 0:9904aeb823e9 | 41 | while(resposta[i-1] != '\r') { // ' caracter com caracter |
robertof3 | 0:9904aeb823e9 | 42 | |
robertof3 | 0:9904aeb823e9 | 43 | resposta[i] = pc.getc(); |
robertof3 | 0:9904aeb823e9 | 44 | i ++; |
robertof3 | 0:9904aeb823e9 | 45 | } |
robertof3 | 0:9904aeb823e9 | 46 | |
robertof3 | 0:9904aeb823e9 | 47 | lcd.locate (0,0); |
robertof3 | 0:9904aeb823e9 | 48 | lcd.printf("B"); |
robertof3 | 0:9904aeb823e9 | 49 | |
robertof3 | 0:9904aeb823e9 | 50 | lcd.locate (2,0); |
robertof3 | 0:9904aeb823e9 | 51 | lcd.printf(resposta); |
robertof3 | 0:9904aeb823e9 | 52 | |
robertof3 | 0:9904aeb823e9 | 53 | lcd.locate (7,0); |
robertof3 | 0:9904aeb823e9 | 54 | lcd.printf(" "); |
robertof3 | 0:9904aeb823e9 | 55 | |
robertof3 | 0:9904aeb823e9 | 56 | pc.printf(resposta); |
robertof3 | 0:9904aeb823e9 | 57 | pc.printf("\r"); |
robertof3 | 0:9904aeb823e9 | 58 | } |
robertof3 | 0:9904aeb823e9 | 59 | |
robertof3 | 0:9904aeb823e9 | 60 | void rotacao() { |
robertof3 | 0:9904aeb823e9 | 61 | |
robertof3 | 0:9904aeb823e9 | 62 | i = 0; |
robertof3 | 0:9904aeb823e9 | 63 | |
robertof3 | 0:9904aeb823e9 | 64 | memset(resposta,NULL,20); |
robertof3 | 0:9904aeb823e9 | 65 | |
robertof3 | 0:9904aeb823e9 | 66 | pc.printf("010c\r"); // valor rpm |
robertof3 | 0:9904aeb823e9 | 67 | |
robertof3 | 0:9904aeb823e9 | 68 | while(pc.readable() == 0) { //trocar para sparkfun |
robertof3 | 0:9904aeb823e9 | 69 | } |
robertof3 | 0:9904aeb823e9 | 70 | |
robertof3 | 0:9904aeb823e9 | 71 | while(resposta[i-1] != '\r') { // ' caracter com caracter |
robertof3 | 0:9904aeb823e9 | 72 | |
robertof3 | 0:9904aeb823e9 | 73 | resposta[i] = pc.getc(); |
robertof3 | 0:9904aeb823e9 | 74 | i ++; |
robertof3 | 0:9904aeb823e9 | 75 | } |
robertof3 | 0:9904aeb823e9 | 76 | |
robertof3 | 0:9904aeb823e9 | 77 | rpm[0] = resposta[i-6]; |
robertof3 | 0:9904aeb823e9 | 78 | rpm[1] = resposta[i-5]; |
robertof3 | 0:9904aeb823e9 | 79 | rpm[2] = resposta[i-3]; |
robertof3 | 0:9904aeb823e9 | 80 | rpm[3] = resposta[i-2]; // \r conta como um caracter e i conta um a mais (ofset =2) |
robertof3 | 0:9904aeb823e9 | 81 | |
robertof3 | 0:9904aeb823e9 | 82 | resposta_rpm = strtol(rpm,NULL,16)/4; //string to int em decimal| nao precisa da logica e A e B pq os bytes estao conjuntos |
robertof3 | 0:9904aeb823e9 | 83 | |
robertof3 | 0:9904aeb823e9 | 84 | lcd.locate (8,0); |
robertof3 | 0:9904aeb823e9 | 85 | lcd.printf("RPM %d",resposta_rpm); |
robertof3 | 0:9904aeb823e9 | 86 | |
robertof3 | 0:9904aeb823e9 | 87 | pc.printf(" RPM: %d \r ",resposta_rpm); |
robertof3 | 0:9904aeb823e9 | 88 | } |
robertof3 | 0:9904aeb823e9 | 89 | |
robertof3 | 0:9904aeb823e9 | 90 | void temperatura() { |
robertof3 | 0:9904aeb823e9 | 91 | |
robertof3 | 0:9904aeb823e9 | 92 | i = 0; |
robertof3 | 0:9904aeb823e9 | 93 | resposta_temp = 0; |
robertof3 | 0:9904aeb823e9 | 94 | |
robertof3 | 0:9904aeb823e9 | 95 | memset(resposta,NULL,20); |
robertof3 | 0:9904aeb823e9 | 96 | |
robertof3 | 0:9904aeb823e9 | 97 | pc.printf("0105\r"); // valor temp |
robertof3 | 0:9904aeb823e9 | 98 | |
robertof3 | 0:9904aeb823e9 | 99 | while(pc.readable() == 0) { //trocar para sparkfun |
robertof3 | 0:9904aeb823e9 | 100 | } |
robertof3 | 0:9904aeb823e9 | 101 | |
robertof3 | 0:9904aeb823e9 | 102 | while(resposta[i-1] != '\r') { // ' caracter com caracter |
robertof3 | 0:9904aeb823e9 | 103 | |
robertof3 | 0:9904aeb823e9 | 104 | resposta[i] = pc.getc(); |
robertof3 | 0:9904aeb823e9 | 105 | //pc.putc(resposta[i]); |
robertof3 | 0:9904aeb823e9 | 106 | i ++; |
robertof3 | 0:9904aeb823e9 | 107 | } |
robertof3 | 0:9904aeb823e9 | 108 | |
robertof3 | 0:9904aeb823e9 | 109 | char temp[2]; // 2 bytes finais |
robertof3 | 0:9904aeb823e9 | 110 | //memset(temp,NULL,2); |
robertof3 | 0:9904aeb823e9 | 111 | |
robertof3 | 0:9904aeb823e9 | 112 | temp[0] = resposta[i-3]; |
robertof3 | 0:9904aeb823e9 | 113 | temp[1] = resposta[i-2]; // \r conta como um caracter e i conta um a mais (ofset =2) |
robertof3 | 0:9904aeb823e9 | 114 | |
robertof3 | 0:9904aeb823e9 | 115 | pc.printf(" TEMP: %c%c \r ",temp[0], temp[1]); |
robertof3 | 0:9904aeb823e9 | 116 | |
robertof3 | 0:9904aeb823e9 | 117 | resposta_temp = strtol(temp,NULL,16)-40 ; //string to int | nao precisa da logica e A e B pq os bytes estao conjuntos |
robertof3 | 0:9904aeb823e9 | 118 | |
robertof3 | 0:9904aeb823e9 | 119 | //resposta_temp = resposta_temp - 40; |
robertof3 | 0:9904aeb823e9 | 120 | |
robertof3 | 0:9904aeb823e9 | 121 | lcd.locate (0,1); |
robertof3 | 0:9904aeb823e9 | 122 | lcd.printf("TEMP %d",resposta_temp); |
robertof3 | 0:9904aeb823e9 | 123 | |
robertof3 | 0:9904aeb823e9 | 124 | pc.printf(" TEMP: %d \r ",resposta_temp); |
robertof3 | 0:9904aeb823e9 | 125 | } |
robertof3 | 0:9904aeb823e9 | 126 | |
robertof3 | 0:9904aeb823e9 | 127 | void velocidade(){ |
robertof3 | 0:9904aeb823e9 | 128 | |
robertof3 | 0:9904aeb823e9 | 129 | i = 0; |
robertof3 | 0:9904aeb823e9 | 130 | |
robertof3 | 0:9904aeb823e9 | 131 | memset(resposta,NULL,20); |
robertof3 | 0:9904aeb823e9 | 132 | |
robertof3 | 0:9904aeb823e9 | 133 | pc.printf("010D\r"); // valor vel |
robertof3 | 0:9904aeb823e9 | 134 | |
robertof3 | 0:9904aeb823e9 | 135 | while(pc.readable() == 0) { //trocar para sparkfun |
robertof3 | 0:9904aeb823e9 | 136 | } |
robertof3 | 0:9904aeb823e9 | 137 | |
robertof3 | 0:9904aeb823e9 | 138 | while(resposta[i-1] != '\r') { // ' caracter com caracter |
robertof3 | 0:9904aeb823e9 | 139 | |
robertof3 | 0:9904aeb823e9 | 140 | resposta[i] = pc.getc(); |
robertof3 | 0:9904aeb823e9 | 141 | //pc.putc(resposta[i]); |
robertof3 | 0:9904aeb823e9 | 142 | i ++; |
robertof3 | 0:9904aeb823e9 | 143 | } |
robertof3 | 0:9904aeb823e9 | 144 | |
robertof3 | 0:9904aeb823e9 | 145 | vel[0] = resposta[i-3]; |
robertof3 | 0:9904aeb823e9 | 146 | vel[1] = resposta[i-2]; // \r conta como um caracter e i conta um a mais (ofset =2) |
robertof3 | 0:9904aeb823e9 | 147 | |
robertof3 | 0:9904aeb823e9 | 148 | resposta_vel = strtol(vel,NULL,16); //string to int | nao precisa da logica e A e B pq os bytes estao conjuntos |
robertof3 | 0:9904aeb823e9 | 149 | |
robertof3 | 0:9904aeb823e9 | 150 | lcd.locate (8,1); |
robertof3 | 0:9904aeb823e9 | 151 | lcd.printf("VEL %d",resposta_vel); |
robertof3 | 0:9904aeb823e9 | 152 | |
robertof3 | 0:9904aeb823e9 | 153 | pc.printf(" VEL %d \r ",resposta_vel); |
robertof3 | 0:9904aeb823e9 | 154 | } |
robertof3 | 0:9904aeb823e9 | 155 | |
robertof3 | 0:9904aeb823e9 | 156 | int main() { |
robertof3 | 0:9904aeb823e9 | 157 | |
robertof3 | 0:9904aeb823e9 | 158 | while(y != 10){ |
robertof3 | 0:9904aeb823e9 | 159 | |
robertof3 | 0:9904aeb823e9 | 160 | bateria(); |
robertof3 | 0:9904aeb823e9 | 161 | |
robertof3 | 0:9904aeb823e9 | 162 | wait(1); |
robertof3 | 0:9904aeb823e9 | 163 | |
robertof3 | 0:9904aeb823e9 | 164 | rotacao(); |
robertof3 | 0:9904aeb823e9 | 165 | |
robertof3 | 0:9904aeb823e9 | 166 | wait(1); |
robertof3 | 0:9904aeb823e9 | 167 | |
robertof3 | 0:9904aeb823e9 | 168 | temperatura(); |
robertof3 | 0:9904aeb823e9 | 169 | |
robertof3 | 0:9904aeb823e9 | 170 | wait(1); |
robertof3 | 0:9904aeb823e9 | 171 | |
robertof3 | 0:9904aeb823e9 | 172 | velocidade(); |
robertof3 | 0:9904aeb823e9 | 173 | |
robertof3 | 0:9904aeb823e9 | 174 | wait(1); |
robertof3 | 0:9904aeb823e9 | 175 | |
robertof3 | 0:9904aeb823e9 | 176 | ++y; |
robertof3 | 0:9904aeb823e9 | 177 | } |
robertof3 | 0:9904aeb823e9 | 178 | } |
robertof3 | 0:9904aeb823e9 | 179 | |
robertof3 | 0:9904aeb823e9 | 180 | |
robertof3 | 0:9904aeb823e9 | 181 | |
robertof3 | 0:9904aeb823e9 | 182 | |
robertof3 | 0:9904aeb823e9 | 183 | |
robertof3 | 0:9904aeb823e9 | 184 | |
robertof3 | 0:9904aeb823e9 | 185 |