eletronica embarcada

Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

Comitter:
robertof3
Date:
Fri Jun 19 20:21:44 2020 +0000
Commit message:
proj eletronica 19/06/2020

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Fri Jun 19 20:21:44 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Jun 19 20:21:44 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file