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

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, Дмитрий В.М. Все права защищены.
Копирование материала без ссылки на источник запрещено. Информация размещенная на сайте не является публичной офертой. Часть текстов написано нейросетью, может содержать не точности.