116 lines
2.0 KiB
C++
116 lines
2.0 KiB
C++
#include <SPI.h>;
|
|
#include <mcp2515.h>;
|
|
|
|
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);
|
|
|
|
}
|