Назад к списку

ARDUINO + MCP2515 работаем с CAN шиной чтение и обработка данных

Здравствуйте. сегодня мы с вами разберем простой пример программы на С++ написанной через IDE для ARDUINO, в качестве драйвера CAN шины используется MCP2515


Выше для вашего внимания указан схема подключения и монтажа, если что будите менять в схеме то, это уже на свой страх и риск.

Ниже приведен очень простой код программы, который позволяет нам работать с CAN шиной и данными которые идут из CAN шины, точнее из OBD II разъема.

#include <mcp2515.h> // Подключаем библиотеку mcp2515

#define led 8 // Указываем какому выводу подключен светодиод

struct can_frame canMsg; //Указываем структуру CAN пакета

MCP2515 mcp2515(10); //Куда подключаем модуль MCP2615

void setup()

{ Serial.begin(115200); // Открываем последовательную связь

pinMode(led, OUTPUT); // Устанавливаем вывод, как выход

digitalWrite(led, HIGH); // Включаем подтягивающий резистор

mcp2515.reset(); // Перегружаем mсp2515

mcp2515.setBitrate(CAN_125KBPS); //Выставляем скорость работы  125.000 бит

mcp2515.setNormalMode();

}

void loop() {

 if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) //Есть есть сообщение из CAN шины

{

if(canMsg.can_id == 0x0F6) //сравниваем ID кадра, который ходим принять и если он совпадает достаем данные из массива

{

int x = canMsg.data[0]; Читаем данные  из 0 байта массива структуры  кадра

Serial.println(x); //Выводим в монитор порта

if (x == 0x10) // Если пришло 0x10 то мы включаем светодиод

{

digitalWrite(led, HIGH);

Serial.println("ON");

}

if (x == 0x20) // Если пришло 0x20 то мы выключаем светодиод

{

digitalWrite(led, LOW);

Serial.println("OFF");

}
}

delay(200); 

}

}

}

не совсем удобно читать, но надеюсь вам все понятно и пример хорош.

Пример довольно простой, и мы можем работать данные как в DEC, так и в HEX. Если вам нужно работать в ASCII то вам нужноприбавться перед выводом в Serial порт 0x30.



Поиск информации по сайту мониторинга транспорта TREKBERRY
© TREKBERRY 2017-2024, Дмитрий В.М. Все права защищены.
Копирование материала без ссылки на источник запрещено. Информация размещенная на сайте не является публичной офертой. Часть текстов написано нейросетью, может содержать не точности. На сайте может быть реклама и иметь рекламные вставки.