![](/media/cache/group/Display_Nokia_Insper_v01.jpg.50x50_q85.jpg)
comunicaçao CAN com LCD
main.cpp@1:dc5aef755b51, 2020-05-29 (annotated)
- Committer:
- Marcelocostanzo
- Date:
- Fri May 29 10:54:45 2020 +0000
- Revision:
- 1:dc5aef755b51
- Parent:
- 0:f45252ccde11
V1 - Funcionando
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Marcelocostanzo | 0:f45252ccde11 | 1 | #include "mbed.h" |
Marcelocostanzo | 0:f45252ccde11 | 2 | #include "TextLCD.h" |
Marcelocostanzo | 0:f45252ccde11 | 3 | |
Marcelocostanzo | 0:f45252ccde11 | 4 | TextLCD lcd(D8, D9, D4, D5, D6, D7); // rs, e, d4-d7 |
Marcelocostanzo | 0:f45252ccde11 | 5 | |
Marcelocostanzo | 0:f45252ccde11 | 6 | //-------Declara uso da serial--------------------- |
Marcelocostanzo | 0:f45252ccde11 | 7 | Serial pc(USBTX, USBRX); // tx, rx |
Marcelocostanzo | 0:f45252ccde11 | 8 | |
Marcelocostanzo | 1:dc5aef755b51 | 9 | |
Marcelocostanzo | 1:dc5aef755b51 | 10 | //----------Pinos de entrada analogica (ADC)------ |
Marcelocostanzo | 1:dc5aef755b51 | 11 | AnalogIn AXIS_X(A3); |
Marcelocostanzo | 1:dc5aef755b51 | 12 | AnalogIn AXIS_Y(A5); |
Marcelocostanzo | 1:dc5aef755b51 | 13 | |
Marcelocostanzo | 0:f45252ccde11 | 14 | //--------Declara uso da CAN---------------------- |
Marcelocostanzo | 0:f45252ccde11 | 15 | CAN can1(PB_8, PB_9); |
Marcelocostanzo | 0:f45252ccde11 | 16 | |
Marcelocostanzo | 0:f45252ccde11 | 17 | //--------Declara uso do LED nativo da placa------ |
Marcelocostanzo | 0:f45252ccde11 | 18 | DigitalOut LED(PA_5); |
Marcelocostanzo | 0:f45252ccde11 | 19 | |
Marcelocostanzo | 0:f45252ccde11 | 20 | //-----Declara uso do botao nativo da placa-------- |
Marcelocostanzo | 0:f45252ccde11 | 21 | DigitalIn SW(PC_13); |
Marcelocostanzo | 0:f45252ccde11 | 22 | |
Marcelocostanzo | 1:dc5aef755b51 | 23 | //---------Dados em hexadecimal de cada mensagem------- |
Marcelocostanzo | 0:f45252ccde11 | 24 | static char info = 0x55; |
Marcelocostanzo | 1:dc5aef755b51 | 25 | static char left = 0x01; |
Marcelocostanzo | 1:dc5aef755b51 | 26 | static char right = 0x02; |
Marcelocostanzo | 1:dc5aef755b51 | 27 | static char up = 0x03; |
Marcelocostanzo | 1:dc5aef755b51 | 28 | static char down = 0x04; |
Marcelocostanzo | 1:dc5aef755b51 | 29 | static char stop = 0x05; |
Marcelocostanzo | 0:f45252ccde11 | 30 | |
Marcelocostanzo | 0:f45252ccde11 | 31 | int main() |
Marcelocostanzo | 0:f45252ccde11 | 32 | { |
Marcelocostanzo | 0:f45252ccde11 | 33 | lcd.setCursor(TextLCD::CurOff_BlkOff); |
Marcelocostanzo | 0:f45252ccde11 | 34 | lcd.cls(); |
Marcelocostanzo | 0:f45252ccde11 | 35 | |
Marcelocostanzo | 1:dc5aef755b51 | 36 | //-----atribuição dos dados as mensagens---------- |
Marcelocostanzo | 0:f45252ccde11 | 37 | CANMessage msg(5, &info, 8, CANData, CANStandard); |
Marcelocostanzo | 1:dc5aef755b51 | 38 | CANMessage msg_up(5, &up, 8, CANData, CANStandard); |
Marcelocostanzo | 1:dc5aef755b51 | 39 | CANMessage msg_down(5, &down, 8, CANData, CANStandard); |
Marcelocostanzo | 1:dc5aef755b51 | 40 | CANMessage msg_left(5, &left, 8, CANData, CANStandard); |
Marcelocostanzo | 1:dc5aef755b51 | 41 | CANMessage msg_right(5, &right, 8, CANData, CANStandard); |
Marcelocostanzo | 1:dc5aef755b51 | 42 | CANMessage msg_stop(5, &stop, 8, CANData, CANStandard); |
Marcelocostanzo | 0:f45252ccde11 | 43 | |
Marcelocostanzo | 0:f45252ccde11 | 44 | //pisca o led |
Marcelocostanzo | 0:f45252ccde11 | 45 | LED = 1; |
Marcelocostanzo | 0:f45252ccde11 | 46 | wait(0.5); |
Marcelocostanzo | 0:f45252ccde11 | 47 | LED = 0; |
Marcelocostanzo | 0:f45252ccde11 | 48 | wait(0.5); |
Marcelocostanzo | 0:f45252ccde11 | 49 | |
Marcelocostanzo | 0:f45252ccde11 | 50 | //---boas vindas------------ |
Marcelocostanzo | 0:f45252ccde11 | 51 | pc.printf("Ola!!!\n"); |
Marcelocostanzo | 0:f45252ccde11 | 52 | lcd.locate(0,0); |
Marcelocostanzo | 0:f45252ccde11 | 53 | lcd.printf("Ola!!!"); |
Marcelocostanzo | 1:dc5aef755b51 | 54 | |
Marcelocostanzo | 1:dc5aef755b51 | 55 | float VAL_X = 0.0f, VAL_Y = 0.0f; |
Marcelocostanzo | 0:f45252ccde11 | 56 | |
Marcelocostanzo | 0:f45252ccde11 | 57 | while(1) |
Marcelocostanzo | 0:f45252ccde11 | 58 | { |
Marcelocostanzo | 1:dc5aef755b51 | 59 | |
Marcelocostanzo | 1:dc5aef755b51 | 60 | //------Leitura do joystick nos eixos X e Y -------------- |
Marcelocostanzo | 1:dc5aef755b51 | 61 | VAL_X = AXIS_X.read(); |
Marcelocostanzo | 1:dc5aef755b51 | 62 | VAL_Y = AXIS_Y.read(); |
Marcelocostanzo | 1:dc5aef755b51 | 63 | |
Marcelocostanzo | 1:dc5aef755b51 | 64 | //----Envia mensagem para +Y ----- |
Marcelocostanzo | 1:dc5aef755b51 | 65 | if(VAL_X > 0.7f) |
Marcelocostanzo | 0:f45252ccde11 | 66 | { |
Marcelocostanzo | 1:dc5aef755b51 | 67 | if(can1.write(msg_right)) |
Marcelocostanzo | 1:dc5aef755b51 | 68 | { |
Marcelocostanzo | 1:dc5aef755b51 | 69 | pc.printf("Direita enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 70 | } |
Marcelocostanzo | 1:dc5aef755b51 | 71 | |
Marcelocostanzo | 1:dc5aef755b51 | 72 | else |
Marcelocostanzo | 0:f45252ccde11 | 73 | { |
Marcelocostanzo | 1:dc5aef755b51 | 74 | pc.printf("Direita NAO enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 75 | } |
Marcelocostanzo | 1:dc5aef755b51 | 76 | } |
Marcelocostanzo | 1:dc5aef755b51 | 77 | |
Marcelocostanzo | 1:dc5aef755b51 | 78 | //----Envia mensagem para -Y ----- |
Marcelocostanzo | 1:dc5aef755b51 | 79 | if(VAL_X < 0.3f) |
Marcelocostanzo | 1:dc5aef755b51 | 80 | { |
Marcelocostanzo | 1:dc5aef755b51 | 81 | //printf("\n\rLEFT"); |
Marcelocostanzo | 1:dc5aef755b51 | 82 | if(can1.write(msg_left)) |
Marcelocostanzo | 1:dc5aef755b51 | 83 | { |
Marcelocostanzo | 1:dc5aef755b51 | 84 | pc.printf("Esquerda enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 85 | } |
Marcelocostanzo | 1:dc5aef755b51 | 86 | |
Marcelocostanzo | 1:dc5aef755b51 | 87 | else |
Marcelocostanzo | 1:dc5aef755b51 | 88 | { |
Marcelocostanzo | 1:dc5aef755b51 | 89 | pc.printf("Esquerda NAO enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 90 | } |
Marcelocostanzo | 1:dc5aef755b51 | 91 | } |
Marcelocostanzo | 1:dc5aef755b51 | 92 | |
Marcelocostanzo | 1:dc5aef755b51 | 93 | //----Envia mensagem para +X ----- |
Marcelocostanzo | 1:dc5aef755b51 | 94 | if(VAL_Y > 0.7f) |
Marcelocostanzo | 1:dc5aef755b51 | 95 | { |
Marcelocostanzo | 1:dc5aef755b51 | 96 | //printf("\n\rUP"); |
Marcelocostanzo | 1:dc5aef755b51 | 97 | if(can1.write(msg_up)) |
Marcelocostanzo | 0:f45252ccde11 | 98 | { |
Marcelocostanzo | 1:dc5aef755b51 | 99 | pc.printf("Cima enviada\n"); |
Marcelocostanzo | 0:f45252ccde11 | 100 | } |
Marcelocostanzo | 0:f45252ccde11 | 101 | |
Marcelocostanzo | 0:f45252ccde11 | 102 | else |
Marcelocostanzo | 0:f45252ccde11 | 103 | { |
Marcelocostanzo | 1:dc5aef755b51 | 104 | pc.printf("Cima NAO enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 105 | } |
Marcelocostanzo | 1:dc5aef755b51 | 106 | } |
Marcelocostanzo | 1:dc5aef755b51 | 107 | |
Marcelocostanzo | 1:dc5aef755b51 | 108 | //----Envia mensagem para -X ----- |
Marcelocostanzo | 1:dc5aef755b51 | 109 | if(VAL_Y < 0.3f) |
Marcelocostanzo | 1:dc5aef755b51 | 110 | { |
Marcelocostanzo | 1:dc5aef755b51 | 111 | //printf("\n\rDown"); |
Marcelocostanzo | 1:dc5aef755b51 | 112 | if(can1.write(msg_down)) |
Marcelocostanzo | 1:dc5aef755b51 | 113 | { |
Marcelocostanzo | 1:dc5aef755b51 | 114 | pc.printf("Baixo enviada\n"); |
Marcelocostanzo | 0:f45252ccde11 | 115 | } |
Marcelocostanzo | 1:dc5aef755b51 | 116 | |
Marcelocostanzo | 1:dc5aef755b51 | 117 | else |
Marcelocostanzo | 1:dc5aef755b51 | 118 | { |
Marcelocostanzo | 1:dc5aef755b51 | 119 | pc.printf("Baixo NAO enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 120 | } |
Marcelocostanzo | 0:f45252ccde11 | 121 | } |
Marcelocostanzo | 1:dc5aef755b51 | 122 | |
Marcelocostanzo | 1:dc5aef755b51 | 123 | //----Se o joystick estiver em repouso, envia mensagem para parar os motores dos eixos-------- |
Marcelocostanzo | 1:dc5aef755b51 | 124 | if(((VAL_Y < 0.65f) && (VAL_Y > 0.45f)) && ((VAL_X < 0.65f) && (VAL_X > 0.45f))) |
Marcelocostanzo | 1:dc5aef755b51 | 125 | { |
Marcelocostanzo | 1:dc5aef755b51 | 126 | //printf("\n\rStop"); |
Marcelocostanzo | 1:dc5aef755b51 | 127 | if(can1.write(msg_stop)) |
Marcelocostanzo | 1:dc5aef755b51 | 128 | { |
Marcelocostanzo | 1:dc5aef755b51 | 129 | pc.printf("Parada enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 130 | } |
Marcelocostanzo | 1:dc5aef755b51 | 131 | |
Marcelocostanzo | 1:dc5aef755b51 | 132 | else |
Marcelocostanzo | 1:dc5aef755b51 | 133 | { |
Marcelocostanzo | 1:dc5aef755b51 | 134 | pc.printf("Parada NAO enviada\n"); |
Marcelocostanzo | 1:dc5aef755b51 | 135 | } |
Marcelocostanzo | 1:dc5aef755b51 | 136 | } |
Marcelocostanzo | 0:f45252ccde11 | 137 | |
Marcelocostanzo | 1:dc5aef755b51 | 138 | //-----Verifica se recebeu uma mensagem na CAN------------- |
Marcelocostanzo | 1:dc5aef755b51 | 139 | if(can1.read(msg)) |
Marcelocostanzo | 0:f45252ccde11 | 140 | { |
Marcelocostanzo | 0:f45252ccde11 | 141 | pc.printf("Mensagem recebida: %x\n", msg.data[0]); |
Marcelocostanzo | 1:dc5aef755b51 | 142 | } |
Marcelocostanzo | 1:dc5aef755b51 | 143 | |
Marcelocostanzo | 1:dc5aef755b51 | 144 | //------Se a mensagem for do tipo UP, então move para cima---- |
Marcelocostanzo | 1:dc5aef755b51 | 145 | if(msg.data[0] == up) |
Marcelocostanzo | 1:dc5aef755b51 | 146 | { |
Marcelocostanzo | 1:dc5aef755b51 | 147 | //move_up(); |
Marcelocostanzo | 1:dc5aef755b51 | 148 | pc.printf("Cima recebida: %x\n", msg_up.data[0]); |
Marcelocostanzo | 0:f45252ccde11 | 149 | lcd.locate(0,0); |
Marcelocostanzo | 1:dc5aef755b51 | 150 | lcd.printf("Cima "); |
Marcelocostanzo | 1:dc5aef755b51 | 151 | } |
Marcelocostanzo | 1:dc5aef755b51 | 152 | |
Marcelocostanzo | 1:dc5aef755b51 | 153 | //------Se a mensagem for do tipo DOWN, então move para baixo---- |
Marcelocostanzo | 1:dc5aef755b51 | 154 | if(msg.data[0] == down) |
Marcelocostanzo | 1:dc5aef755b51 | 155 | { |
Marcelocostanzo | 1:dc5aef755b51 | 156 | //move_down(); |
Marcelocostanzo | 1:dc5aef755b51 | 157 | pc.printf("Baixo recebida: %x\n", msg_down.data[0]); |
Marcelocostanzo | 1:dc5aef755b51 | 158 | lcd.locate(0,0); |
Marcelocostanzo | 1:dc5aef755b51 | 159 | lcd.printf("Baixo "); |
Marcelocostanzo | 1:dc5aef755b51 | 160 | } |
Marcelocostanzo | 1:dc5aef755b51 | 161 | |
Marcelocostanzo | 1:dc5aef755b51 | 162 | //------Se a mensagem for do tipo RIGHT, então move para direita---- |
Marcelocostanzo | 1:dc5aef755b51 | 163 | if(msg.data[0] == right) |
Marcelocostanzo | 1:dc5aef755b51 | 164 | { |
Marcelocostanzo | 1:dc5aef755b51 | 165 | //move_right(); |
Marcelocostanzo | 1:dc5aef755b51 | 166 | pc.printf("Direita recebida: %x\n", msg_right.data[0]); |
Marcelocostanzo | 1:dc5aef755b51 | 167 | lcd.locate(0,0); |
Marcelocostanzo | 1:dc5aef755b51 | 168 | lcd.printf("Direita "); |
Marcelocostanzo | 0:f45252ccde11 | 169 | } |
Marcelocostanzo | 1:dc5aef755b51 | 170 | |
Marcelocostanzo | 1:dc5aef755b51 | 171 | //------Se a mensagem for do tipo LEFT, então move para esquerda---- |
Marcelocostanzo | 1:dc5aef755b51 | 172 | if(msg.data[0] == left) |
Marcelocostanzo | 1:dc5aef755b51 | 173 | { |
Marcelocostanzo | 1:dc5aef755b51 | 174 | //move_left(); |
Marcelocostanzo | 1:dc5aef755b51 | 175 | pc.printf("Esquerda recebida: %x\n", msg_left.data[0]); |
Marcelocostanzo | 1:dc5aef755b51 | 176 | lcd.locate(0,0); |
Marcelocostanzo | 1:dc5aef755b51 | 177 | lcd.printf("Esquerda"); |
Marcelocostanzo | 1:dc5aef755b51 | 178 | } |
Marcelocostanzo | 1:dc5aef755b51 | 179 | |
Marcelocostanzo | 1:dc5aef755b51 | 180 | //------Se a mensagem for do tipo STOP, então para os motores------ |
Marcelocostanzo | 1:dc5aef755b51 | 181 | if(msg.data[0] == stop) |
Marcelocostanzo | 1:dc5aef755b51 | 182 | { |
Marcelocostanzo | 1:dc5aef755b51 | 183 | // move_stop(); |
Marcelocostanzo | 1:dc5aef755b51 | 184 | pc.printf("Parada recebida: %x\n", msg_stop.data[0]); |
Marcelocostanzo | 1:dc5aef755b51 | 185 | lcd.locate(0,0); |
Marcelocostanzo | 1:dc5aef755b51 | 186 | lcd.printf("Stop "); |
Marcelocostanzo | 1:dc5aef755b51 | 187 | } |
Marcelocostanzo | 1:dc5aef755b51 | 188 | |
Marcelocostanzo | 1:dc5aef755b51 | 189 | msg.data[0] = 0x00;//limpa a variavel |
Marcelocostanzo | 1:dc5aef755b51 | 190 | |
Marcelocostanzo | 1:dc5aef755b51 | 191 | wait_ms(200);//controla o envio/recebimento de mensagens |
Marcelocostanzo | 0:f45252ccde11 | 192 | } |
Marcelocostanzo | 0:f45252ccde11 | 193 | } |