comunicaçao CAN com LCD

Dependencies:   mbed TextLCD

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);
+            }
+        }
+    }
+}