eletronica embarcada

Dependencies:   mbed TextLCD

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?

UserRevisionLine numberNew 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