Настройка количества цифр для последовательной печати выходного значения датчика

Я получаю число оборотов двигателя вентилятора как 3200. Но если я получаю данные как 50, я должен получить значение, подобное 0050. Как я могу это сделать?

Я могу сделать это, например, проверить значение для однозначного (0-9), двузначного (10-99), трехзначного (100-999) и четырехзначного (1000-9999) значений. Мне нужно исправить размер цифры и отправить его через серийный номер. Есть ли другой способ для этого?

, 👍1


2 ответа


3

Вы можете использовать функцию C sprintf:

char text[5];
sprintf(text, "%04d", number);
Serial.println(text);

Начальный 0 в 04d добавит нули для длины (4), поэтому 1 станет 0001, 10 станет 0010, 100 станет 0100, а 1000 останется 1000.

,

это то, что я ожидал ... большое спасибо за ваш комментарий .., @Girinath Periyasamy

Почему char text[5]; ? Почему введено 5?? Почему не 4 или 3?, @Girinath Periyasamy


3

Три оператора 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