Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:4d8fdecf2bbf, 2022-12-15 (annotated)
- Committer:
- lucio_hallage
- Date:
- Thu Dec 15 16:47:32 2022 +0000
- Revision:
- 0:4d8fdecf2bbf
- Child:
- 1:49a28b314101
ignicao
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| lucio_hallage | 0:4d8fdecf2bbf | 1 | #include "mbed.h" |
| lucio_hallage | 0:4d8fdecf2bbf | 2 | #include "CAN.h" |
| lucio_hallage | 0:4d8fdecf2bbf | 3 | #include "can_helper.h" |
| lucio_hallage | 0:4d8fdecf2bbf | 4 | #include "stdio.h" |
| lucio_hallage | 0:4d8fdecf2bbf | 5 | |
| lucio_hallage | 0:4d8fdecf2bbf | 6 | InterruptIn ign(D8); |
| lucio_hallage | 0:4d8fdecf2bbf | 7 | InterruptIn botao(PC_13); // definição do botão de usuário |
| lucio_hallage | 0:4d8fdecf2bbf | 8 | |
| lucio_hallage | 0:4d8fdecf2bbf | 9 | Serial pc(USBTX, USBRX); |
| lucio_hallage | 0:4d8fdecf2bbf | 10 | CAN can1(PA_11, PA_12); |
| lucio_hallage | 0:4d8fdecf2bbf | 11 | |
| lucio_hallage | 0:4d8fdecf2bbf | 12 | PwmOut rot(D9); |
| lucio_hallage | 0:4d8fdecf2bbf | 13 | PwmOut ign1(D7); |
| lucio_hallage | 0:4d8fdecf2bbf | 14 | PwmOut ign2(D14); |
| lucio_hallage | 0:4d8fdecf2bbf | 15 | |
| lucio_hallage | 0:4d8fdecf2bbf | 16 | |
| lucio_hallage | 0:4d8fdecf2bbf | 17 | // AnalogIn pot(PB_1); |
| lucio_hallage | 0:4d8fdecf2bbf | 18 | //---------Dados em hexadecimal de cada mensagem------- |
| lucio_hallage | 0:4d8fdecf2bbf | 19 | static char info = 0x55; |
| lucio_hallage | 0:4d8fdecf2bbf | 20 | |
| lucio_hallage | 0:4d8fdecf2bbf | 21 | void toggle(void); |
| lucio_hallage | 0:4d8fdecf2bbf | 22 | void outputFloat(void); |
| lucio_hallage | 0:4d8fdecf2bbf | 23 | int ig = 0; |
| lucio_hallage | 0:4d8fdecf2bbf | 24 | float leitura; |
| lucio_hallage | 0:4d8fdecf2bbf | 25 | float leitura_count; |
| lucio_hallage | 0:4d8fdecf2bbf | 26 | int RPM; |
| lucio_hallage | 0:4d8fdecf2bbf | 27 | float RPM_medio; |
| lucio_hallage | 0:4d8fdecf2bbf | 28 | float ta; |
| lucio_hallage | 0:4d8fdecf2bbf | 29 | int av=20; |
| lucio_hallage | 0:4d8fdecf2bbf | 30 | int fase=0; |
| lucio_hallage | 0:4d8fdecf2bbf | 31 | int c; |
| lucio_hallage | 0:4d8fdecf2bbf | 32 | int co; |
| lucio_hallage | 0:4d8fdecf2bbf | 33 | Timer debounce; |
| lucio_hallage | 0:4d8fdecf2bbf | 34 | Timer timer; |
| lucio_hallage | 0:4d8fdecf2bbf | 35 | CANMessage msg; |
| lucio_hallage | 0:4d8fdecf2bbf | 36 | |
| lucio_hallage | 0:4d8fdecf2bbf | 37 | |
| lucio_hallage | 0:4d8fdecf2bbf | 38 | |
| lucio_hallage | 0:4d8fdecf2bbf | 39 | |
| lucio_hallage | 0:4d8fdecf2bbf | 40 | int main() { |
| lucio_hallage | 0:4d8fdecf2bbf | 41 | debounce.start(); |
| lucio_hallage | 0:4d8fdecf2bbf | 42 | timer.start(); |
| lucio_hallage | 0:4d8fdecf2bbf | 43 | ign.rise(&toggle); |
| lucio_hallage | 0:4d8fdecf2bbf | 44 | pc.baud(115200); |
| lucio_hallage | 0:4d8fdecf2bbf | 45 | while(1) { |
| lucio_hallage | 0:4d8fdecf2bbf | 46 | if (timer.read()>5) { |
| lucio_hallage | 0:4d8fdecf2bbf | 47 | |
| lucio_hallage | 0:4d8fdecf2bbf | 48 | //outputFloat(RPM); |
| lucio_hallage | 0:4d8fdecf2bbf | 49 | |
| lucio_hallage | 0:4d8fdecf2bbf | 50 | char rpm[4]; |
| lucio_hallage | 0:4d8fdecf2bbf | 51 | sprintf(rpm, "%d", RPM); |
| lucio_hallage | 0:4d8fdecf2bbf | 52 | can1.write(CANMessage(20, rpm , 8,CANData,CANStandard )); |
| lucio_hallage | 0:4d8fdecf2bbf | 53 | if(can1.read(msg)) { |
| lucio_hallage | 0:4d8fdecf2bbf | 54 | if (msg.id==6){ |
| lucio_hallage | 0:4d8fdecf2bbf | 55 | if (msg.data=="0x09"){ |
| lucio_hallage | 0:4d8fdecf2bbf | 56 | av= 4*10^-3*RPM +6; |
| lucio_hallage | 0:4d8fdecf2bbf | 57 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 58 | if (msg.data=="0x10"){ |
| lucio_hallage | 0:4d8fdecf2bbf | 59 | av= 6*10^-3*RPM +4; |
| lucio_hallage | 0:4d8fdecf2bbf | 60 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 61 | if (msg.data=="0x11"){ |
| lucio_hallage | 0:4d8fdecf2bbf | 62 | av= -9*10^-7*RPM*RPM+0.0091*RPM+1.6; |
| lucio_hallage | 0:4d8fdecf2bbf | 63 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 64 | //if (msg.data==""){ |
| lucio_hallage | 0:4d8fdecf2bbf | 65 | // av= -8*57^-7*RPM^2+0.00954*RPM+1.6; |
| lucio_hallage | 0:4d8fdecf2bbf | 66 | // } |
| lucio_hallage | 0:4d8fdecf2bbf | 67 | // if (msg.data==""){ |
| lucio_hallage | 0:4d8fdecf2bbf | 68 | // av= 6*10^-3*RPM +5.4; |
| lucio_hallage | 0:4d8fdecf2bbf | 69 | // } |
| lucio_hallage | 0:4d8fdecf2bbf | 70 | |
| lucio_hallage | 0:4d8fdecf2bbf | 71 | // av=float(msg.data) |
| lucio_hallage | 0:4d8fdecf2bbf | 72 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 73 | |
| lucio_hallage | 0:4d8fdecf2bbf | 74 | |
| lucio_hallage | 0:4d8fdecf2bbf | 75 | printf("\n\r Message id :%d", msg.id); |
| lucio_hallage | 0:4d8fdecf2bbf | 76 | |
| lucio_hallage | 0:4d8fdecf2bbf | 77 | printf("\n\r Message received: %s", msg.data); |
| lucio_hallage | 0:4d8fdecf2bbf | 78 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 79 | timer.reset(); |
| lucio_hallage | 0:4d8fdecf2bbf | 80 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 81 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 82 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 83 | |
| lucio_hallage | 0:4d8fdecf2bbf | 84 | void outputFloat(float value) { |
| lucio_hallage | 0:4d8fdecf2bbf | 85 | unsigned char * charPtr = (unsigned char*)&value; // create a char * that points to the location of value |
| lucio_hallage | 0:4d8fdecf2bbf | 86 | for (int i = 0; i<4; i++) { // each byte in value |
| lucio_hallage | 0:4d8fdecf2bbf | 87 | pc.putc(*(charPtr + i)); // send the next value pointed to by charPtr it over the serial port. |
| lucio_hallage | 0:4d8fdecf2bbf | 88 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 89 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 90 | |
| lucio_hallage | 0:4d8fdecf2bbf | 91 | void toggle() { |
| lucio_hallage | 0:4d8fdecf2bbf | 92 | ig++; |
| lucio_hallage | 0:4d8fdecf2bbf | 93 | if (ig==31){ |
| lucio_hallage | 0:4d8fdecf2bbf | 94 | ig++; |
| lucio_hallage | 0:4d8fdecf2bbf | 95 | leitura = debounce.read(); |
| lucio_hallage | 0:4d8fdecf2bbf | 96 | if (fase==0){ |
| lucio_hallage | 0:4d8fdecf2bbf | 97 | ign1.period(leitura*2); // 4 second period |
| lucio_hallage | 0:4d8fdecf2bbf | 98 | ign1.write(0.050f/2); |
| lucio_hallage | 0:4d8fdecf2bbf | 99 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 100 | if (fase==1){ |
| lucio_hallage | 0:4d8fdecf2bbf | 101 | ign2.period(leitura*2); // 4 second period |
| lucio_hallage | 0:4d8fdecf2bbf | 102 | ign2.write(0.050f/2); |
| lucio_hallage | 0:4d8fdecf2bbf | 103 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 104 | ta= av*1000/(RPM*6); |
| lucio_hallage | 0:4d8fdecf2bbf | 105 | wait_us((leitura*1000-ta)*1000); |
| lucio_hallage | 0:4d8fdecf2bbf | 106 | rot.period(leitura); // 4 second period |
| lucio_hallage | 0:4d8fdecf2bbf | 107 | rot.write(0.050f); |
| lucio_hallage | 0:4d8fdecf2bbf | 108 | RPM = 60/(leitura); |
| lucio_hallage | 0:4d8fdecf2bbf | 109 | fase++; |
| lucio_hallage | 0:4d8fdecf2bbf | 110 | if (fase>=2){ |
| lucio_hallage | 0:4d8fdecf2bbf | 111 | fase=0; |
| lucio_hallage | 0:4d8fdecf2bbf | 112 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 113 | ig=0; |
| lucio_hallage | 0:4d8fdecf2bbf | 114 | debounce.reset(); |
| lucio_hallage | 0:4d8fdecf2bbf | 115 | |
| lucio_hallage | 0:4d8fdecf2bbf | 116 | |
| lucio_hallage | 0:4d8fdecf2bbf | 117 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 118 | |
| lucio_hallage | 0:4d8fdecf2bbf | 119 | } |
| lucio_hallage | 0:4d8fdecf2bbf | 120 |