comunicaçao CAN com LCD

Dependencies:   mbed TextLCD

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?

UserRevisionLine numberNew 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 }