Ошибка Serial.write(buf, len). Как убрать ошибку и передать массив байтов?
int angleServo1,angleServo2 = 0;
const int axisX=A0; // ось Х подключена к A0
const int axisY=A1; // ось Y подключена к A1
int valX, valY = 0; // переменные для хранения записей осей
int datos[3];
#include <SPI.h>
void setup()
{
Serial.begin(9600);
}
void loop()
{
valX = analogRead(axisX); // Значение по оси X
valY = analogRead(axisY); // Значение оси Y
// масштабируем значение в интервале 0-180
angleServo1=map(valX,0,800,100,-100);
angleServo2=map(valY,0,810,100,-100);
datos[0] = angleServo1;
datos[1] = angleServo2;
Serial.write(datos, sizeof(datos));
delay(100);
}
ошибка: нет соответствующей функции для вызова «HardwareSerial::write(int [3], unsigned int)»
как убрать ошибку и передать массив байтов?
1 ответ
Лучший ответ:
Вы хотите отправить данные на компьютерную обработку или распечатать их для чтения пользователем? Функции write
отправляют необработанные данные. Для печати данных на последовательный монитор используются функции print
и println
.
Существует две функции write
. Первая отправляет один байт. Вторая отправляет массив байтов. Функции записи для отправки массива целых чисел нет. Вы можете преобразовать массив целых чисел в массив байтов, чтобы отправить массив как необработанные байты для обработки на принимающей стороне. Но тогда вам, возможно, сначала следует отправить принимающей стороне некоторые контрольные данные о пакете данных.
Serial.write((byte*) datos, sizeof(datos));
Если вы хотите вывести числа на последовательный монитор, функции print
имеют варианты, которые принимают число и преобразуют его в строку. Но нет функции print
для вывода массива чисел. Вы должны вывести их одно за другим в цикле for. И поставить между ними какой-нибудь разделитель (запятую, пробел, новую строку).
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды