#include <mcp_can.h>
#include <SPI.h>
#define ID_PART0 0x28F
#define ID_PART1 0x290
#define ID_PART2 0x291
MCP_CAN CANcar(10);
MCP_CAN CANdsp(9);
// Set CS to pin 10
void setup()
{
Serial.begin(115200);
/*
START_INIT:
if(CAN_OK == CAN.begin(CAN_125KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
*/
CANcar.begin(CAN_125KBPS);
CANdsp.begin(CAN_125KBPS);
}
unsigned char myStr1[8] = {
0xC0, 'H', 'e', 'l', 'l', 'o', ' ', 'c'};
unsigned char myStr2[8] = {
0x87, 'a', 'r', ' ', ' ', ' ', ' ', ' '};
unsigned char myStr3[8] = {
0xC0, 'H', 'e', 'l', 'l', 'o', ' ', 'd'};
unsigned char myStr4[8] = {
0x87, 'i', 's', 'p', ' ', ' ', ' ', ' '};
unsigned char stmp[8] = {0xD1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01};
void loop()
{
// send data: id = 0x00, standrad flame, data len = 8, stmp: data buf
CANdsp.sendMsgBuf(ID_PART0, 0, 8, stmp);
CANdsp.sendMsgBuf(ID_PART1, 0, 8, myStr3);
CANdsp.sendMsgBuf(ID_PART2, 0, 8, myStr4);
CANcar.sendMsgBuf(ID_PART0, 0, 8, stmp);
CANcar.sendMsgBuf(ID_PART1, 0, 8, myStr1);
CANcar.sendMsgBuf(ID_PART2, 0, 8, myStr2);
delay(100); // send data per 100ms
}
Удачи!
P.S. "на столе" резистор в 120Ом к дисплею подключать обязательно (без него не заведется). Ну и проверить, что подключаешься именно к CAN-шине дисплея (и не путаешь полярность). "Земли" должны быть общие + еще два провода на CAN.
Сообщение отредактировал ustas: 26 May 2017 - 23:31