Как преобразовать int n
в строку, чтобы при отправке по серийному номеру она отправлялась как строка?
Вот что у меня есть на данный момент:
int ledPin=13;
int testerPin=8;
int n=1;
char buf[10];
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(testerPin, OUTPUT);
Serial.begin(115200);
}
void loop()
{
digitalWrite(ledPin, HIGH);
sprintf(buf, "Hello!%d", n);
Serial.println(buf);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
n++;
}
Ответы:
Используйте так:
Вы можете найти больше примеров здесь .
источник
используйте
itoa()
функцию, включенную вstdlib.h
источник
Вы можете просто сделать:
который автоматически преобразуется
n
в строку ASCII. См. Документацию дляSerial.println()
.источник
Вам просто нужно обернуть его вокруг объекта String следующим образом:
Вы также можете:
источник
Это оптимизированное по скорости решение для преобразования int (16-разрядного целого числа со знаком) в строку.
Эта реализация позволяет избежать использования деления, так как 8-битный AVR, используемый для Arduino, не имеет аппаратной инструкции DIV, компилятор переводит деление в требующие много времени повторяющиеся вычитания. Таким образом, самым быстрым решением является использование условных переходов для построения строки.
Фиксированный 7-байтовый буфер, подготовленный с самого начала в ОЗУ, чтобы избежать динамического распределения. Поскольку это всего 7 байт, стоимость использования фиксированной ОЗУ считается минимальной. Чтобы помочь компилятору, мы добавляем модификатор регистра в объявление переменной для ускорения выполнения.
Этот набросок скомпилирован в 1082 байта кода с использованием avr-gcc, который поставляется вместе с Arduino v1.0.5 (размер самой функции int2str составляет 594 байта). По сравнению с решением, использующим объект String, который скомпилирован в 2398 байтов, эта реализация может уменьшить размер вашего кода на 1,2 КБ (предполагается, что вам не нужен другой метод объекта String, и ваше число строго соответствует типу int со знаком).
Эту функцию можно дополнительно оптимизировать, написав ее в соответствующем коде ассемблера.
источник
Решение слишком велико. Попробуйте этот простой. Пожалуйста, предоставьте буфер из 7+ символов, проверка не проводилась.
Может быть легко изменен, чтобы вернуть конец буфера, если вы отбросите индекс l и напрямую увеличите буфер.
источник
для получения дополнительной информации посетите сайт arduino https://www.arduino.cc/en/Serial/Println
желаю, чтобы это помогло вам. благодаря!
источник
Ниже приведен самосозданный myitoa (), который намного меньше по размеру кода и резервирует ФИКСИРОВАННЫЙ массив из 7 (включая завершающий 0) в char * mystring, что часто бывает желательно. Очевидно, что вместо этого можно построить код со сдвигом символов, если нужна выходная строка переменной длины.
источник
Это просто работает для меня:
источник