Arduino Uno и SunFlower CAN Shield

Всем привет у меня есть ардуино уно и шилд. Конечно ардуино не оригинальная и у меня вопрос я использую этот код чтоб работать с Can Hacker и при работе с ним через время он просто перестает получать данные как я понимаю у меня проблемма только в ардуино?

#include <mcp2515.h>

#include <CanHacker.h>
#include <CanHackerLineReader.h>
#include <lib.h>

#include <SPI.h>
#include <SoftwareSerial.h>

const int SPI_CS_PIN = 10;
const int INT_PIN = 2;

const int SS_RX_PIN = 0;
const int SS_TX_PIN = 1;

CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;

SoftwareSerial softwareSerial(SS_RX_PIN, SS_TX_PIN);

void setup() {
    Serial.begin(115200);
    while (!Serial);
    SPI.begin();
    softwareSerial.begin(115200);
    Stream *interfaceStream = &Serial;
    Stream *debugStream = &softwareSerial;
    
    
    canHacker = new CanHacker(interfaceStream, debugStream, SPI_CS_PIN);
    //canHacker->enableLoopback(); // uncomment this for loopback
    lineReader = new CanHackerLineReader(canHacker);
    
    pinMode(INT_PIN, INPUT);
}

void loop() {
    CanHacker::ERROR error;
  
    if (digitalRead(INT_PIN) == LOW) {
        error = canHacker->processInterrupt();
        handleError(error);
    }

    error = lineReader->process();
    handleError(error);
}

void handleError(const CanHacker::ERROR error) {

    switch (error) {
        case CanHacker::ERROR_OK:
        case CanHacker::ERROR_UNKNOWN_COMMAND:
        case CanHacker::ERROR_NOT_CONNECTED:
        case CanHacker::ERROR_MCP2515_ERRIF:
        case CanHacker::ERROR_INVALID_COMMAND:
            return;

        default:
            break;
    }
  
    softwareSerial.print("Failure (code ");
    softwareSerial.print((int)error);
    softwareSerial.println(")");

    digitalWrite(SPI_CS_PIN, HIGH);
    pinMode(LED_BUILTIN, OUTPUT);
  
    while (1) {
        int c = (int)error;
        for (int i=0; i<c; i++) {
            digitalWrite(LED_BUILTIN, HIGH);
            delay(500);
            digitalWrite(LED_BUILTIN, LOW);
            delay(500);
        }
        
        delay(2000);
    } ;
}

как минимум у вас проблема в коде. И не одна.
Во- первых, использовать пины 0 и 1 для софтсериал нельзя, поскольку на этих же пинах сидит подключение к пк- вместе они на одних и тех же пинах не работают.
А во-вторых, даже если бы ваш код что-то принимал - я не вижу чтобы вы это куда-то выводили.

я не вижу чтобы вы это куда-то выводили.

я использую программу Сan Hacker я это уточнил вроде подключаюсь к пк по com порту

Ок, а что насчет пинов софтсериала? Да скорость 115200 слишком велика

тут код не мой взят из интернета и единственный ± адекватно работающий с этой программой

Если он “адекватно работает” - тогда в чем вопрос?

Я вам указал на ошибки в коде - если вы уверены, что они не влияют на работу, значит вы разбираетесь в этом лучше меня.

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

...
const int SS_RX_PIN = 3;
const int SS_TX_PIN = 4;
...
1 лайк

Ясно… ТС даже “списать из интернета” не смог правильно:)