Цитата:
Сообщение от Soldat6600
Ребята помогите пожалуйста, проблема с отправкой данных. Та же самая что и с 1050. Сейчас перепаял на 1054. Данные принимает на ура, на передавать не хочет, заливаю пример отправки, в терминале пишет "Can init ok" и всё. не каких больше данных. Пробовал подключать к машине, и без машины, ставил перемычку на резистор 120ом всё без толку. Может дадите тёплый совет.
|
А какие ты хочешь данные увидеть?
Там их не будет! Это только отправка.
Чтобы принимать и отправлять воспользуйся этим:
PHP код:
// demo: CAN-BUS Shield, receive data
#include <mcp_can.h>
#include <SPI.h>
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
long unsigned time = 0;
MCP_CAN CAN0(10); // Set CS to pin 10
unsigned char stmp[8] = {0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00};
unsigned char stmp1[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00};
void setup()
{
Serial.begin(115200);
CAN0.begin(CAN_500KBPS, MCP_8MHz); // init can bus : baudrate = 500k
pinMode(2, INPUT); // Setting pin 2 for /INT input
Serial.println("MCP2515 Library Receive Example...");
}
void loop()
{
if (!digitalRead(2)) // If pin 2 is low, read receive buffer
{
CAN0.readMsgBuf(&len, rxBuf); // Read data: len = data length, buf = data byte(s)
rxId = CAN0.getCanId(); // Get message ID
Serial.print("ID: ");
Serial.print(rxId, HEX);
Serial.print(" Data: ");
for (int i = 0; i < len; i++) // Print each byte of the data
{
if (rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
{
Serial.print("0");
}
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
}
if (millis() - time >= 5000) {
// send data: id = 0x00, standrad flame, data len = 8, stmp: data buf
CAN0.sendMsgBuf(0x00, 0, 8, stmp);
delay(500); // send data per 100ms
CAN0.sendMsgBuf(0x745, 0, 8, stmp1);
time = millis();
}
}