.

Dependencies:   CANMsg mbed

Files at this revision

API Documentation at this revision

Comitter:
lucio_hallage
Date:
Thu Dec 15 16:47:32 2022 +0000
Child:
1:49a28b314101
Commit message:
ignicao

Changed in this revision

CANMsg.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/CANMsg.lib	Thu Dec 15 16:47:32 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/hudakz/code/CANMsg/#5017a65ff423
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Dec 15 16:47:32 2022 +0000
@@ -0,0 +1,120 @@
+#include "mbed.h"
+#include "CAN.h"
+#include "can_helper.h"
+#include "stdio.h"
+
+InterruptIn ign(D8);
+InterruptIn botao(PC_13); // definição do botão de usuário
+
+Serial pc(USBTX, USBRX);
+CAN can1(PA_11, PA_12);
+
+PwmOut rot(D9);
+PwmOut ign1(D7);
+PwmOut ign2(D14);
+
+
+// AnalogIn pot(PB_1);
+//---------Dados em hexadecimal de cada mensagem-------
+static char info = 0x55;
+
+void toggle(void);
+void outputFloat(void);
+int ig = 0;
+float leitura;
+float leitura_count;
+int RPM;
+float RPM_medio;
+float ta;
+int av=20;
+int fase=0;
+int c;
+int co;
+Timer debounce;
+Timer timer;
+CANMessage msg;
+
+
+
+
+int main() {
+  debounce.start();
+  timer.start();
+  ign.rise(&toggle);
+  pc.baud(115200); 
+    while(1) {
+        if (timer.read()>5) {
+            
+            //outputFloat(RPM);
+          
+            char rpm[4];
+            sprintf(rpm, "%d", RPM);
+            can1.write(CANMessage(20, rpm , 8,CANData,CANStandard ));
+            if(can1.read(msg)) {
+                if (msg.id==6){
+                    if (msg.data=="0x09"){
+                       av= 4*10^-3*RPM +6;
+                       }
+                    if (msg.data=="0x10"){
+                       av= 6*10^-3*RPM +4;
+                       }
+                    if (msg.data=="0x11"){
+                         av= -9*10^-7*RPM*RPM+0.0091*RPM+1.6;
+                       }
+                    //if (msg.data==""){
+//                       av= -8*57^-7*RPM^2+0.00954*RPM+1.6;
+//                       }
+//                    if (msg.data==""){
+//                       av= 6*10^-3*RPM +5.4;
+//                       }
+                   
+                   // av=float(msg.data)
+                    }
+                
+
+            printf("\n\r Message id :%d", msg.id);
+            
+            printf("\n\r Message received: %s", msg.data);
+            }            
+            timer.reset();
+        }
+    }
+}
+
+void outputFloat(float value) {
+  unsigned char * charPtr = (unsigned char*)&value;  // create a char * that points to the location of value
+  for (int i = 0; i<4; i++) {    // each byte in value
+    pc.putc(*(charPtr + i));  // send the next value pointed to by charPtr it over the serial port.
+  }
+}
+
+void toggle() {  
+    ig++;   
+    if (ig==31){
+        ig++;
+        leitura = debounce.read();
+        if (fase==0){
+        ign1.period(leitura*2);      // 4 second period
+        ign1.write(0.050f/2);
+        }
+        if (fase==1){
+        ign2.period(leitura*2);      // 4 second period
+        ign2.write(0.050f/2);
+        } 
+        ta= av*1000/(RPM*6);
+        wait_us((leitura*1000-ta)*1000);
+        rot.period(leitura);      // 4 second period
+        rot.write(0.050f);   
+        RPM = 60/(leitura);
+        fase++;
+        if (fase>=2){
+        fase=0;
+        } 
+        ig=0;
+        debounce.reset();
+               
+        
+    } 
+       
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Dec 15 16:47:32 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file