Sz_Insper
/
Can_between_NUCLEOS_LCD
comunicaçao CAN com LCD
Diff: main.cpp
- Revision:
- 0:f45252ccde11
- Child:
- 1:dc5aef755b51
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 26 17:00:45 2020 +0000 @@ -0,0 +1,89 @@ +#include "mbed.h" +#include "TextLCD.h" + +TextLCD lcd(D8, D9, D4, D5, D6, D7); // rs, e, d4-d7 + +//-------Declara uso da serial--------------------- +Serial pc(USBTX, USBRX); // tx, rx + +//--------Declara uso da CAN---------------------- +CAN can1(PB_8, PB_9); + +//--------Declara uso do LED nativo da placa------ +DigitalOut LED(PA_5); + +//-----Declara uso do botao nativo da placa-------- +DigitalIn SW(PC_13); + +//------Dado da mensagem chamada de info que sera usada--------------- +static char info = 0x55; + +int main() +{ + lcd.setCursor(TextLCD::CurOff_BlkOff); + lcd.cls(); + + //------construção da mensagem CAN (ID, dado, tamanho em bits, Tipo de dado, Modo CAN)--- + CANMessage msg(5, &info, 8, CANData, CANStandard); + + //pisca o led + LED = 1; + wait(0.5); + LED = 0; + wait(0.5); + + //---boas vindas------------ + pc.printf("Ola!!!\n"); + lcd.locate(0,0); + lcd.printf("Ola!!!"); + + while(1) + { + //---checa se foi apertado o botão, com debounce + if(SW == 0) + { + wait_ms(200); + if(SW == 0) + { + //se a mensagem foi enviada + if(can1.write(msg)) + { + lcd.cls(); + pc.printf("Mensagem enviada\n"); + lcd.locate(0,0); + lcd.printf("Msg enviada"); + } + + //se a mensagem nao foi enviada + else + { + lcd.cls(); + pc.printf("Mensagem NAO enviada\n"); + lcd.locate(0,0); + lcd.printf("Msg NAO enviada"); + } + } + } + + //se a mensagem for recebida + if(can1.read(msg)) + { + lcd.cls(); + //printa o valor da mensagem + pc.printf("Mensagem recebida: %x\n", msg.data[0]); + lcd.locate(0,0); + lcd.printf("Mensagem recebida"); + lcd.locate(0,1); + lcd.printf("%x\n", msg.data[0]); + + //pisca o led + for(int i = 0; i < 5; i++) + { + LED = 1; + wait_ms(300); + LED = 0; + wait_ms(300); + } + } + } +}