Lucio Hallage
/
APS-ELEEMB1
mandador
main.cpp@0:2bdc88a8d0c9, 18 months ago (annotated)
- Committer:
- lucio_hallage
- Date:
- Fri Nov 25 11:55:18 2022 +0000
- Revision:
- 0:2bdc88a8d0c9
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lucio_hallage | 0:2bdc88a8d0c9 | 1 | #include "mbed.h" |
lucio_hallage | 0:2bdc88a8d0c9 | 2 | |
lucio_hallage | 0:2bdc88a8d0c9 | 3 | //-------Declara uso da serial--------------------- |
lucio_hallage | 0:2bdc88a8d0c9 | 4 | Serial pc(USBTX, USBRX); // tx, rx |
lucio_hallage | 0:2bdc88a8d0c9 | 5 | |
lucio_hallage | 0:2bdc88a8d0c9 | 6 | //----------Pinos de entrada analogica (ADC)------ |
lucio_hallage | 0:2bdc88a8d0c9 | 7 | AnalogIn AXIS_X(A3); |
lucio_hallage | 0:2bdc88a8d0c9 | 8 | AnalogIn AXIS_Y(A5); |
lucio_hallage | 0:2bdc88a8d0c9 | 9 | |
lucio_hallage | 0:2bdc88a8d0c9 | 10 | //--------Declara uso da CAN---------------------- |
lucio_hallage | 0:2bdc88a8d0c9 | 11 | CAN can1(PB_8, PB_9); |
lucio_hallage | 0:2bdc88a8d0c9 | 12 | |
lucio_hallage | 0:2bdc88a8d0c9 | 13 | //--------Declara uso do LED nativo da placa------ |
lucio_hallage | 0:2bdc88a8d0c9 | 14 | DigitalOut LED(PA_5); |
lucio_hallage | 0:2bdc88a8d0c9 | 15 | |
lucio_hallage | 0:2bdc88a8d0c9 | 16 | //-----Declara uso do botao nativo da placa-------- |
lucio_hallage | 0:2bdc88a8d0c9 | 17 | DigitalIn SW(PC_13); |
lucio_hallage | 0:2bdc88a8d0c9 | 18 | |
lucio_hallage | 0:2bdc88a8d0c9 | 19 | //---------Dados em hexadecimal de cada mensagem------- |
lucio_hallage | 0:2bdc88a8d0c9 | 20 | static char info = 0x55; |
lucio_hallage | 0:2bdc88a8d0c9 | 21 | static char left = 0x01; |
lucio_hallage | 0:2bdc88a8d0c9 | 22 | static char right = 0x02; |
lucio_hallage | 0:2bdc88a8d0c9 | 23 | static char up = 0x03; |
lucio_hallage | 0:2bdc88a8d0c9 | 24 | static char down = 0x04; |
lucio_hallage | 0:2bdc88a8d0c9 | 25 | static char stop = 0x05; |
lucio_hallage | 0:2bdc88a8d0c9 | 26 | |
lucio_hallage | 0:2bdc88a8d0c9 | 27 | DigitalOut IN1A(D5); // Sinal IN1 |
lucio_hallage | 0:2bdc88a8d0c9 | 28 | DigitalOut IN2A(D4); // Sinal IN2 |
lucio_hallage | 0:2bdc88a8d0c9 | 29 | DigitalOut EN_A(D2); // Sinal ENABLE |
lucio_hallage | 0:2bdc88a8d0c9 | 30 | DigitalOut IN1B(A0); // Sinal IN1 |
lucio_hallage | 0:2bdc88a8d0c9 | 31 | DigitalOut IN2B(A1); // Sinal IN2 |
lucio_hallage | 0:2bdc88a8d0c9 | 32 | DigitalOut EN_B(A4); // Sinal ENABLE |
lucio_hallage | 0:2bdc88a8d0c9 | 33 | |
lucio_hallage | 0:2bdc88a8d0c9 | 34 | int main() { |
lucio_hallage | 0:2bdc88a8d0c9 | 35 | |
lucio_hallage | 0:2bdc88a8d0c9 | 36 | //-----atribuição dos dados as mensagens---------- |
lucio_hallage | 0:2bdc88a8d0c9 | 37 | CANMessage msg(5, &info, 8, CANData, CANStandard); |
lucio_hallage | 0:2bdc88a8d0c9 | 38 | CANMessage msg_up(5, &up, 8, CANData, CANStandard); |
lucio_hallage | 0:2bdc88a8d0c9 | 39 | CANMessage msg_down(5, &down, 8, CANData, CANStandard); |
lucio_hallage | 0:2bdc88a8d0c9 | 40 | CANMessage msg_left(5, &left, 8, CANData, CANStandard); |
lucio_hallage | 0:2bdc88a8d0c9 | 41 | CANMessage msg_right(5, &right, 8, CANData, CANStandard); |
lucio_hallage | 0:2bdc88a8d0c9 | 42 | CANMessage msg_stop(5, &stop, 8, CANData, CANStandard); |
lucio_hallage | 0:2bdc88a8d0c9 | 43 | |
lucio_hallage | 0:2bdc88a8d0c9 | 44 | //---boas vindas------------ |
lucio_hallage | 0:2bdc88a8d0c9 | 45 | pc.printf("Ola!!!\n"); |
lucio_hallage | 0:2bdc88a8d0c9 | 46 | |
lucio_hallage | 0:2bdc88a8d0c9 | 47 | float VAL_X = 0.0f, VAL_Y = 0.0f; |
lucio_hallage | 0:2bdc88a8d0c9 | 48 | |
lucio_hallage | 0:2bdc88a8d0c9 | 49 | while (1) { |
lucio_hallage | 0:2bdc88a8d0c9 | 50 | if (can1.read(msg)) { |
lucio_hallage | 0:2bdc88a8d0c9 | 51 | |
lucio_hallage | 0:2bdc88a8d0c9 | 52 | if (msg.data[0] == up) { |
lucio_hallage | 0:2bdc88a8d0c9 | 53 | // move_up(); |
lucio_hallage | 0:2bdc88a8d0c9 | 54 | pc.printf("Cima recebida: %x\n", msg_up.data[0]); |
lucio_hallage | 0:2bdc88a8d0c9 | 55 | EN_A = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 56 | EN_B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 57 | IN1A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 58 | IN2A = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 59 | IN1B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 60 | IN2B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 61 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 62 | |
lucio_hallage | 0:2bdc88a8d0c9 | 63 | //------Se a mensagem for do tipo DOWN, então move para baixo---- |
lucio_hallage | 0:2bdc88a8d0c9 | 64 | if (msg.data[0] == down) { |
lucio_hallage | 0:2bdc88a8d0c9 | 65 | // move_down(); |
lucio_hallage | 0:2bdc88a8d0c9 | 66 | pc.printf("Baixo recebida: %x\n", msg_down.data[0]); |
lucio_hallage | 0:2bdc88a8d0c9 | 67 | EN_A = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 68 | EN_B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 69 | IN1A = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 70 | IN2A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 71 | IN1B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 72 | IN2B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 73 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 74 | |
lucio_hallage | 0:2bdc88a8d0c9 | 75 | //------Se a mensagem for do tipo RIGHT, então move para direita---- |
lucio_hallage | 0:2bdc88a8d0c9 | 76 | if (msg.data[0] == right) { |
lucio_hallage | 0:2bdc88a8d0c9 | 77 | // move_right(); |
lucio_hallage | 0:2bdc88a8d0c9 | 78 | pc.printf("Direita recebida: %x\n", msg_right.data[0]); |
lucio_hallage | 0:2bdc88a8d0c9 | 79 | EN_A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 80 | EN_B = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 81 | IN1A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 82 | IN2A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 83 | IN1B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 84 | IN2B = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 85 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 86 | |
lucio_hallage | 0:2bdc88a8d0c9 | 87 | //------Se a mensagem for do tipo LEFT, então move para esquerda---- |
lucio_hallage | 0:2bdc88a8d0c9 | 88 | if (msg.data[0] == left) { |
lucio_hallage | 0:2bdc88a8d0c9 | 89 | // move_left(); |
lucio_hallage | 0:2bdc88a8d0c9 | 90 | pc.printf("Esquerda recebida: %x\n", msg_left.data[0]); |
lucio_hallage | 0:2bdc88a8d0c9 | 91 | EN_A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 92 | EN_B = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 93 | IN1A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 94 | IN2A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 95 | IN1B = 1; |
lucio_hallage | 0:2bdc88a8d0c9 | 96 | IN2B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 97 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 98 | |
lucio_hallage | 0:2bdc88a8d0c9 | 99 | //------Se a mensagem for do tipo STOP, então para os motores------ |
lucio_hallage | 0:2bdc88a8d0c9 | 100 | if (msg.data[0] == stop) { |
lucio_hallage | 0:2bdc88a8d0c9 | 101 | // move_stop(); |
lucio_hallage | 0:2bdc88a8d0c9 | 102 | pc.printf("Parada recebida: %x\n", msg_stop.data[0]); |
lucio_hallage | 0:2bdc88a8d0c9 | 103 | EN_A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 104 | EN_B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 105 | IN1A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 106 | IN2A = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 107 | IN1B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 108 | IN2B = 0; |
lucio_hallage | 0:2bdc88a8d0c9 | 109 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 110 | |
lucio_hallage | 0:2bdc88a8d0c9 | 111 | msg.data[0] = 0x00; // limpa a variavel |
lucio_hallage | 0:2bdc88a8d0c9 | 112 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 113 | wait_us(20000); // controla o envio/recebimento de mensagens |
lucio_hallage | 0:2bdc88a8d0c9 | 114 | } |
lucio_hallage | 0:2bdc88a8d0c9 | 115 | } |