#include ; #include ; struct can_frame _frame; MCP2515 mcp2515(10); bool flag = false; void setup() { Serial.begin(9600); SPI.begin(); mcp2515.reset(); mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz mcp2515.setNormalMode(); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(A3, OUTPUT); } int i = 0; bool debugState = false; void SendCanPackage(bool state) { _frame.can_id = 0x001; _frame.can_dlc = 4; _frame.data[0] = 5; _frame.data[1] = state; _frame.data[2] = 0x00; _frame.data[3] = 0x00; mcp2515.sendMessage(&_frame); } void loop() { int analogValue = analogRead(A3); if (analogValue > 756 && !debugState) { debugState = true; SendCanPackage(debugState); } if (analogValue < 300 && debugState) { debugState = false; SendCanPackage(debugState); } if (mcp2515.readMessage(&_frame) == MCP2515::ERROR_OK) { int meyPinId = _frame.data[0]; int state = _frame.data[1] > 0; Serial.println("CAN FRAME ------------"); Serial.print("0x"); Serial.println( _frame.can_id ^ CAN_EFF_FLAG, HEX); Serial.println( _frame.can_dlc); for (int i = 0; i < _frame.can_dlc ; i++) { Serial.println( _frame.data[i], HEX); } Serial.println("----------------------"); if (meyPinId == 1) { digitalWrite(2, state); } if (meyPinId == 2) { digitalWrite(3, state); } if (meyPinId == 3) { digitalWrite(4, state); } if (meyPinId == 4) { digitalWrite(5, state); } if (meyPinId == 5) { digitalWrite(6, state); } if (meyPinId == 6) { digitalWrite(7, state); } if (meyPinId == 7) { digitalWrite(8, state); } if (meyPinId == 8) { digitalWrite(9, state); } } delay(20); }