Tinkercad arduino simulator целые числа выводятся как большие числа, чем они есть?
Я использую симулятор Arduino на www.tinkercad.com (казалось бы, хороший бесплатный продукт от Autodesk). Работа над преобразованием целого числа в 16-битную двоичную строку для вывода в ЦАП, но, к сожалению, даже на первом шаге я получаю неожиданное поведение.
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.print("Sanity Check\n");
uint16_t num = 12000;
Serial.print("\nNumber: " + String(num) + "\n");
delay(3000);
}
Удивительно, но вышеприведенный код дал следующий вывод:
Sanity Check
Number: 12222
Есть ли что-то, что я делаю неправильно, или что-то не так с симулятором? Ошибка, по-видимому, возникает при любом значении более 10000. 10001, 10002, 10003 все печатаются как 10000. 11000, 11001, 11002, 11003 все печатают как 11111 и т. Д. Что могло произойти?
@user391339, 👍3
Обсуждение2 ответа
Лучший ответ:
Жучок. Другого объяснения нет. Реальное оборудование (Arduino Uno) печатает 12000.
Даже отладчик говорит мне, что значение этой переменной равно 12000.
Результаты:
Number: 12222
12000
12222 something
Наиболее интересно, что если вы укажете.println() номер
, он будет выведен правильно. Ошибка должна быть в конструкторе строкового
объекта, как показано в "тестовой" строке
. Эта ошибка также возникает в других типах данных, например int
.
Если вы используете только прямые последовательные вызовы.print[ln]
, вы сможете обойти эту ошибку.
- Как смоделировать Arduino?
- Моделирование Arduino Mega 2560 с GSM модулем с использованием Proteus
- Есть ли симулятор Arduino или эмулятор, который работает на OS X?
- Переключатель TinkerCAD, кажется, не работает (всегда закрыт)
- Моделирование систем на базе Интернета вещей в программном обеспечении
- Почему светодиод всегда горит в proteus?
- Arduino Uno - Аналоговый симулятор схем
- Сервопривод начинает трястись, когда я добавляю SIM900.begin(19200);
Мой Uno печатает “Номер: 12000”., @Edgar Bonet