Teensy LidarLite LIDARУсовершенствовано неизвестное преобразование для аргумента 2 из ‘int16_t * {aka short int *}’ в ‘int *’

Я использую Teensy 3.5 для запуска модуля LidarLite v3 и получаю следующую ошибку:

teensy no known conversion for argument 2 from 'int16_t* {aka short int*}' to 'int*'

Эта ошибка повторяется для ряда различных функций. Как я могу заставить компилятор использовать 16-битное int вместо 32-битного int?

Обновление 1:

Выполнение кода:

#include <Arduino.h>
#include <Wire.h>
#include <I2CFunctions.h>
#include <LidarObject.h>
#include <LidarController.h>

#define WIRE400K true
// Trigger pin, can be unplugged
#define Z1_LASER_TRIG 11
// Enable pin, IMPORTANT
#define Z1_LASER_EN 12
// Mode pin, can be unplugged
#define Z1_LASER_PIN 13
//Define address of lasers
//Thoses are written during initialisation
// default address : 0x62
#define Z1_LASER_AD 0x6E

#define NUMBER_OF_LASERS 1

// Create lasers
static LidarController Controller;
static LidarObject LZ1;

void setup()
{
Serial.begin(115200);
// Configure lasers
LZ1.begin(Z1_LASER_EN, Z1_LASER_PIN, Z1_LASER_TRIG, Z1_LASER_AD, 2, DISTANCE, 'A');
LZ1.setCallbackDistance(&distance_callback);
// Add the laser to the Controller
Controller.add(&LZ1, 0);

delay(100);
Controller.begin(WIRE400K);
delay(100);
}

void distance_callback(LidarObject* self){
Serial.println(self->distance);
}

void loop()
{
Controller.spinOnce();
// Rest of your non blocking application.
}

Библиотека, о которой идет речь, расположена по адресу: https://github.com/AlexisTM/LIDAREnhanced

0

Решение

Как и другие ответы на этом сайте, плата для подростков является 32-битной платой, что означает, что int является 32-битным. Библиотека LIDAREnhanced и библиотеки WIRE предполагают, что значение составляет 16 бит.

Для того, чтобы исправить библиотеку LIDAREnhanced вы должны пойти в LidarController.h и изменить каждую ссылку на int в int16_t, Это заставит компилятор обрабатывать любое целое число в файле как один и тот же тип.

Кроме того, для Teensy 3.x я также изменил каждый #include <Wire.h> в #include <i2c_t3.h>, Библиотека i2c_t3 была разработана для работы с i2c-коммуникациями для подростков 3.x.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]