Настройка количества цифр для последовательной печати выходного значения датчика
Я получаю число оборотов двигателя вентилятора как 3200. Но если я получаю данные как 50, я должен получить значение, подобное 0050. Как я могу это сделать?
Я могу сделать это, например, проверить значение для однозначного (0-9), двузначного (10-99), трехзначного (100-999) и четырехзначного (1000-9999) значений. Мне нужно исправить размер цифры и отправить его через серийный номер. Есть ли другой способ для этого?
2 ответа
Вы можете использовать функцию C sprintf
:
char text[5];
sprintf(text, "%04d", number);
Serial.println(text);
Начальный 0 в 04d добавит нули для длины (4), поэтому 1 станет 0001, 10 станет 0010, 100 станет 0100, а 1000 останется 1000.
Три оператора if выглядят немного упрощенно, но по размеру кода они намного лучше, чем sprintf
, если это единственное использование sprintf.
if (number < 1000) Serial.write('0');
if (number < 100) Serial.write('0');
if (number < 10) Serial.write('0');
Serial.println(number);
Сохраняет около 1,5 КБ флэш-памяти, скомпилированной с помощью Arduino 1.8.9 для Uno
если (число < 10) { Serial.print ("000"); } иначе если (число < 100) { Serial.print ("00"); } иначе если (число < 1000) { Serial.print('0'); } Это экономит еще 200 байт., @Michel Keijzers
- ОБНОВЛЕНИЕ: ошибка в коде обработки - не получает правильные данные от Arduino
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
- Serial1' was not declared in this scope
- Очень простая операция Arduino Uno Serial.readString()
это то, что я ожидал ... большое спасибо за ваш комментарий .., @Girinath Periyasamy
Почему char text[5]; ? Почему введено 5?? Почему не 4 или 3?, @Girinath Periyasamy