Hello,
i have a LCD screen 7" with a shield that work fine alone i can do everything i want on a Mega
and on that screen i want to print can datas.
but after wire opening the can bus fail.
I think this is because of CS MISO MOSI etc
i'm new at lcd but i know a little about can bus maybe i didn't understood something
Here's my code
#include <UTFT.h>
#include <mcp_can.h>
#include <SPI.h>
UTFT ECR(CTE70,38,39,40,41); //7" TFTLCD for arduino 2560
#define CAN0_INT 18 // Set INT to pin 18 // 2 utilise ecran
MCP_CAN CAN0(10); // Set CS to pin 10
#define DATA_DISPO !digitalRead(CAN0_INT)
// Declare which fonts we will be using
extern uint8_t BigFont[];
char trame_1C7[4];
char trame_4F7[8];
char trame_428[8];
char trame_42F[2];
char trame_155[8];
char trame_423[8];
char trame_157[8];
char trame_435[8];
char all[50];
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128]; // Array to store serial string
void setup() {
ECR.InitLCD();
ECR.clrScr();
ECR.setFont(BigFont);
ECR.setBackColor(0, 0, 255);
Serial.begin(2000000);
Serial.println("OK");
if(CAN0.begin(MCP_ANY, CAN_250KBPS, MCP_16MHZ) == CAN_OK)
Serial.println("MCP2515 Initialized Successfully!");
else
Serial.println("Error Initializing MCP2515...");
CAN0.setMode(MCP_LISTENONLY); // Set operation mode to normal so the MCP2515 sends acks to received data.
pinMode(CAN0_INT, INPUT); // Configuring pin for /INT input
}
void loop() {
if(DATA_DISPO){
CAN0.readMsgBuf(&rxId, &len, rxBuf);
ECR.clrScr();
CAN_Ges_received_messages(rxId);
aff_trame();
}
}
void aff_trame(){
memset(all,'\0',50); // met le tableau afficher a la fin a \0
char tmp[20];
char res[50];
memset(res,'\0',50);
memset(tmp,'\0',20);
/***********************************************************/
/* 1C7 */
/***********************************************************/
sprintf(all,"0x1C7");
sprintf(all,"%s %d",all,sizeof(trame_1C7));
for(int i = 0; i < sizeof(trame_1C7); i++)
{
sprintf(tmp,"%2x",trame_1C7[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,10); // et on affiche
/***********************************************************/
/* 4F7 */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x4F7");
sprintf(all,"%s %d",all,sizeof(trame_4F7));
for(int i = 0; i < sizeof(trame_4F7); i++)
{
sprintf(tmp,"%2x",trame_4F7[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,40); // et on affiche
/***********************************************************/
/* 428 */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x428");
sprintf(all,"%s %d",all,sizeof(trame_428));
for(int i = 0; i < sizeof(trame_428); i++)
{
sprintf(tmp,"%2x",trame_428[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,70); // et on affiche
/***********************************************************/
/* 42F */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x42F");
sprintf(all,"%s %d",all,sizeof(trame_42F));
for(int i = 0; i < sizeof(trame_42F); i++)
{
sprintf(tmp,"%2x",trame_42F[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,100); // et on affiche
/***********************************************************/
/* 155 */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x155");
sprintf(all,"%s %d",all,sizeof(trame_155));
for(int i = 0; i < sizeof(trame_155); i++)
{
sprintf(tmp,"%2x",trame_155[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,130); // et on affiche
/***********************************************************/
/* 423 */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x423");
sprintf(all,"%s %d",all,sizeof(trame_423));
for(int i = 0; i < sizeof(trame_423); i++)
{
sprintf(tmp,"%2x",trame_423[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,160); // et on affiche
/***********************************************************/
/* 157 */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x157");
sprintf(all,"%s %d",all,sizeof(trame_157));
for(int i = 0; i < sizeof(trame_157); i++)
{
sprintf(tmp,"%2x",trame_157[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,190); // et on affiche
/***********************************************************/
/* 435 */
/***********************************************************/
memset(all,'\0',sizeof(all)); // met le tableau afficher a la fin a \0
memset(res,'\0',sizeof(res));
memset(tmp,'\0',sizeof(tmp));
sprintf(all,"0x435");
sprintf(all,"%s %d",all,sizeof(trame_435));
for(int i = 0; i < sizeof(trame_435); i++)
{
sprintf(tmp,"%2x",trame_435[i]); // en hexa
sprintf(res,"%s|0x%s",res,tmp); // concatene
}
sprintf(all,"%s %s",all,res); // on concat les 2 chaines pour faire le resultat
ECR.print(String(all),LEFT,220); // et on affiche
}
void CAN_Ges_received_messages(long unsigned int id_msg)
{
int i;
switch (id_msg)
{
case 0x1C7:
for(i=0;i<4;i++) trame_1C7[i] = rxBuf[i];
break;
case 0x428:
for(i=0;i<8;i++) trame_428[i]=rxBuf[i];
break;
case 0x42F:
for(i=0;i<2;i++) trame_42F[i]=rxBuf[i];
break;
case 0x4F7:
for(i=0;i<8;i++) trame_4F7[i]=rxBuf[i];
break;
case 0x435:
for(i=0;i<8;i++) trame_435[i]=rxBuf[i];
break;
case 0x423:
for(i=0;i<8;i++) trame_423[i]=rxBuf[i];
break;
case 0x155:
for(i=0;i<8;i++) trame_155[i]=rxBuf[i];
break;
case 0x157:
for(i=0;i<8;i++) trame_157[i]=rxBuf[i];
break;
}
}
thanks if you can help me
GrandLCDEtCan.ino (8.38 KB)