- Sat Apr 08, 2023 3:19 pm
#57673
#include <mcp_can.h>
#include <SPI.h>
MCP_CAN CAN0(10); // Set CS to pin 10
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
if (CAN0.begin(MCP_ANY, CAN_250KBPS, MCP_8MHZ) == CAN_OK) Serial.println("MCP2515 Initialized Successfully!");
else Serial.println("Error Initializing MCP2515...");
CAN0.setMode(MCP_NORMAL);
}
byte Light=0x01;
byte StartSpeed=0x01;
byte MaxSpeed=40;
byte DirectStart=0x01;
byte dlug[29] = { 8, 8, 8, 8, 7, 7, 8, 8, 2, 8, 2, 8, 8, 8, 8, 4, 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 };
unsigned long IDs[29] = { 0x02181606, 0x03FF1601, 0x03FF1602, 0x02FF2602, 0x05124609, 0x05124609, 0x02203606, 0x04FF3400, 0x05124500, 0x02FF2602, 0x05124501, 0x03FF1500, 0x03FF1501, 0x05124502, 0x05124503, 0x04FF3502, 0x05124504, 0x03FF1502, 0x03FF1503, 0x03FF1504, 0x05124611, 0x04FF3400, 0x02FF2602, 0x05124612, 0x05124613, 0x05124614, 0x03FF1601, 0x03FF1602, 0x03FF1400 };
byte dane[29][8] = {
{ 0x01, StartSpeed, MaxSpeed, DirectStart, 0x01, 0x00, 0x00, 0x01 }, //Motor 1-Enable, 2-Soft/Fast start, 3-Max speed, 4-Push away/direct start
{ 0x6E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0xF2, 0x43, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x98, 0x40, 0xEC, 0xDB, 0x09, 0xD1, 0x69, 0x0B },
{ 0x03, 0x00, 0x03, 0x70, 0x03, 0xE8, 0x00, 0x00 },
{ 0x03, 0x00, 0x03, 0xB8, 0x03, 0xCA, 0x00, 0x00 },
{ 0x01, Light, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00 }, //Display 1-km/h / mph, 2-LED off/on/flash, 3-Reservation (Should be 0), 4-Display on/off, 5-Test display off/on, 6-CHarger off/on
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0xEE, 0xF8, 0xAA, 0xD3, 0x2C, 0x1C, 0xDF, 0x1F },
{ 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00 },
{ 0x52, 0x50, 0x31, 0x33, 0x53, 0x32, 0x30, 0x41 },
{ 0x00, 0x13, 0x09, 0x18, 0x00, 0x00, 0x00, 0x6A },
{ 0x00, 0x6F, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00 },
{ 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x64, 0x25, 0xFA, 0x00, 0x00, 0x21, 0x64 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x27, 0xF0, 0xD7, 0x53, 0x29, 0x3E, 0x33, 0x5B },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x0F, 0x94, 0x05, 0x0F, 0x8C, 0x0A, 0x00, 0x08 },
{ 0x6E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
};
void loop() {
// send data: ID = 0x100, Standard CAN Frame, Data length = 8 bytes, 'data' = array of data bytes to send
for (int i = 0; i < 29; i++) {
byte sndStat = CAN0.sendMsgBuf(IDs, 1, dlug, dane);
if (sndStat == CAN_OK) {
Serial.println(IDs);
} else {
Serial.println("Error Sending Message...");
}
//delay(100);
}
delay(500);
}