<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
		<id>https://wiki.tntu.edu.ua/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Natalya+yakubiv</id>
		<title>Wiki ТНТУ - Внесок користувача [uk]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.tntu.edu.ua/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Natalya+yakubiv"/>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/%D0%A1%D0%BF%D0%B5%D1%86%D1%96%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0:%D0%92%D0%BD%D0%B5%D1%81%D0%BE%D0%BA/Natalya_yakubiv"/>
		<updated>2026-04-05T19:39:12Z</updated>
		<subtitle>Внесок користувача</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23023</id>
		<title>Модуль CAN-BUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23023"/>
				<updated>2017-06-05T16:19:10Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вступ ==&lt;br /&gt;
CAN-BUS є одна з найбільш поширених промислових шин  , через  можливість передачі на велику відстань , високу  швидкість зв'язку та високий ступінь надійності. Він широко використовується в якості автомобільної діагностичної шини, а також на сучасних верстатах. CAN-Bus використовує Microchip MCP2515 CAN контролер з MCP2551 CAN трансивер, з'єднання CAN здійснюється через стандартний 9-смуговий SUB-D для використання з кабелем OBD-II, він ідеально підходить для автомобільного CAN застосування.Shield  також має вхід карти Micro SD, який дозволяє зберігати діагностичну інформацію в SD-карті безпосередньо, що робить цей Shield придатним  для застосування реєстрації даних. &amp;lt;br&amp;gt;&lt;br /&gt;
'' 'Модель: [http://www.elecrow.com/canbus-shield-p-1133.html AS54887CAN]' '' &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield1.jpg | 400px | CAN-BUS Shield1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Особливості ==&lt;br /&gt;
&lt;br /&gt;
* Arduino Mega і Leonardo сумісний&lt;br /&gt;
* Реалізує CAN V2.0B зі швидкістю до 1 Мбіт / с&lt;br /&gt;
* SPI інтерфейс до 10 МГц&lt;br /&gt;
* Стандартні (11 біт) і розширені (29 біт) данневі і віддалені кадри&lt;br /&gt;
* Два буфера прийому з пріоритетним зберіганням повідомлень&lt;br /&gt;
* Стандартний роз'єм Sub-D 9&lt;br /&gt;
* Два світлодіодних індикатора&lt;br /&gt;
Вхід SD карти для зберігання інформації&lt;br /&gt;
&lt;br /&gt;
== Використання ==&lt;br /&gt;
&lt;br /&gt;
=== Установка устаткування ===&lt;br /&gt;
&lt;br /&gt;
Підключіть CAN-BUS Shield на Arduino.And перш ніж підключати Arduino до комп'ютера за допомогою кабелю USB. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield_connect.jpg | 400px | CAN-BUS Shield .jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завантажити програму ===&lt;br /&gt;
&lt;br /&gt;
1. Завантажити [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0] і запустити його в бібліотеках файлу в Arduino-1.0 програма.: .. \ Arduino-1.0 \ libraries.&lt;br /&gt;
&lt;br /&gt;
Якщо ім'я папки включають «-master», просто видаліть його.&lt;br /&gt;
&lt;br /&gt;
2. Відкрийте Arduino-1,0, в ньому знаходиться 8 прикладів: receive_check ,send and receive_interrupt and so on. send and receive_check  &lt;br /&gt;
[[Image:Open_CAN_BUS_examples_receive.jpg|400px]]&lt;br /&gt;
[[Image:Open_CAN_BUS_examples_send.jpg|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.1 Код програми:&lt;br /&gt;
// demo: CAN-BUS Shield, send data&lt;br /&gt;
#include &amp;lt;mcp_can.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf&lt;br /&gt;
    CAN.sendMsgBuf(0x00, 0, 8, stmp);&lt;br /&gt;
    delay(100);                       // send data per 100ms&lt;br /&gt;
}&lt;br /&gt;
2.2 Receive data&lt;br /&gt;
// demo: CAN-BUS Shield, receive data with check mode&lt;br /&gt;
// send data coming to fast, such as less than 10ms, you can use this way&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;quot;mcp_can.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    unsigned char len = 0;&lt;br /&gt;
    unsigned char buf[8];&lt;br /&gt;
&lt;br /&gt;
    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming&lt;br /&gt;
    {&lt;br /&gt;
        CAN.readMsgBuf(&amp;amp;len, buf);    // read data,  len: data length, buf: data buf&lt;br /&gt;
&lt;br /&gt;
        unsigned char canId = CAN.getCanId();&lt;br /&gt;
        &lt;br /&gt;
        Serial.println(&amp;quot;-----------------------------&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;get data from ID: &amp;quot;);&lt;br /&gt;
        Serial.println(canId);&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i&amp;lt;len; i++)    // print the data&lt;br /&gt;
        {&lt;br /&gt;
            Serial.print(buf[i]);&lt;br /&gt;
            Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        Serial.println();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
3. Завантажити два приклади на дві дошки окремо. Виберіть дошку за допомогою шляху: Сервіс -&amp;gt; Послідовний порт -&amp;gt; COMX. Зверніть увагу, за якою платою призначається в якості вузла «send», і яка плата призначається в якості «receive» вузла.&lt;br /&gt;
&lt;br /&gt;
4. Відкрийте «Serial Monitor» на «receive» COM, ви отримаєте повідомлення, відправлене з «send» вузла. Тут зображено заздалегідь підготоване сигнальне повідомлення «0 1 2 3 4 5 6 7».&lt;br /&gt;
&lt;br /&gt;
[[Зображення: CAN_BUS_message1.jpg | 400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Посилання ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Встановіть BaudRate ===&lt;br /&gt;
&lt;br /&gt;
Ця функція використовується для ініціалізації швидкості передачі даних системи CAN Bus.&lt;br /&gt;
&lt;br /&gt;
Доступні швидкості обміну перераховані follоws:&lt;br /&gt;
&lt;br /&gt;
CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS і CAN_1000KBPS&lt;br /&gt;
&lt;br /&gt;
=== 2. Встановити Receive маску і фільтр ===&lt;br /&gt;
&lt;br /&gt;
Є два регістрів маски і 5 регістрів фільтра на чіпі контролера, які гарантують отримання  данних від цільового пристрою. Вони корисні, особливо у великій мережі, що складається з безлічі вузлів.&lt;br /&gt;
&lt;br /&gt;
Існує дві функції, щоб використовувати ці маски і фільтру регістрів:&lt;br /&gt;
&lt;br /&gt;
'' Init_Mask (unsigned char num, unsigned char ext, unsigned char ulData); &amp;amp; init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);; ''&lt;br /&gt;
&lt;br /&gt;
«» «num» «» представляє який регістр використовується. &lt;br /&gt;
«» «ext» «» представляє статус кадру. 0 означає, що це маска або фільтр для стандартного кадру. 1 означає, що він протягом тривалого кадру.&lt;br /&gt;
&lt;br /&gt;
«» «UlData» «» представляє вміст маски фільтра.&lt;br /&gt;
&lt;br /&gt;
=== 3. Перевірка Receive ===&lt;br /&gt;
MCP2515 може працювати або в режимі опитування, де програмне забезпечення перевіряє прийнятий кадр, або за допомогою додаткових пінів, щоб сигналізувати, що кадр був отриманий або передача завершена. Використовується наступна функція для опитування отриманих кадрів.&lt;br /&gt;
&lt;br /&gt;
'' INT8U MCP_CAN :: checkReceive (void); ''&lt;br /&gt;
&lt;br /&gt;
Функція повертає 1, якщо кадр прибуває, і 0, якщо нічого не приходить.&lt;br /&gt;
&lt;br /&gt;
=== 4. Отримати CAN ID ===&lt;br /&gt;
&lt;br /&gt;
Коли деякі дані приходять,  використовується  наступна функція, щоб отримати CAN ідентифікатор вузла «send».&lt;br /&gt;
&lt;br /&gt;
'' INT32U MCP_CAN :: getCanId (void) ''&lt;br /&gt;
&lt;br /&gt;
=== 5. Send  ===&lt;br /&gt;
&lt;br /&gt;
'' CAN.sendMsgBuf (INT8U id, INT8U ext, INT8U len, data_buf); ''&lt;br /&gt;
&lt;br /&gt;
Це функція для передачі даних на шину. В якому:&lt;br /&gt;
&lt;br /&gt;
«» «id» «» відображає ідентифікатор данних&lt;br /&gt;
&lt;br /&gt;
«» «ext» «» представляє статус кадру. «0» означає стандартну рамку. «1» означає, що розширений кадр.&lt;br /&gt;
&lt;br /&gt;
«» «Len» «» представляє довжину цього кадру.&lt;br /&gt;
&lt;br /&gt;
«» «Data_buf» «» зміст повідомлення.&lt;br /&gt;
&lt;br /&gt;
Наприклад, в прикладі «send», ми маємо:&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
&lt;br /&gt;
CAN.sendMsgBuf(0x00, 0, 8, stmp); //send out the message 'stmp' to the bus and tell other devices this is a standard frame from 0x00.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6. Receive  ===&lt;br /&gt;
&lt;br /&gt;
Наступна функція використовується для прийому даних на вузлі «receive»:&lt;br /&gt;
&lt;br /&gt;
CAN.readMsgBuf(unsigned char len, unsigned char buf);&lt;br /&gt;
Ця функція може отримати тільки кадри, які відповідають вимогам масок і фільтрів.&lt;br /&gt;
&lt;br /&gt;
«» «Len» 'представляє довжину даних.&lt;br /&gt;
&lt;br /&gt;
«» «buf» «», де ви зберігаєте дані.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ресурси ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip ] CAN-BUS файл Вихідний код для Arduino 1.0&lt;br /&gt;
* [http://www.elecrow.com/wiki/index.php?title=File:Mcp2551en.pdf ] технічний опис&lt;br /&gt;
* [http://www.elecrow.com/wiki/index.php?title=File:MCP2515.pdf  ] технічний опис&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23022</id>
		<title>Модуль CAN-BUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23022"/>
				<updated>2017-06-05T16:16:31Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вступ ==&lt;br /&gt;
CAN-BUS є найпоширенішою промисловою шиною  , через  велику відстань застосування , середньої швидкості зв'язку та високим ступенем надійності. Він широко використовується в якості автомобільної діагностичної шини, а також на сучасних верстатах. CAN-Bus використовує Microchip MCP2515 CAN контролер з MCP2551 CAN трансивер, з'єднання CAN здійснюється через стандартний 9-смуговий SUB-D для використання з кабелем OBD-II, він ідеально підходить для автомобільного CAN застосування.Shield  також має вхід карти Micro SD, який дозволяє зберігати діагностичну інформацію в SD-карті безпосередньо, що робить цей Shield придатним  для застосування реєстрації даних. &amp;lt;br&amp;gt;&lt;br /&gt;
'' 'Модель: [http://www.elecrow.com/canbus-shield-p-1133.html AS54887CAN]' '' &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield1.jpg | 400px | CAN-BUS Shield1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Особливості ==&lt;br /&gt;
&lt;br /&gt;
* Arduino Mega і Leonardo сумісний&lt;br /&gt;
* Реалізує CAN V2.0B зі швидкістю до 1 Мбіт / с&lt;br /&gt;
* SPI інтерфейс до 10 МГц&lt;br /&gt;
* Стандартні (11 біт) і розширені (29 біт) данневі і віддалені кадри&lt;br /&gt;
* Два буфера прийому з пріоритетним зберіганням повідомлень&lt;br /&gt;
* Стандартний роз'єм Sub-D 9&lt;br /&gt;
* Два світлодіодних індикатора&lt;br /&gt;
Вхід SD карти для зберігання інформації&lt;br /&gt;
&lt;br /&gt;
== Використання ==&lt;br /&gt;
&lt;br /&gt;
=== Установка устаткування ===&lt;br /&gt;
&lt;br /&gt;
Підключіть CAN-BUS Shield на Arduino.And перш ніж підключати Arduino до комп'ютера за допомогою кабелю USB. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield_connect.jpg | 400px | CAN-BUS Shield .jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завантажити програму ===&lt;br /&gt;
&lt;br /&gt;
1. Завантажити [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0] і запустити його в бібліотеках файлу в Arduino-1.0 програма.: .. \ Arduino-1.0 \ libraries.&lt;br /&gt;
&lt;br /&gt;
Якщо ім'я папки включають «-master», просто видаліть його.&lt;br /&gt;
&lt;br /&gt;
2. Відкрийте Arduino-1,0, в ньому знаходиться 8 прикладів: receive_check ,send and receive_interrupt and so on. send and receive_check  &lt;br /&gt;
[[Image:Open_CAN_BUS_examples_receive.jpg|400px]]&lt;br /&gt;
[[Image:Open_CAN_BUS_examples_send.jpg|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.1 Код програми:&lt;br /&gt;
// demo: CAN-BUS Shield, send data&lt;br /&gt;
#include &amp;lt;mcp_can.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf&lt;br /&gt;
    CAN.sendMsgBuf(0x00, 0, 8, stmp);&lt;br /&gt;
    delay(100);                       // send data per 100ms&lt;br /&gt;
}&lt;br /&gt;
2.2 Receive data&lt;br /&gt;
// demo: CAN-BUS Shield, receive data with check mode&lt;br /&gt;
// send data coming to fast, such as less than 10ms, you can use this way&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;quot;mcp_can.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    unsigned char len = 0;&lt;br /&gt;
    unsigned char buf[8];&lt;br /&gt;
&lt;br /&gt;
    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming&lt;br /&gt;
    {&lt;br /&gt;
        CAN.readMsgBuf(&amp;amp;len, buf);    // read data,  len: data length, buf: data buf&lt;br /&gt;
&lt;br /&gt;
        unsigned char canId = CAN.getCanId();&lt;br /&gt;
        &lt;br /&gt;
        Serial.println(&amp;quot;-----------------------------&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;get data from ID: &amp;quot;);&lt;br /&gt;
        Serial.println(canId);&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i&amp;lt;len; i++)    // print the data&lt;br /&gt;
        {&lt;br /&gt;
            Serial.print(buf[i]);&lt;br /&gt;
            Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        Serial.println();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
3. Завантажити два приклади на дві дошки окремо. Виберіть дошку за допомогою шляху: Сервіс -&amp;gt; Послідовний порт -&amp;gt; COMX. Зверніть увагу, за якою платою призначається в якості вузла «send», і яка плата призначається в якості «receive» вузла.&lt;br /&gt;
&lt;br /&gt;
4. Відкрийте «Serial Monitor» на «receive» COM, ви отримаєте повідомлення, відправлене з «send» вузла. Тут зображено заздалегідь підготоване сигнальне повідомлення «0 1 2 3 4 5 6 7».&lt;br /&gt;
&lt;br /&gt;
[[Зображення: CAN_BUS_message1.jpg | 400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Посилання ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Встановіть BaudRate ===&lt;br /&gt;
&lt;br /&gt;
Ця функція використовується для ініціалізації швидкості передачі даних системи CAN Bus.&lt;br /&gt;
&lt;br /&gt;
Доступні швидкості обміну перераховані follоws:&lt;br /&gt;
&lt;br /&gt;
CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS і CAN_1000KBPS&lt;br /&gt;
&lt;br /&gt;
=== 2. Встановити Receive маску і фільтр ===&lt;br /&gt;
&lt;br /&gt;
Є два регістрів маски і 5 регістрів фільтра на чіпі контролера, які гарантують отримання  данних від цільового пристрою. Вони корисні, особливо у великій мережі, що складається з безлічі вузлів.&lt;br /&gt;
&lt;br /&gt;
Існує дві функції, щоб використовувати ці маски і фільтру регістрів:&lt;br /&gt;
&lt;br /&gt;
'' Init_Mask (unsigned char num, unsigned char ext, unsigned char ulData); &amp;amp; init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);; ''&lt;br /&gt;
&lt;br /&gt;
«» «num» «» представляє який регістр використовується. &lt;br /&gt;
«» «ext» «» представляє статус кадру. 0 означає, що це маска або фільтр для стандартного кадру. 1 означає, що він протягом тривалого кадру.&lt;br /&gt;
&lt;br /&gt;
«» «UlData» «» представляє вміст маски фільтра.&lt;br /&gt;
&lt;br /&gt;
=== 3. Перевірка Receive ===&lt;br /&gt;
MCP2515 може працювати або в режимі опитування, де програмне забезпечення перевіряє прийнятий кадр, або за допомогою додаткових пінів, щоб сигналізувати, що кадр був отриманий або передача завершена. Використовується наступна функція для опитування отриманих кадрів.&lt;br /&gt;
&lt;br /&gt;
'' INT8U MCP_CAN :: checkReceive (void); ''&lt;br /&gt;
&lt;br /&gt;
Функція повертає 1, якщо кадр прибуває, і 0, якщо нічого не приходить.&lt;br /&gt;
&lt;br /&gt;
=== 4. Отримати CAN ID ===&lt;br /&gt;
&lt;br /&gt;
Коли деякі дані приходять,  використовується  наступна функція, щоб отримати CAN ідентифікатор вузла «send».&lt;br /&gt;
&lt;br /&gt;
'' INT32U MCP_CAN :: getCanId (void) ''&lt;br /&gt;
&lt;br /&gt;
=== 5. Send  ===&lt;br /&gt;
&lt;br /&gt;
'' CAN.sendMsgBuf (INT8U id, INT8U ext, INT8U len, data_buf); ''&lt;br /&gt;
&lt;br /&gt;
Це функція для передачі даних на шину. В якому:&lt;br /&gt;
&lt;br /&gt;
«» «id» «» відображає ідентифікатор данних&lt;br /&gt;
&lt;br /&gt;
«» «ext» «» представляє статус кадру. «0» означає стандартну рамку. «1» означає, що розширений кадр.&lt;br /&gt;
&lt;br /&gt;
«» «Len» «» представляє довжину цього кадру.&lt;br /&gt;
&lt;br /&gt;
«» «Data_buf» «» зміст повідомлення.&lt;br /&gt;
&lt;br /&gt;
Наприклад, в прикладі «send», ми маємо:&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
&lt;br /&gt;
CAN.sendMsgBuf(0x00, 0, 8, stmp); //send out the message 'stmp' to the bus and tell other devices this is a standard frame from 0x00.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6. Receive  ===&lt;br /&gt;
&lt;br /&gt;
Наступна функція використовується для прийому даних на вузлі «receive»:&lt;br /&gt;
&lt;br /&gt;
CAN.readMsgBuf(unsigned char len, unsigned char buf);&lt;br /&gt;
Ця функція може отримати тільки кадри, які відповідають вимогам масок і фільтрів.&lt;br /&gt;
&lt;br /&gt;
«» «Len» 'представляє довжину даних.&lt;br /&gt;
&lt;br /&gt;
«» «buf» «», де ви зберігаєте дані.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ресурси ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip ] CAN-BUS файл Вихідний код для Arduino 1.0&lt;br /&gt;
* [http://www.elecrow.com/wiki/index.php?title=File:Mcp2551en.pdf ] технічний опис&lt;br /&gt;
* [http://www.elecrow.com/wiki/index.php?title=File:MCP2515.pdf  ] технічний опис&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23021</id>
		<title>Модуль CAN-BUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23021"/>
				<updated>2017-06-05T16:14:40Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вступ ==&lt;br /&gt;
CAN-BUS є найпоширенішою промисловою шиною  , через  велику відстань застосування , середньої швидкості зв'язку та високим ступенем надійності. Він широко використовується в якості автомобільної діагностичної шини, а також на сучасних верстатах. CAN-Bus використовує Microchip MCP2515 CAN контролер з MCP2551 CAN трансивер, з'єднання CAN здійснюється через стандартний 9-смуговий SUB-D для використання з кабелем OBD-II, він ідеально підходить для автомобільного CAN застосування.Shield  також має вхід карти Micro SD, який дозволяє зберігати діагностичну інформацію в SD-карті безпосередньо, що робить цей Shield придатним  для застосування реєстрації даних. &amp;lt;br&amp;gt;&lt;br /&gt;
'' 'Модель: [http://www.elecrow.com/canbus-shield-p-1133.html AS54887CAN]' '' &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield1.jpg | 400px | CAN-BUS Shield1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Особливості ==&lt;br /&gt;
&lt;br /&gt;
* Arduino Mega і Leonardo сумісний&lt;br /&gt;
* Реалізує CAN V2.0B зі швидкістю до 1 Мбіт / с&lt;br /&gt;
* SPI інтерфейс до 10 МГц&lt;br /&gt;
* Стандартні (11 біт) і розширені (29 біт) данневі і віддалені кадри&lt;br /&gt;
* Два буфера прийому з пріоритетним зберіганням повідомлень&lt;br /&gt;
* Стандартний роз'єм Sub-D 9&lt;br /&gt;
* Два світлодіодних індикатора&lt;br /&gt;
Вхід SD карти для зберігання інформації&lt;br /&gt;
&lt;br /&gt;
== Використання ==&lt;br /&gt;
&lt;br /&gt;
=== Установка устаткування ===&lt;br /&gt;
&lt;br /&gt;
Підключіть CAN-BUS Shield на Arduino.And перш ніж підключати Arduino до комп'ютера за допомогою кабелю USB. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield_connect.jpg | 400px | CAN-BUS Shield .jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завантажити програму ===&lt;br /&gt;
&lt;br /&gt;
1. Завантажити [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0] і запустити його в бібліотеках файлу в Arduino-1.0 програма.: .. \ Arduino-1.0 \ libraries.&lt;br /&gt;
&lt;br /&gt;
Якщо ім'я папки включають «-master», просто видаліть його.&lt;br /&gt;
&lt;br /&gt;
2. Відкрийте Arduino-1,0, в ньому знаходиться 8 прикладів: receive_check ,send and receive_interrupt and so on. send and receive_check  &lt;br /&gt;
[[Image:Open_CAN_BUS_examples_receive.jpg|400px]]&lt;br /&gt;
[[Image:Open_CAN_BUS_examples_send.jpg|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.1 Код програми:&lt;br /&gt;
// demo: CAN-BUS Shield, send data&lt;br /&gt;
#include &amp;lt;mcp_can.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf&lt;br /&gt;
    CAN.sendMsgBuf(0x00, 0, 8, stmp);&lt;br /&gt;
    delay(100);                       // send data per 100ms&lt;br /&gt;
}&lt;br /&gt;
2.2 Receive data&lt;br /&gt;
// demo: CAN-BUS Shield, receive data with check mode&lt;br /&gt;
// send data coming to fast, such as less than 10ms, you can use this way&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;quot;mcp_can.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    unsigned char len = 0;&lt;br /&gt;
    unsigned char buf[8];&lt;br /&gt;
&lt;br /&gt;
    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming&lt;br /&gt;
    {&lt;br /&gt;
        CAN.readMsgBuf(&amp;amp;len, buf);    // read data,  len: data length, buf: data buf&lt;br /&gt;
&lt;br /&gt;
        unsigned char canId = CAN.getCanId();&lt;br /&gt;
        &lt;br /&gt;
        Serial.println(&amp;quot;-----------------------------&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;get data from ID: &amp;quot;);&lt;br /&gt;
        Serial.println(canId);&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i&amp;lt;len; i++)    // print the data&lt;br /&gt;
        {&lt;br /&gt;
            Serial.print(buf[i]);&lt;br /&gt;
            Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        Serial.println();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
3. Завантажити два приклади на дві дошки окремо. Виберіть дошку за допомогою шляху: Сервіс -&amp;gt; Послідовний порт -&amp;gt; COMX. Зверніть увагу, за якою платою призначається в якості вузла «send», і яка плата призначається в якості «receive» вузла.&lt;br /&gt;
&lt;br /&gt;
4. Відкрийте «Serial Monitor» на «receive» COM, ви отримаєте повідомлення, відправлене з «send» вузла. Тут зображено заздалегідь підготоване сигнальне повідомлення «0 1 2 3 4 5 6 7».&lt;br /&gt;
&lt;br /&gt;
[[Зображення: CAN_BUS_message1.jpg | 400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Посилання ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Встановіть BaudRate ===&lt;br /&gt;
&lt;br /&gt;
Ця функція використовується для ініціалізації швидкості передачі даних системи CAN Bus.&lt;br /&gt;
&lt;br /&gt;
Доступні швидкості обміну перераховані follоws:&lt;br /&gt;
&lt;br /&gt;
CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS і CAN_1000KBPS&lt;br /&gt;
&lt;br /&gt;
=== 2. Встановити Receive маску і фільтр ===&lt;br /&gt;
&lt;br /&gt;
Є два регістрів маски і 5 регістрів фільтра на чіпі контролера, які гарантують отримання  данних від цільового пристрою. Вони корисні, особливо у великій мережі, що складається з безлічі вузлів.&lt;br /&gt;
&lt;br /&gt;
Існує дві функції, щоб використовувати ці маски і фільтру регістрів:&lt;br /&gt;
&lt;br /&gt;
'' Init_Mask (unsigned char num, unsigned char ext, unsigned char ulData); &amp;amp; init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);; ''&lt;br /&gt;
&lt;br /&gt;
«» «num» «» представляє який регістр використовується. &lt;br /&gt;
«» «ext» «» представляє статус кадру. 0 означає, що це маска або фільтр для стандартного кадру. 1 означає, що він протягом тривалого кадру.&lt;br /&gt;
&lt;br /&gt;
«» «UlData» «» представляє вміст маски фільтра.&lt;br /&gt;
&lt;br /&gt;
=== 3. Перевірка Receive ===&lt;br /&gt;
MCP2515 може працювати або в режимі опитування, де програмне забезпечення перевіряє прийнятий кадр, або за допомогою додаткових пінів, щоб сигналізувати, що кадр був отриманий або передача завершена. Використовується наступна функція для опитування отриманих кадрів.&lt;br /&gt;
&lt;br /&gt;
'' INT8U MCP_CAN :: checkReceive (void); ''&lt;br /&gt;
&lt;br /&gt;
Функція повертає 1, якщо кадр прибуває, і 0, якщо нічого не приходить.&lt;br /&gt;
&lt;br /&gt;
=== 4. Отримати CAN ID ===&lt;br /&gt;
&lt;br /&gt;
Коли деякі дані приходять,  використовується  наступна функція, щоб отримати CAN ідентифікатор вузла «send».&lt;br /&gt;
&lt;br /&gt;
'' INT32U MCP_CAN :: getCanId (void) ''&lt;br /&gt;
&lt;br /&gt;
=== 5. Send даних ===&lt;br /&gt;
&lt;br /&gt;
'' CAN.sendMsgBuf (INT8U id, INT8U ext, INT8U len, data_buf); ''&lt;br /&gt;
&lt;br /&gt;
Це функція для передачі даних на шину. В якому:&lt;br /&gt;
&lt;br /&gt;
«» «id» «» відображає ідентифікатор данних&lt;br /&gt;
&lt;br /&gt;
«» «ext» «» представляє статус кадру. «0» означає стандартну рамку. «1» означає, що розширений кадр.&lt;br /&gt;
&lt;br /&gt;
«» «Len» «» представляє довжину цього кадру.&lt;br /&gt;
&lt;br /&gt;
«» «Data_buf» «» зміст повідомлення.&lt;br /&gt;
&lt;br /&gt;
Наприклад, в прикладі «send», ми маємо:&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
&lt;br /&gt;
CAN.sendMsgBuf(0x00, 0, 8, stmp); //send out the message 'stmp' to the bus and tell other devices this is a standard frame from 0x00.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6. Receive даних ===&lt;br /&gt;
&lt;br /&gt;
Наступна функція використовується для прийому даних на вузлі «receive»:&lt;br /&gt;
&lt;br /&gt;
CAN.readMsgBuf(unsigned char len, unsigned char buf);&lt;br /&gt;
Ця функція може отримати тільки кадри, які відповідають вимогам масок і фільтрів.&lt;br /&gt;
&lt;br /&gt;
«» «Len» 'представляє довжину даних.&lt;br /&gt;
&lt;br /&gt;
«» «buf» «», де ви зберігаєте дані.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ресурси ==&lt;br /&gt;
&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0]&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:Mcp2551en.pdf MCP2551 технічний опис]&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:MCP2515.pdf MCP2515 технічний опис]&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CAN_BUS_message1.jpg&amp;diff=23020</id>
		<title>Файл:CAN BUS message1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CAN_BUS_message1.jpg&amp;diff=23020"/>
				<updated>2017-06-05T16:13:55Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23019</id>
		<title>Модуль CAN-BUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23019"/>
				<updated>2017-06-05T16:13:27Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вступ ==&lt;br /&gt;
CAN-BUS є найпоширенішою промисловою шиною  , через  велику відстань застосування , середньої швидкості зв'язку та високим ступенем надійності. Він широко використовується в якості автомобільної діагностичної шини, а також на сучасних верстатах. CAN-Bus використовує Microchip MCP2515 CAN контролер з MCP2551 CAN трансивер, з'єднання CAN здійснюється через стандартний 9-смуговий SUB-D для використання з кабелем OBD-II, він ідеально підходить для автомобільного CAN застосування.Shield  також має вхід карти Micro SD, який дозволяє зберігати діагностичну інформацію в SD-карті безпосередньо, що робить цей Shield придатним  для застосування реєстрації даних. &amp;lt;br&amp;gt;&lt;br /&gt;
'' 'Модель: [http://www.elecrow.com/canbus-shield-p-1133.html AS54887CAN]' '' &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield1.jpg | 400px | CAN-BUS Shield1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Особливості ==&lt;br /&gt;
&lt;br /&gt;
* Arduino Mega і Leonardo сумісний&lt;br /&gt;
* Реалізує CAN V2.0B зі швидкістю до 1 Мбіт / с&lt;br /&gt;
* SPI інтерфейс до 10 МГц&lt;br /&gt;
* Стандартні (11 біт) і розширені (29 біт) данневі і віддалені кадри&lt;br /&gt;
* Два буфера прийому з пріоритетним зберіганням повідомлень&lt;br /&gt;
* Стандартний роз'єм Sub-D 9&lt;br /&gt;
* Два світлодіодних індикатора&lt;br /&gt;
Вхід SD карти для зберігання інформації&lt;br /&gt;
&lt;br /&gt;
== Використання ==&lt;br /&gt;
&lt;br /&gt;
=== Установка устаткування ===&lt;br /&gt;
&lt;br /&gt;
Підключіть CAN-BUS Shield на Arduino.And перш ніж підключати Arduino до комп'ютера за допомогою кабелю USB. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield_connect.jpg | 400px | CAN-BUS Shield .jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завантажити програму ===&lt;br /&gt;
&lt;br /&gt;
1. Завантажити [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0] і запустити його в бібліотеках файлу в Arduino-1.0 програма.: .. \ Arduino-1.0 \ libraries.&lt;br /&gt;
&lt;br /&gt;
Якщо ім'я папки включають «-master», просто видаліть його.&lt;br /&gt;
&lt;br /&gt;
2. Відкрийте Arduino-1,0, в ньому знаходиться 8 прикладів: receive_check ,send and receive_interrupt and so on. send and receive_check  &lt;br /&gt;
[[Image:Open_CAN_BUS_examples_receive.jpg|400px]]&lt;br /&gt;
[[Image:Open_CAN_BUS_examples_send.jpg|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.1 Код програми:&lt;br /&gt;
// demo: CAN-BUS Shield, send data&lt;br /&gt;
#include &amp;lt;mcp_can.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf&lt;br /&gt;
    CAN.sendMsgBuf(0x00, 0, 8, stmp);&lt;br /&gt;
    delay(100);                       // send data per 100ms&lt;br /&gt;
}&lt;br /&gt;
2.2 Receive data&lt;br /&gt;
// demo: CAN-BUS Shield, receive data with check mode&lt;br /&gt;
// send data coming to fast, such as less than 10ms, you can use this way&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;quot;mcp_can.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    unsigned char len = 0;&lt;br /&gt;
    unsigned char buf[8];&lt;br /&gt;
&lt;br /&gt;
    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming&lt;br /&gt;
    {&lt;br /&gt;
        CAN.readMsgBuf(&amp;amp;len, buf);    // read data,  len: data length, buf: data buf&lt;br /&gt;
&lt;br /&gt;
        unsigned char canId = CAN.getCanId();&lt;br /&gt;
        &lt;br /&gt;
        Serial.println(&amp;quot;-----------------------------&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;get data from ID: &amp;quot;);&lt;br /&gt;
        Serial.println(canId);&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i&amp;lt;len; i++)    // print the data&lt;br /&gt;
        {&lt;br /&gt;
            Serial.print(buf[i]);&lt;br /&gt;
            Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        Serial.println();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
3. Завантажити два приклади на дві дошки окремо. Виберіть дошку за допомогою шляху: Сервіс -&amp;gt; Послідовний порт -&amp;gt; COMX. Зверніть увагу, за якою платою призначається в якості вузла «send», і яка плата призначається в якості «receive» вузла.&lt;br /&gt;
&lt;br /&gt;
4. Відкрийте «Serial Monitor» на «receive» COM, ви отримаєте повідомлення, відправлене з «send» вузла. Тут зображено заздалегідь підготоване сигнальне повідомлення «0 1 2 3 4 5 6 7».&lt;br /&gt;
&lt;br /&gt;
[[Зображення: CAN BUS message1.jpg | 400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Посилання ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Встановіть BaudRate ===&lt;br /&gt;
&lt;br /&gt;
Ця функція використовується для ініціалізації швидкості передачі даних системи CAN Bus.&lt;br /&gt;
&lt;br /&gt;
Доступні швидкості обміну перераховані follоws:&lt;br /&gt;
&lt;br /&gt;
CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS і CAN_1000KBPS&lt;br /&gt;
&lt;br /&gt;
=== 2. Встановити Receive маску і фільтр ===&lt;br /&gt;
&lt;br /&gt;
Є два регістрів маски і 5 регістрів фільтра на чіпі контролера, які гарантують отримання  данних від цільового пристрою. Вони корисні, особливо у великій мережі, що складається з безлічі вузлів.&lt;br /&gt;
&lt;br /&gt;
Існує дві функції, щоб використовувати ці маски і фільтру регістрів:&lt;br /&gt;
&lt;br /&gt;
'' Init_Mask (unsigned char num, unsigned char ext, unsigned char ulData); &amp;amp; init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);; ''&lt;br /&gt;
&lt;br /&gt;
«» «num» «» представляє який регістр використовується. &lt;br /&gt;
«» «ext» «» представляє статус кадру. 0 означає, що це маска або фільтр для стандартного кадру. 1 означає, що він протягом тривалого кадру.&lt;br /&gt;
&lt;br /&gt;
«» «UlData» «» представляє вміст маски фільтра.&lt;br /&gt;
&lt;br /&gt;
=== 3. Перевірка Receive ===&lt;br /&gt;
MCP2515 може працювати або в режимі опитування, де програмне забезпечення перевіряє прийнятий кадр, або за допомогою додаткових пінів, щоб сигналізувати, що кадр був отриманий або передача завершена. Використовується наступна функція для опитування отриманих кадрів.&lt;br /&gt;
&lt;br /&gt;
'' INT8U MCP_CAN :: checkReceive (void); ''&lt;br /&gt;
&lt;br /&gt;
Функція повертає 1, якщо кадр прибуває, і 0, якщо нічого не приходить.&lt;br /&gt;
&lt;br /&gt;
=== 4. Отримати CAN ID ===&lt;br /&gt;
&lt;br /&gt;
Коли деякі дані приходять,  використовується  наступна функція, щоб отримати CAN ідентифікатор вузла «send».&lt;br /&gt;
&lt;br /&gt;
'' INT32U MCP_CAN :: getCanId (void) ''&lt;br /&gt;
&lt;br /&gt;
=== 5. Send даних ===&lt;br /&gt;
&lt;br /&gt;
'' CAN.sendMsgBuf (INT8U id, INT8U ext, INT8U len, data_buf); ''&lt;br /&gt;
&lt;br /&gt;
Це функція для передачі даних на шину. В якому:&lt;br /&gt;
&lt;br /&gt;
«» «id» «» відображає ідентифікатор данних&lt;br /&gt;
&lt;br /&gt;
«» «ext» «» представляє статус кадру. «0» означає стандартну рамку. «1» означає, що розширений кадр.&lt;br /&gt;
&lt;br /&gt;
«» «Len» «» представляє довжину цього кадру.&lt;br /&gt;
&lt;br /&gt;
«» «Data_buf» «» зміст повідомлення.&lt;br /&gt;
&lt;br /&gt;
Наприклад, в прикладі «send», ми маємо:&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
&lt;br /&gt;
CAN.sendMsgBuf(0x00, 0, 8, stmp); //send out the message 'stmp' to the bus and tell other devices this is a standard frame from 0x00.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6. Receive даних ===&lt;br /&gt;
&lt;br /&gt;
Наступна функція використовується для прийому даних на вузлі «receive»:&lt;br /&gt;
&lt;br /&gt;
CAN.readMsgBuf(unsigned char len, unsigned char buf);&lt;br /&gt;
Ця функція може отримати тільки кадри, які відповідають вимогам масок і фільтрів.&lt;br /&gt;
&lt;br /&gt;
«» «Len» 'представляє довжину даних.&lt;br /&gt;
&lt;br /&gt;
«» «buf» «», де ви зберігаєте дані.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ресурси ==&lt;br /&gt;
&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0]&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:Mcp2551en.pdf MCP2551 технічний опис]&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:MCP2515.pdf MCP2515 технічний опис]&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Open_CAN_BUS_examples_send.jpg&amp;diff=23018</id>
		<title>Файл:Open CAN BUS examples send.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Open_CAN_BUS_examples_send.jpg&amp;diff=23018"/>
				<updated>2017-06-05T16:12:52Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Open_CAN_BUS_examples_receive.jpg&amp;diff=23017</id>
		<title>Файл:Open CAN BUS examples receive.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Open_CAN_BUS_examples_receive.jpg&amp;diff=23017"/>
				<updated>2017-06-05T16:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CAN-BUS_Shield_connect.jpg&amp;diff=23016</id>
		<title>Файл:CAN-BUS Shield connect.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CAN-BUS_Shield_connect.jpg&amp;diff=23016"/>
				<updated>2017-06-05T16:07:57Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CAN-BUS_Shield1.jpg&amp;diff=23015</id>
		<title>Файл:CAN-BUS Shield1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CAN-BUS_Shield1.jpg&amp;diff=23015"/>
				<updated>2017-06-05T16:07:34Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	<entry>
		<id>https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23001</id>
		<title>Модуль CAN-BUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.tntu.edu.ua/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_CAN-BUS&amp;diff=23001"/>
				<updated>2017-06-05T12:17:15Z</updated>
		
		<summary type="html">&lt;p&gt;Natalya yakubiv: Створена сторінка: == Вступ == CAN-BUS є найпоширенішою промисловою шиною  , через  велику відстань застосування...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вступ ==&lt;br /&gt;
CAN-BUS є найпоширенішою промисловою шиною  , через  велику відстань застосування , середньої швидкості зв'язку та високим ступенем надійності. Він широко використовується в якості автомобільної діагностичної шини, а також на сучасних верстатах. CAN-Bus використовує Microchip MCP2515 CAN контролер з MCP2551 CAN трансивер, з'єднання CAN здійснюється через стандартний 9-смуговий SUB-D для використання з кабелем OBD-II, він ідеально підходить для автомобільного CAN застосування.Shield  також має вхід карти Micro SD, який дозволяє зберігати діагностичну інформацію в SD-карті безпосередньо, що робить цей Shield придатним  для застосування реєстрації даних. &amp;lt;br&amp;gt;&lt;br /&gt;
'' 'Модель: [http://www.elecrow.com/canbus-shield-p-1133.html AS54887CAN]' '' &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield1.jpg | 400px | CAN-BUS Shield1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Особливості ==&lt;br /&gt;
&lt;br /&gt;
* Arduino Mega і Leonardo сумісний&lt;br /&gt;
* Реалізує CAN V2.0B зі швидкістю до 1 Мбіт / с&lt;br /&gt;
* SPI інтерфейс до 10 МГц&lt;br /&gt;
* Стандартні (11 біт) і розширені (29 біт) данневі і віддалені кадри&lt;br /&gt;
* Два буфера прийому з пріоритетним зберіганням повідомлень&lt;br /&gt;
* Стандартний роз'єм Sub-D 9&lt;br /&gt;
* Два світлодіодних індикатора&lt;br /&gt;
Вхід SD карти для зберігання інформації&lt;br /&gt;
&lt;br /&gt;
== Використання ==&lt;br /&gt;
&lt;br /&gt;
=== Установка устаткування ===&lt;br /&gt;
&lt;br /&gt;
Підключіть CAN-BUS Shield на Arduino.And перш ніж підключати Arduino до комп'ютера за допомогою кабелю USB. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Зображення: CAN-BUS Shield_connect.jpg | 400px | CAN-BUS Shield .jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завантажити програму ===&lt;br /&gt;
&lt;br /&gt;
1. Завантажити [http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0] і запустити його в бібліотеках файлу в Arduino-1.0 програма.: .. \ Arduino-1.0 \ libraries.&lt;br /&gt;
&lt;br /&gt;
Якщо ім'я папки включають «-master», просто видаліть його.&lt;br /&gt;
&lt;br /&gt;
2. Відкрийте Arduino-1,0, в ньому знаходиться 8 прикладів: receive_check ,send and receive_interrupt and so on. send and receive_check  &lt;br /&gt;
[[Image:open CAN BUS examples send.jpg|400px]][[Image:open CAN BUS examples receive.jpg|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.1 Код програми:&lt;br /&gt;
// demo: CAN-BUS Shield, send data&lt;br /&gt;
#include &amp;lt;mcp_can.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf&lt;br /&gt;
    CAN.sendMsgBuf(0x00, 0, 8, stmp);&lt;br /&gt;
    delay(100);                       // send data per 100ms&lt;br /&gt;
}&lt;br /&gt;
2.2 Receive data&lt;br /&gt;
// demo: CAN-BUS Shield, receive data with check mode&lt;br /&gt;
// send data coming to fast, such as less than 10ms, you can use this way&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;quot;mcp_can.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// the cs pin of the version after v1.1 is default to D9&lt;br /&gt;
// v0.9b and v1.0 is default D10&lt;br /&gt;
const int SPI_CS_PIN = 9;&lt;br /&gt;
&lt;br /&gt;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
START_INIT:&lt;br /&gt;
&lt;br /&gt;
    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init ok!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Serial.println(&amp;quot;CAN BUS Shield init fail&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;Init CAN BUS Shield again&amp;quot;);&lt;br /&gt;
        delay(100);&lt;br /&gt;
        goto START_INIT;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    unsigned char len = 0;&lt;br /&gt;
    unsigned char buf[8];&lt;br /&gt;
&lt;br /&gt;
    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming&lt;br /&gt;
    {&lt;br /&gt;
        CAN.readMsgBuf(&amp;amp;len, buf);    // read data,  len: data length, buf: data buf&lt;br /&gt;
&lt;br /&gt;
        unsigned char canId = CAN.getCanId();&lt;br /&gt;
        &lt;br /&gt;
        Serial.println(&amp;quot;-----------------------------&amp;quot;);&lt;br /&gt;
        Serial.println(&amp;quot;get data from ID: &amp;quot;);&lt;br /&gt;
        Serial.println(canId);&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i&amp;lt;len; i++)    // print the data&lt;br /&gt;
        {&lt;br /&gt;
            Serial.print(buf[i]);&lt;br /&gt;
            Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        Serial.println();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
3. Завантажити два приклади на дві дошки окремо. Виберіть дошку за допомогою шляху: Сервіс -&amp;gt; Послідовний порт -&amp;gt; COMX. Зверніть увагу, за якою платою призначається в якості вузла «send», і яка плата призначається в якості «receive» вузла.&lt;br /&gt;
&lt;br /&gt;
4. Відкрийте «Serial Monitor» на «receive» COM, ви отримаєте повідомлення, відправлене з «send» вузла. Тут зображено заздалегідь підготоване сигнальне повідомлення «0 1 2 3 4 5 6 7».&lt;br /&gt;
&lt;br /&gt;
[[Зображення: CAN BUS message1.jpg | 400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Посилання ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Встановіть BaudRate ===&lt;br /&gt;
&lt;br /&gt;
Ця функція використовується для ініціалізації швидкості передачі даних системи CAN Bus.&lt;br /&gt;
&lt;br /&gt;
Доступні швидкості обміну перераховані follоws:&lt;br /&gt;
&lt;br /&gt;
CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS і CAN_1000KBPS&lt;br /&gt;
&lt;br /&gt;
=== 2. Встановити Receive маску і фільтр ===&lt;br /&gt;
&lt;br /&gt;
Є два регістрів маски і 5 регістрів фільтра на чіпі контролера, які гарантують отримання  данних від цільового пристрою. Вони корисні, особливо у великій мережі, що складається з безлічі вузлів.&lt;br /&gt;
&lt;br /&gt;
Існує дві функції, щоб використовувати ці маски і фільтру регістрів:&lt;br /&gt;
&lt;br /&gt;
'' Init_Mask (unsigned char num, unsigned char ext, unsigned char ulData); &amp;amp; init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);; ''&lt;br /&gt;
&lt;br /&gt;
«» «num» «» представляє який регістр використовується. &lt;br /&gt;
«» «ext» «» представляє статус кадру. 0 означає, що це маска або фільтр для стандартного кадру. 1 означає, що він протягом тривалого кадру.&lt;br /&gt;
&lt;br /&gt;
«» «UlData» «» представляє вміст маски фільтра.&lt;br /&gt;
&lt;br /&gt;
=== 3. Перевірка Receive ===&lt;br /&gt;
MCP2515 може працювати або в режимі опитування, де програмне забезпечення перевіряє прийнятий кадр, або за допомогою додаткових пінів, щоб сигналізувати, що кадр був отриманий або передача завершена. Використовується наступна функція для опитування отриманих кадрів.&lt;br /&gt;
&lt;br /&gt;
'' INT8U MCP_CAN :: checkReceive (void); ''&lt;br /&gt;
&lt;br /&gt;
Функція повертає 1, якщо кадр прибуває, і 0, якщо нічого не приходить.&lt;br /&gt;
&lt;br /&gt;
=== 4. Отримати CAN ID ===&lt;br /&gt;
&lt;br /&gt;
Коли деякі дані приходять,  використовується  наступна функція, щоб отримати CAN ідентифікатор вузла «send».&lt;br /&gt;
&lt;br /&gt;
'' INT32U MCP_CAN :: getCanId (void) ''&lt;br /&gt;
&lt;br /&gt;
=== 5. Send даних ===&lt;br /&gt;
&lt;br /&gt;
'' CAN.sendMsgBuf (INT8U id, INT8U ext, INT8U len, data_buf); ''&lt;br /&gt;
&lt;br /&gt;
Це функція для передачі даних на шину. В якому:&lt;br /&gt;
&lt;br /&gt;
«» «id» «» відображає ідентифікатор данних&lt;br /&gt;
&lt;br /&gt;
«» «ext» «» представляє статус кадру. «0» означає стандартну рамку. «1» означає, що розширений кадр.&lt;br /&gt;
&lt;br /&gt;
«» «Len» «» представляє довжину цього кадру.&lt;br /&gt;
&lt;br /&gt;
«» «Data_buf» «» зміст повідомлення.&lt;br /&gt;
&lt;br /&gt;
Наприклад, в прикладі «send», ми маємо:&lt;br /&gt;
&lt;br /&gt;
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};&lt;br /&gt;
&lt;br /&gt;
CAN.sendMsgBuf(0x00, 0, 8, stmp); //send out the message 'stmp' to the bus and tell other devices this is a standard frame from 0x00.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6. Receive даних ===&lt;br /&gt;
&lt;br /&gt;
Наступна функція використовується для прийому даних на вузлі «receive»:&lt;br /&gt;
&lt;br /&gt;
CAN.readMsgBuf(unsigned char len, unsigned char buf);&lt;br /&gt;
Ця функція може отримати тільки кадри, які відповідають вимогам масок і фільтрів.&lt;br /&gt;
&lt;br /&gt;
«» «Len» 'представляє довжину даних.&lt;br /&gt;
&lt;br /&gt;
«» «buf» «», де ви зберігаєте дані.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ресурси ==&lt;br /&gt;
&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:CAN_BUS_Shield_master.zip CAN-BUS файл Вихідний код для Arduino 1.0]&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:Mcp2551en.pdf MCP2551 технічний опис]&lt;br /&gt;
* [Http://www.elecrow.com/wiki/index.php?title=File:MCP2515.pdf MCP2515 технічний опис]&lt;/div&gt;</summary>
		<author><name>Natalya yakubiv</name></author>	</entry>

	</feed>