Lucio Hallage
/
ignicaofonica
.
Revision 0:4d8fdecf2bbf, committed 18 months ago
- Comitter:
- lucio_hallage
- Date:
- Thu Dec 15 16:47:32 2022 +0000
- Child:
- 1:49a28b314101
- Commit message:
- ignicao
Changed in this revision
--- /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