на рисунке вообще ничего не видно. возможно не весь скетч скопировали - скобку забыли или нечаяно в уже скопипащенном поправили чёто. Все должно компилироваться, чудес не бывает, тем более при снятии видео очередной раз проверил.
на рисунке вообще ничего не видно. возможно не весь скетч скопировали - скобку забыли или нечаяно в уже скопипащенном поправили чёто. Все должно компилироваться, чудес не бывает, тем более при снятии видео очередной раз проверил.
Действительно картинка по дурацки закрузилась.
Перезалил.
Я уже неоднократно пробовал этот код.
Всегда эта ошибка.
Я уже начал думать что проблема скорее всего в моем ДНК. Чтобы эту проверить, перегружаю 2 компа, на них IDE 8 и 6 стоит, ни че по итогу не компилиться. С этой информацией пришел домй, взял вшатанный и еле живой ноут.
И на нем все компилится.
Как мне теперь теперь с этим жить))))
В понедельник его притащу на работу и попробую в связке с железом.
[Ага, с твоей строчкой все компилится на всех машинах и версиях.
Пожалуйста!
Ошибка известная. По правилам С/С++ каждая процедура и функция должна быть обьявлена до первого использования. А в вашем коде описание handleError() находится после loop(), где эта функция вызывается. Можно было просто переставить всю функцию handleError выше loop(), но иногда это невозможно. Проще добавить предварительное обьявление функции - эту самую строчку.
В некоторых версиях Ардуино ИДЕ добавляет такие обьявления сама, за пользователя, в других выдает ошибку - поэтому в некоторых версиях код компилировался, в некоторых нет.
спасибо за ликбез, я этого не знал. нужно всё таки найти время почитать умные книжки по программированию. 127486 отпишись как канхакер на ардуино будет на машине работать. Будут ли приниматься все пакеты. А то у меня при подключении к реальной шине на автомобиле, пакеты принимались не все - многие терялись.
спасибо за ликбез, я этого не знал. нужно всё таки найти время почитать умные книжки по программированию. 127486 отпишись как канхакер на ардуино будет на машине работать. Будут ли приниматься все пакеты. А то у меня при подключении к реальной шине на автомобиле, пакеты принимались не все - многие терялись.
Ну к самой машине я могу гдето через недельку подключиться.
А так у меня панель приборов лежит для этого и ЭБУ, все читаеться.
Всем доброго времени суток!!! Вопрос пока больше теоретический. В общем на столе мучаю штатный блок управления с авто. И столкнулся с интересной задачей. Значит имею ардуино+mcp2515. Реально ли в скетче настроить фильтр таким образом что бы изменялся только ID а данные как есть отправлялись обратно в can шину. То есть к примеру от бу к ардуино идёт пакет с ID 123 2 FD FC, ардуино его принимает и обратно уже отправляет ID 456 2 FD FC, то есть сами данные FD FC в сообщении транслируются как есть. Эти данные FD FC динамические, могут меняться.
Вопрос пока что в том реально так сделать или нет?
Это нужно для того что бы одна из функций бу работала, типо некой петли данных. Просто до компа в ближайшие день, два, не добраться, а мысль очень мучает.
Спасибо, понял буду пробовать. Просто для меня понятно как задавать сообщения кан допустим при нажатии на кнопки, а тут чтобы считывать и обратно эти значения отправлять как то сложновато. Но буду пробовать, а там видно будет.
берёте два примера из библиотеки read и write , соединяете эти два скетча. Немного поправив : при получении сообщения правите ID и тут же отправляете .
Помогите в таком моменте: я использую arduino nano и mcp2515 (8 МГц). Удалил все библиотеки, поставил из 236 сообщения. Заливаю скетч из №240 сообщения. Данные идут. Хочу загнать их в canhacker. Заливаю скетч из 248 сообщения - тишина.
берёте два примера из библиотеки read и write , соединяете эти два скетча. Немного поправив : при получении сообщения правите ID и тут же отправляете .
Спасибо, сегодня наверное доберусь до компа буду пробовать!!!
вобщем эксперементировал с canhacker и одной ардуинкой на передатчике с скечем CAN_write из библиатеки. кварц 8 Мгц. библиатеки и скеч canhacker взяты из #3. Короче результаты такие
при
void loop()
{
mcp2515.sendMessage(&canMsg1);delay(1);
}
canhacker не фига не ловит,
при
mcp2515.sendMessage(&canMsg1);delay(2);
иногда при соединении че то хватает
при
mcp2515.sendMessage(&canMsg1);delay(3);
прием идет нормально при скоростях 100 500 1000 KBPS
думаю причина как говорил MaksVV в #12
<<другой вопрос если кан шина сильно нагружена, то ардуина может не успевать принимать и/или отправлять все сообщения. Т.е. могут быть пропуски сообщений , особенно на скоростях 500 кбит/с. Слабоват для этого МК ардуино. Такие вещи обычно на STM32 собирают. Но надо пробовать, может и дуня справится >>
ну бомбить в шину раз 1мс это моветон. А то, что при сниффе реальной шины 500 кбит/с в автомобиле ардуино_канхакером есть пропуски, это да, проверено.
повторяю. ардуино_канхакер идеально подходит для анализа собственной кан шины, аля умный дом и прочее. Для работы с автомобилем лучше использовать stm32 или уже готовые варианты анализаторов шины (я их выше приводил).
берёте два примера из библиотеки read и write , соединяете эти два скетча. Немного поправив : при получении сообщения правите ID и тут же отправляете .
В общем попробовал соединить два примера Can "read и write", но так как нуб у меня не получилось так как нужно мне. при отправки в кан ардуинки любого фрейма она отвечает мне в обратку фреймом с нужным мне ID но с данными во фрейме 00(321 8 00 00 00 00 00 00 00 00). а мне необходимо что бы ардуино из всего потока в кан шине реагировала только на один ID(к примеру 123 8 ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ), и данные их этого пакета отправляла обратно в кан шину с другим ID(к примеру 321 8 ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ). я понимаю что что то не дописал в скетче, только не хватает знаний что бы понять что именно. посмотрите пожалуйста скетч, ткните нососм что не так сделал.
В общем фактически получилось то что мне нужно. но есть один момент. Сообщение в кан с нужным мне ID от ардуино поступает постоянно с периодом в 1мс, а не тогда когда к нему приходит нужное сообщение, и не важно получило оно нужное сообщение или нет. А если получает то данные в сообщении транслирует исправно. пробовал создать условие но получается каша и ни чего не работает.
это рабочий скетч, где постоянно идут сообщения от ардуино
Доброго времени суток.
На данный момент с помощью Arduino nano, CAN_MCP2515 и Canhacker удается принимать и посылать информацию на машину. Но я хочу без Canhacker отправить одинаковые сообщения, нашёл скетч, но не полный, то есть не видно что в начале кода написано)) Может у кого есть подобный скетч?
Доброго времени суток. На данный момент с помощью Arduino nano, CAN_MCP2515 и Canhacker удается принимать и посылать информацию на машину. Но я хочу без Canhacker отправить одинаковые сообщения, нашёл скетч, но не полный, то есть не видно что в начале кода написано)) Может у кого есть подобный скетч?
При вставке кода вкладка "Дополнительно" - "Сворачивать код по умолчанию"
Но для кода в 30 строк это не актуально
Спасибо!
Вот что пишет при проверке кода
Arduino: 1.8.10 (Windows 10), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"
C:\Users\Nosferatu\Desktop\My_ODO_Sketch\My_ODO_Sketch.ino: In function 'void setup()':
My_ODO_Sketch:6:6: error: 'CAN0' was not declared in this scope
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
^~~~
C:\Users\Nosferatu\Desktop\My_ODO_Sketch\My_ODO_Sketch.ino:6:6: note: suggested alternative: 'CAL0'
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
^~~~
CAL0
My_ODO_Sketch:6:17: error: 'MCP_ANY' was not declared in this scope
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
^~~~~~~
My_ODO_Sketch:6:26: error: 'CAN_500KBPS' was not declared in this scope
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
^~~~~~~~~~~
My_ODO_Sketch:6:39: error: 'MCP_8MHZ' was not declared in this scope
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
^~~~~~~~
My_ODO_Sketch:6:52: error: 'CAN_OK' was not declared in this scope
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
^~~~~~
My_ODO_Sketch:11:3: error: 'CAN0' was not declared in this scope
CAN0.setMode(MCP_NORMAL);
^~~~
C:\Users\Nosferatu\Desktop\My_ODO_Sketch\My_ODO_Sketch.ino:11:3: note: suggested alternative: 'CAL0'
CAN0.setMode(MCP_NORMAL);
^~~~
CAL0
My_ODO_Sketch:11:16: error: 'MCP_NORMAL' was not declared in this scope
CAN0.setMode(MCP_NORMAL);
^~~~~~~~~~
C:\Users\Nosferatu\Desktop\My_ODO_Sketch\My_ODO_Sketch.ino: At global scope:
My_ODO_Sketch:16:1: error: expected ',' or ';' before 'void'
void loop()
^~~~
exit status 1
'CAN0' was not declared in this scope
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Спасибо! Кажется получается)), но теперь пишет error: expected ',' or ';' before 'void'
Arduino: 1.8.10 (Windows 10), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"
Can_Send:23:1: error: expected ',' or ';' before 'void'
void loop()
^~~~
Несколько библиотек найдено для "SPI.h"
Используется: C:\Program
Несколько библиотек найдено для "mcp_can.h"
Используется: C:\Users\Nosferatu\Documents\Arduino\libraries\arduino-can-bus-library-master
exit status 1
expected ',' or ';' before 'void'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
ставил ; после byte data[8] = {0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, теперь без ошибок, теперь надо проверить. Спасибо!
Но мне не понятно вот эти данные byte data[8] = {0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
У меня данные например ID 3E9, DLC 8, DATA 04 2E 05 09 00 00 00 00.
потом засниму видео последовательность действий. Ну блин чудес то не бывает. Специально на другом компьютере попробую.
настройка КанХакера.
Спасибо за видюху. Но при компилляции у меня выдает вот такую ошибку((
на рисунке вообще ничего не видно. возможно не весь скетч скопировали - скобку забыли или нечаяно в уже скопипащенном поправили чёто. Все должно компилироваться, чудес не бывает, тем более при снятии видео очередной раз проверил.
на рисунке вообще ничего не видно. возможно не весь скетч скопировали - скобку забыли или нечаяно в уже скопипащенном поправили чёто. Все должно компилироваться, чудес не бывает, тем более при снятии видео очередной раз проверил.
Действительно картинка по дурацки закрузилась.
Перезалил.
Я уже неоднократно пробовал этот код.
Всегда эта ошибка.
давайте весь код сюда, ктото из нас лукавит)) версию иде и какая у вас ардуино. а то щас выяснится что вавгат или леонардо например.
давайте весь код сюда, ктото из нас лукавит)) версию иде и какая у вас ардуино. а то щас выяснится что вавгат или леонардо например.
Ардуинка Nano. Также пробовал на Due и Mega.
я хз , у меня все компилируется. версия arduino IDE ? комп перезагрузите
127486 - вставьте на строчку 21 ( перед началом процедуры setup() )
Я уже начал думать что проблема скорее всего в моем ДНК. Чтобы эту проверить, перегружаю 2 компа, на них IDE 8 и 6 стоит, ни че по итогу не компилиться. С этой информацией пришел домй, взял вшатанный и еле живой ноут.
И на нем все компилится.
Как мне теперь теперь с этим жить))))
В понедельник его притащу на работу и попробую в связке с железом.
Всем спасибо за помощь.
Отличных выходных .
Вы мою строчку добавили? С ней все должно компилится на любом компе.
Проблема выеденного яйца не стоит :)
127486 - вставьте на строчку 21 ( перед началом процедуры setup() )
Ага, с твоей строчкой все компилится на всех машинах и версиях.
Спасибо добрый человек.
Урааааааааа.
Все работает.
Всем спасибо.
[Ага, с твоей строчкой все компилится на всех машинах и версиях.
Пожалуйста!
Ошибка известная. По правилам С/С++ каждая процедура и функция должна быть обьявлена до первого использования. А в вашем коде описание handleError() находится после loop(), где эта функция вызывается. Можно было просто переставить всю функцию handleError выше loop(), но иногда это невозможно. Проще добавить предварительное обьявление функции - эту самую строчку.
В некоторых версиях Ардуино ИДЕ добавляет такие обьявления сама, за пользователя, в других выдает ошибку - поэтому в некоторых версиях код компилировался, в некоторых нет.
спасибо за ликбез, я этого не знал. нужно всё таки найти время почитать умные книжки по программированию. 127486 отпишись как канхакер на ардуино будет на машине работать. Будут ли приниматься все пакеты. А то у меня при подключении к реальной шине на автомобиле, пакеты принимались не все - многие терялись.
спасибо за ликбез, я этого не знал. нужно всё таки найти время почитать умные книжки по программированию. 127486 отпишись как канхакер на ардуино будет на машине работать. Будут ли приниматься все пакеты. А то у меня при подключении к реальной шине на автомобиле, пакеты принимались не все - многие терялись.
Ну к самой машине я могу гдето через недельку подключиться.
А так у меня панель приборов лежит для этого и ЭБУ, все читаеться.
Блин, а по юсб с канхакером не работает, вечером гляну какой драйвер подхватывает
Пысы
Сегодня заработал и канхакер, правда не спервой попытки
какую прошивку используешь?
5-ю
Всем доброго времени суток!!! Вопрос пока больше теоретический. В общем на столе мучаю штатный блок управления с авто. И столкнулся с интересной задачей. Значит имею ардуино+mcp2515. Реально ли в скетче настроить фильтр таким образом что бы изменялся только ID а данные как есть отправлялись обратно в can шину. То есть к примеру от бу к ардуино идёт пакет с ID 123 2 FD FC, ардуино его принимает и обратно уже отправляет ID 456 2 FD FC, то есть сами данные FD FC в сообщении транслируются как есть. Эти данные FD FC динамические, могут меняться.
Вопрос пока что в том реально так сделать или нет?
Это нужно для того что бы одна из функций бу работала, типо некой петли данных. Просто до компа в ближайшие день, два, не добраться, а мысль очень мучает.
конечно реально, только это не фильтром делается. Принимаете пакет, меняете ID. отправляете обратно.
Спасибо, понял буду пробовать. Просто для меня понятно как задавать сообщения кан допустим при нажатии на кнопки, а тут чтобы считывать и обратно эти значения отправлять как то сложновато. Но буду пробовать, а там видно будет.
берёте два примера из библиотеки read и write , соединяете эти два скетча. Немного поправив : при получении сообщения правите ID и тут же отправляете .
Здравствуйте!
Помогите в таком моменте: я использую arduino nano и mcp2515 (8 МГц). Удалил все библиотеки, поставил из 236 сообщения. Заливаю скетч из №240 сообщения. Данные идут. Хочу загнать их в canhacker. Заливаю скетч из 248 сообщения - тишина.
В чем может быть дело?
данные идут откуда и куда? В программе кан хакер точно все настройки правильные ? видео смотрели #351?
за видео огромное спасибо. дело оказалось в галочке listen only. почему-то она дурно влияет на отображение данных.
берёте два примера из библиотеки read и write , соединяете эти два скетча. Немного поправив : при получении сообщения правите ID и тут же отправляете .
Спасибо, сегодня наверное доберусь до компа буду пробовать!!!
вобщем эксперементировал с canhacker и одной ардуинкой на передатчике с скечем CAN_write из библиатеки. кварц 8 Мгц. библиатеки и скеч canhacker взяты из #3. Короче результаты такие
при
void loop()
{
mcp2515.sendMessage(&canMsg1);delay(1);
mcp2515.sendMessage(&canMsg1);delay(2);
иногда при соединении че то хватает
при
<<другой вопрос если кан шина сильно нагружена, то ардуина может не успевать принимать и/или отправлять все сообщения. Т.е. могут быть пропуски сообщений , особенно на скоростях 500 кбит/с. Слабоват для этого МК ардуино. Такие вещи обычно на STM32 собирают. Но надо пробовать, может и дуня справится >>
похоже не справляется
ну бомбить в шину раз 1мс это моветон. А то, что при сниффе реальной шины 500 кбит/с в автомобиле ардуино_канхакером есть пропуски, это да, проверено.
повторяю. ардуино_канхакер идеально подходит для анализа собственной кан шины, аля умный дом и прочее. Для работы с автомобилем лучше использовать stm32 или уже готовые варианты анализаторов шины (я их выше приводил).
Макс на stm32 проэкты канхакера кинь ссылку пожалуйста, уже 4 часа перед компом... в глазах рябит блин
эммм, нету такого. я не встречал в открытых проектах, только покупать готовое устройство
ясно, спасибо за инфу
Макс а ты это встречал https://habr.com/ru/post/256493/ и это https://www.drive2.ru/c/486832413771563406/
и это обязательно посмотри https://github.com/TheRo0T/CAN-USB-STM32/blob/master/STM32F105/SW4STM32/STM32F105%20Configuration/Application/User/canhacker.c
берёте два примера из библиотеки read и write , соединяете эти два скетча. Немного поправив : при получении сообщения правите ID и тут же отправляете .
В общем попробовал соединить два примера Can "read и write", но так как нуб у меня не получилось так как нужно мне. при отправки в кан ардуинки любого фрейма она отвечает мне в обратку фреймом с нужным мне ID но с данными во фрейме 00(321 8 00 00 00 00 00 00 00 00). а мне необходимо что бы ардуино из всего потока в кан шине реагировала только на один ID(к примеру 123 8 ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ), и данные их этого пакета отправляла обратно в кан шину с другим ID(к примеру 321 8 ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ). я понимаю что что то не дописал в скетче, только не хватает знаний что бы понять что именно. посмотрите пожалуйста скетч, ткните нососм что не так сделал.
между строками 41 и 42 вставить canMsg1.can_id = 0x321;
в строке 42 canMsg2 исправить на canMsg1.
Убрать всё, что касается canMsg2
между строками 41 и 42 вставить canMsg1.can_id = 0x321;
в строке 42 canMsg2 исправить на canMsg1.
Убрать всё, что касается canMsg2
Спасибо большое!!! Сегодня попробую!!!
MaksVV
В общем фактически получилось то что мне нужно. но есть один момент. Сообщение в кан с нужным мне ID от ардуино поступает постоянно с периодом в 1мс, а не тогда когда к нему приходит нужное сообщение, и не важно получило оно нужное сообщение или нет. А если получает то данные в сообщении транслирует исправно. пробовал создать условие но получается каша и ни чего не работает.
это рабочий скетч, где постоянно идут сообщения от ардуино
подскажите пожалуйста как создать условие что бы ардуино отправляла сообщение 321 только тогда когда она приняло сообщение 123
MaksVV, Спасибо огромное, от души!!! Работает супер. Доберусь до блока буду пробовать)))
Доброго времени суток.
На данный момент с помощью Arduino nano, CAN_MCP2515 и Canhacker удается принимать и посылать информацию на машину. Но я хочу без Canhacker отправить одинаковые сообщения, нашёл скетч, но не полный, то есть не видно что в начале кода написано)) Может у кого есть подобный скетч?
Как здесь спрятать код?
Как здесь спрятать код?
При вставке кода вкладка "Дополнительно" - "Сворачивать код по умолчанию"
Но для кода в 30 строк это не актуально
Как здесь спрятать код?
При вставке кода вкладка "Дополнительно" - "Сворачивать код по умолчанию"
Но для кода в 30 строк это не актуально
Спасибо!
Вот что пишет при проверке кода
Вместо библиотеки mcp2515.h поставьте mcp_can.h
Если сказать коротка, хочу отправить данные в формате ID XXX, DLC 8, DATA XX XX XX XX XX XX XX XX, Period XXX.
Вместо библиотеки mcp2515.h поставьте mcp_can.h
Спасибо! Кажется получается)), но теперь пишет error: expected ',' or ';' before 'void'
ставил ; после byte data[8] = {0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, теперь без ошибок, теперь надо проверить. Спасибо!
Но мне не понятно вот эти данные byte data[8] = {0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
Как правильно вводить? Вот так можно?
Как правильно вводить? Вот так можно?
да. можно. Мож вам книжку какую прочитать по программировани.? - а то больно уж вопросы детские
Так нужно.
MaksVV, можно к вам ещё раз обратиться за помощью?
Тот скетч который вы ранее для меня написали работает просто супер, огромное спасибо за него!!!