Felipe Telles
/
Comunicacao
Vidro com comunicação CAN
main.cpp@0:7f560ecae53d, 2019-05-16 (annotated)
- Committer:
- felipeto1
- Date:
- Thu May 16 18:06:56 2019 +0000
- Revision:
- 0:7f560ecae53d
Vidro CAM
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
felipeto1 | 0:7f560ecae53d | 1 | #include "mbed.h" |
felipeto1 | 0:7f560ecae53d | 2 | |
felipeto1 | 0:7f560ecae53d | 3 | Serial pc(USBTX, USBRX); |
felipeto1 | 0:7f560ecae53d | 4 | CAN can1(PB_8,PB_9); |
felipeto1 | 0:7f560ecae53d | 5 | |
felipeto1 | 0:7f560ecae53d | 6 | DigitalOut LED(PA_5); |
felipeto1 | 0:7f560ecae53d | 7 | DigitalIn SW(PC_13); |
felipeto1 | 0:7f560ecae53d | 8 | |
felipeto1 | 0:7f560ecae53d | 9 | DigitalIn lado(D3); |
felipeto1 | 0:7f560ecae53d | 10 | DigitalIn vidro(D4); |
felipeto1 | 0:7f560ecae53d | 11 | |
felipeto1 | 0:7f560ecae53d | 12 | |
felipeto1 | 0:7f560ecae53d | 13 | DigitalOut Enable(D9); // Sinal Enable |
felipeto1 | 0:7f560ecae53d | 14 | DigitalOut saida_IN1(D10);// Sinal IN1 |
felipeto1 | 0:7f560ecae53d | 15 | DigitalOut saida_IN2(D8);// Sinal IN2 |
felipeto1 | 0:7f560ecae53d | 16 | |
felipeto1 | 0:7f560ecae53d | 17 | |
felipeto1 | 0:7f560ecae53d | 18 | int main(){ |
felipeto1 | 0:7f560ecae53d | 19 | |
felipeto1 | 0:7f560ecae53d | 20 | bool IN1 = 0; |
felipeto1 | 0:7f560ecae53d | 21 | bool IN2 = 0; |
felipeto1 | 0:7f560ecae53d | 22 | bool EN = 0; |
felipeto1 | 0:7f560ecae53d | 23 | |
felipeto1 | 0:7f560ecae53d | 24 | |
felipeto1 | 0:7f560ecae53d | 25 | char info = 0x0; |
felipeto1 | 0:7f560ecae53d | 26 | |
felipeto1 | 0:7f560ecae53d | 27 | CANMessage msg(5, &info, 8, CANData, CANStandard); |
felipeto1 | 0:7f560ecae53d | 28 | |
felipeto1 | 0:7f560ecae53d | 29 | LED=1; |
felipeto1 | 0:7f560ecae53d | 30 | wait(0.5); |
felipeto1 | 0:7f560ecae53d | 31 | |
felipeto1 | 0:7f560ecae53d | 32 | LED=0; |
felipeto1 | 0:7f560ecae53d | 33 | wait(0.5); |
felipeto1 | 0:7f560ecae53d | 34 | |
felipeto1 | 0:7f560ecae53d | 35 | while(1){ |
felipeto1 | 0:7f560ecae53d | 36 | |
felipeto1 | 0:7f560ecae53d | 37 | if (vidro == 0){ |
felipeto1 | 0:7f560ecae53d | 38 | if (SW==1){ |
felipeto1 | 0:7f560ecae53d | 39 | info = 0x20; |
felipeto1 | 0:7f560ecae53d | 40 | } |
felipeto1 | 0:7f560ecae53d | 41 | if (SW==0){ |
felipeto1 | 0:7f560ecae53d | 42 | info = 0x21; |
felipeto1 | 0:7f560ecae53d | 43 | } |
felipeto1 | 0:7f560ecae53d | 44 | } |
felipeto1 | 0:7f560ecae53d | 45 | if (vidro ==1){ |
felipeto1 | 0:7f560ecae53d | 46 | if (SW==1){ |
felipeto1 | 0:7f560ecae53d | 47 | info = 0x22; |
felipeto1 | 0:7f560ecae53d | 48 | } |
felipeto1 | 0:7f560ecae53d | 49 | if (SW==0){ |
felipeto1 | 0:7f560ecae53d | 50 | info = 0x23; |
felipeto1 | 0:7f560ecae53d | 51 | } |
felipeto1 | 0:7f560ecae53d | 52 | } |
felipeto1 | 0:7f560ecae53d | 53 | |
felipeto1 | 0:7f560ecae53d | 54 | CANMessage msg(5, &info, 8, CANData, CANStandard); |
felipeto1 | 0:7f560ecae53d | 55 | |
felipeto1 | 0:7f560ecae53d | 56 | if(can1.write(msg)){ |
felipeto1 | 0:7f560ecae53d | 57 | pc.printf("Enviada %x\n",msg.data[0]); |
felipeto1 | 0:7f560ecae53d | 58 | } |
felipeto1 | 0:7f560ecae53d | 59 | else{ |
felipeto1 | 0:7f560ecae53d | 60 | pc.printf("Nao Enviada\n"); |
felipeto1 | 0:7f560ecae53d | 61 | } |
felipeto1 | 0:7f560ecae53d | 62 | |
felipeto1 | 0:7f560ecae53d | 63 | if(can1.read(msg)){ |
felipeto1 | 0:7f560ecae53d | 64 | if (msg.data[0]>=0x22){ |
felipeto1 | 0:7f560ecae53d | 65 | if (msg.data[0] == 0x22){ |
felipeto1 | 0:7f560ecae53d | 66 | EN = 0; |
felipeto1 | 0:7f560ecae53d | 67 | } |
felipeto1 | 0:7f560ecae53d | 68 | if (msg.data[0] == 0x23){ |
felipeto1 | 0:7f560ecae53d | 69 | EN = 1; |
felipeto1 | 0:7f560ecae53d | 70 | } |
felipeto1 | 0:7f560ecae53d | 71 | pc.printf("Sobe Vidro %x\n",msg.data[0]); |
felipeto1 | 0:7f560ecae53d | 72 | IN1 = 1; |
felipeto1 | 0:7f560ecae53d | 73 | IN2 = 0; |
felipeto1 | 0:7f560ecae53d | 74 | |
felipeto1 | 0:7f560ecae53d | 75 | } |
felipeto1 | 0:7f560ecae53d | 76 | if (msg.data[0]<0x22){ |
felipeto1 | 0:7f560ecae53d | 77 | if (msg.data[0] == 0x20){ |
felipeto1 | 0:7f560ecae53d | 78 | EN = 0; |
felipeto1 | 0:7f560ecae53d | 79 | } |
felipeto1 | 0:7f560ecae53d | 80 | if (msg.data[0] == 0x21){ |
felipeto1 | 0:7f560ecae53d | 81 | EN = 1; |
felipeto1 | 0:7f560ecae53d | 82 | } |
felipeto1 | 0:7f560ecae53d | 83 | pc.printf("Desce Vidro %x\n",msg.data[0]); |
felipeto1 | 0:7f560ecae53d | 84 | IN1 = 0; |
felipeto1 | 0:7f560ecae53d | 85 | IN2 = 1; |
felipeto1 | 0:7f560ecae53d | 86 | } |
felipeto1 | 0:7f560ecae53d | 87 | } |
felipeto1 | 0:7f560ecae53d | 88 | saida_IN1 = IN1; |
felipeto1 | 0:7f560ecae53d | 89 | saida_IN2 = IN2; |
felipeto1 | 0:7f560ecae53d | 90 | if (EN==1){ |
felipeto1 | 0:7f560ecae53d | 91 | Enable = 1; |
felipeto1 | 0:7f560ecae53d | 92 | } |
felipeto1 | 0:7f560ecae53d | 93 | if (EN==0){ |
felipeto1 | 0:7f560ecae53d | 94 | Enable = 0; |
felipeto1 | 0:7f560ecae53d | 95 | } |
felipeto1 | 0:7f560ecae53d | 96 | wait(0.01); |
felipeto1 | 0:7f560ecae53d | 97 | } |
felipeto1 | 0:7f560ecae53d | 98 | } |
felipeto1 | 0:7f560ecae53d | 99 |