eletronica embarcada

Dependencies:   mbed TextLCD

Revision:
0:9904aeb823e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jun 19 20:21:44 2020 +0000
@@ -0,0 +1,185 @@
+//-------------------------------------------------------------------
+// Projeto 2020-06-15_APS3
+// Arquivo: main.cpp
+// descrição: Programa APS3 - OBD
+// autor: Roberto
+//------------------------------------------------------------------
+
+#include "mbed.h"
+#include <TextLCD.h>
+
+Serial pc(USBTX, USBRX); // tx, rx
+Serial sparkfun(PB_9, PB_8);  // tx, rx
+
+TextLCD lcd(D8, D9, D4, D5, D6, D7);
+DigitalOut LCD(LED1);
+
+char resposta[20];  //com folga e carater vazio
+int i = 0;
+int y = 0;
+char bat[3];
+char rpm[4]; // 4 bytes finais
+int resposta_bat;
+int resposta_rpm;
+
+int resposta_temp;
+char vel[2]; // 2 bytes finais
+int resposta_vel;
+
+void bateria() {
+    
+    i = 0;
+    
+    memset(resposta,NULL,20);
+    
+    pc.printf("atrv \r");  // valor bat
+    
+    
+    while(pc.readable() == 0) {   //trocar para sparkfun
+    }
+    
+    while(resposta[i-1] != '\r') {  // ' caracter com caracter
+        
+    resposta[i] = pc.getc(); 
+    i ++;
+    }
+    
+    lcd.locate (0,0);
+    lcd.printf("B");
+    
+    lcd.locate (2,0);
+    lcd.printf(resposta);
+    
+    lcd.locate (7,0);
+    lcd.printf(" ");
+    
+    pc.printf(resposta);
+    pc.printf("\r");
+    }
+    
+void rotacao() { 
+    
+    i = 0; 
+    
+    memset(resposta,NULL,20);
+    
+    pc.printf("010c\r");  // valor rpm
+    
+    while(pc.readable() == 0) {   //trocar para sparkfun
+    }
+    
+    while(resposta[i-1] != '\r') {  // ' caracter com caracter
+        
+    resposta[i] = pc.getc(); 
+    i ++;
+    }
+    
+    rpm[0] = resposta[i-6];  
+    rpm[1] = resposta[i-5];
+    rpm[2] = resposta[i-3];
+    rpm[3] = resposta[i-2];  //  \r conta como um caracter e i conta um a mais (ofset =2)
+    
+    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
+    
+    lcd.locate (8,0);
+    lcd.printf("RPM %d",resposta_rpm);
+    
+    pc.printf(" RPM: %d \r ",resposta_rpm);
+    }
+    
+void temperatura() {
+    
+    i = 0;
+    resposta_temp = 0;
+    
+    memset(resposta,NULL,20);
+    
+    pc.printf("0105\r");  // valor temp
+    
+    while(pc.readable() == 0) {   //trocar para sparkfun
+    }
+    
+    while(resposta[i-1] != '\r') {  // ' caracter com caracter
+        
+    resposta[i] = pc.getc(); 
+    //pc.putc(resposta[i]);
+    i ++;
+    }
+    
+    char temp[2]; // 2 bytes finais
+    //memset(temp,NULL,2);
+    
+    temp[0] = resposta[i-3];  
+    temp[1] = resposta[i-2]; //  \r conta como um caracter e i conta um a mais (ofset =2)
+    
+    pc.printf(" TEMP: %c%c \r ",temp[0], temp[1]); 
+    
+    resposta_temp = strtol(temp,NULL,16)-40 ;  //string to int | nao precisa da logica e A e B pq os bytes estao conjuntos
+    
+    //resposta_temp = resposta_temp - 40;
+    
+    lcd.locate (0,1);
+    lcd.printf("TEMP %d",resposta_temp);
+    
+    pc.printf(" TEMP: %d \r ",resposta_temp); 
+    }
+    
+void velocidade(){
+    
+    i = 0; 
+    
+    memset(resposta,NULL,20);
+    
+    pc.printf("010D\r");  // valor vel
+    
+    while(pc.readable() == 0) {   //trocar para sparkfun
+    }
+    
+    while(resposta[i-1] != '\r') {  // ' caracter com caracter
+        
+    resposta[i] = pc.getc(); 
+    //pc.putc(resposta[i]);
+    i ++;
+    }
+    
+    vel[0] = resposta[i-3];  
+    vel[1] = resposta[i-2]; //  \r conta como um caracter e i conta um a mais (ofset =2)
+    
+    resposta_vel = strtol(vel,NULL,16);  //string to int | nao precisa da logica e A e B pq os bytes estao conjuntos
+    
+    lcd.locate (8,1);
+    lcd.printf("VEL %d",resposta_vel);
+    
+    pc.printf(" VEL %d \r ",resposta_vel); 
+    }
+
+int main() {
+
+    while(y != 10){   
+    
+        bateria();
+        
+        wait(1);
+        
+        rotacao(); 
+        
+        wait(1);
+        
+        temperatura();
+  
+        wait(1);
+        
+        velocidade();
+        
+        wait(1);
+        
+        ++y;
+    }
+}
+    
+    
+    
+    
+    
+    
+    
\ No newline at end of file