Интеграция Arduino с выпуском VESC
Я пытаюсь интегрировать vesc с arduino и запускаю простой код для вывода напряжения и других данных на последовательный монитор. Ниже приведен код для справки. Когда я проверяю вывод, кажется, что он неправильно анализирует данные. Я вижу результат как @⸮ @⸮ @⸮ @⸮ Я использую код с этой страницы github:VESC-UART-Arduino
/*
Связь Arduino UART с VESC. Это программное обеспечение считывает данные телеметрии VESC
и отображает их на OLED-дисплее. Этот код находится в стадии разработки для
улучшенного дистанционного управления ppm.
Она написана Сашей Эдерером (roboshack.wordpress.com), на основе кода
Дженки (pedelecforum.de), Андреас Чайтидис ([email protected])
и Бенджамин Веддер (www.vedder.se).
Авторское право (C) 2016
Эта программа является свободным программным обеспечением; вы можете распространять ее и/или изменять
в соответствии с условиями Общей публичной лицензии GNU, опубликованной Фондом
свободного программного обеспечения; либо версия 3 Лицензии, либо
(по вашему выбору) любая более поздняя версия.
Эта программа распространяется в надежде, что она будет полезна,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии ТОВАРНОЙ
ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. См
. Общую публичную лицензию GNU для получения более подробной информации.
Вы должны были получить копию Общей публичной лицензии GNU
вместе с этой программой; если нет, напишите в Фонд свободного программного обеспечения,
Inc., 51 Франклин-стрит, Пятый этаж, Бостон, Массачусетс 02110-1301
*/
#include "config.h"
//#include "printf.h"
#include "datatypes.h"
#include "vesc_uart.h"
#include <SPI.h>
//Library for the OLED Display
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
mc_values VescMeasuredValues;
float current = 0.0; //измеренный ток батареи
float motor_current = 0.0; //измеренный ток двигателя
float voltage = 0.0; //измеренное напряжение батареи
float c_speed = 0.0; //измеренные обороты в минуту * Pi * диаметр колеса [км] * 60 [минуты]
float c_dist = 0.00; //измеренный одометрический тахометр [оборотов] * Pi * диаметр колеса [км]
double power = 0.0; //расчетная мощность
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
//Setup---------------------------------------------------------------------------------------------------------------------
void setup()
{
SERIALIO.begin(115200);
/* // инициализировать с помощью I2C addr 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
// установить цвет текста
display.setTextColor(WHITE);
// установить размер текста
display.setTextSize(1);
// установить отображение положения курсора
display.setCursor(1,0);
// показать текст
display.println("Запуск системы");
display.display();
delay(1000);
display.clearDisplay();*/
}
void loop()
{
if (vesc_get_values(VescMeasuredValues)) {
// расчет нескольких значений, которые будут показаны позже
voltage = VescMeasuredValues.v_in;
current = VescMeasuredValues.current_in;
motor_current = VescMeasuredValues.current_motor;
power = current*voltage;
c_speed = (VescMeasuredValues.rpm/38)*3.14159265359*0.000083*60;
c_dist = (VescMeasuredValues.tachometer/38)*3.14159265359*0.000083;
Serial.println(voltage);
//Serial.println(current);
/*Serial.println(motor_current);Serial.println(power);
Serial.println(c_speed);
Serial.println(c_dist);*/
}
else
{
Serial.println(" ");
}
}
Кто-нибудь знает, что может вызвать эту проблему?
@Dave, 👍1
Обсуждение1 ответ
▲ 0
Код библиотеки, который я опубликовал выше, предназначался для более старой версии VESC. Я использовал код от Emil/Solidgeek, и это сработало для меня.
,
@Dave
Смотрите также:
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
- Arduino nano как клавиатура HID
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
Вы установили правильную скорость передачи в последовательном мониторе?, @Python Schlange
запустите простой код "hello world", чтобы подтвердить, что последовательная связь работает должным образом, @jsotola
Я попробовал код hello world, и, похоже, он работает., @Dave
Да, я установил скорость передачи данных 115200 в последовательном мониторе. но в инструменте vesc я попробовал 100 К и 125 К, так как нет возможности выбрать 115200 (используя опцию ADC и UART из dorpdown), @Dave
Вы должны выбрать боду, которая понравится им обоим, или это не сработает. Вы также утверждаете, что, похоже, это работает, что это мне говорит?, @Gil
Я попробовал код hello world, который, похоже, распечатывается на последовательном мониторе arduino. Чтобы проверить и посмотреть, меняется ли скорость передачи данных в коде arduino, я установил скорость передачи данных в бодах на 100 кб в коде arduino, а также в vesc, но даже тогда, похоже, он не распечатывал никаких данных, @Dave
@Дейв, пара мыслей, 1) вы печатаете адрес указателя, а не значение (не очень хорошо знакомы с библиотекой), 2) это байтовое представление значения?, @J Collins