Объединение двоичных представление трех чисел
- Войдите на сайт для отправки комментариев
Чт, 11/02/2016 - 12:41
Здравствуйте!
Задача такая. Есть три числа:
char id[] = "89";
char team = '3';
char dmg[] = "100";(в таблице представлено как 1111)
Нужно перевест икаждое в двоичную систему, а после объединить в один 14-битный код.
89 - 1011001
3 - 11
100 - 1111
Нужно получить код:
01011001111111
Как того добиться на ардуине?
Есть библиотеки для перевод числа в другую систему счисления? вообщем-то если будет библиотека такая, то я сам дальше разберусь)
Во-первых, не парить себе мозг переводом чисел из одной системы в другую, потому что отображение таких чисел - это для удобства, для человека. Для МК пофиг в какой системе счисления задано число, он оперирует только двоичными данными и не знает, что эти означает. Самое главное, нужно точно знать позиционно, какой параметр куда нужно добавить. Например, это можно сделать так:
Здесь нет проверки на правильность длины каждой составляющей, потому, например, если задать код команды больше 3, код получится на выходе некорректный.
Для контроля выводить в Serial в HEX виде и проверять правильность.
Кстати, 100 - 1111 это ни в какие ворота не лезет ;) Потому что 1111 - это 15 (десятичное).
О, спасибо! Я еще не освоился с битовыми операциями, не увидел такой возможности)
А по поводу урона и то что 100 - это 1111. Это правило протокола milesTag2.
http://www.lasertagparts.com/mtformat-2.htm
урон от 1 до 100 закодирован 4 битами.
Урон тогда можно закодировать (добавить массив) и оставить от 1 до 100 (для удобства и чтобы не ошибаться), хотя я слабо себе представляю, что будет, если задать, например, 80 (брать как 100 или как 75). В общем это уже совсем другая история, как реализовать.
По поводу 100 - 1111, в условиях задачи про это мутно написано, потому я про это и сказал. Это еще хорошо, что я в теме, а если бы не был, то ни за что бы не догадался ;)
=)))
Я сделал заголовочный файл. В него прописал через #define все вариации урона и соответствующий код.
Потом в зависимости от типа игры, можно будет выбирать урон для моего тагера.
Вообще тагер уже стреляет. Благодаря тебе) Сейчас нужно писать принятие сигналов. Эта задачка обширнее, чем стрельба)
Тоже выход. Возможно кому то твой скетч поможет, можешь выложить результат, хотя бы в одну сторону как стреляет. Хотя, наверное это лучше сделать в другой теме, где всё началось, а здесь вставить ссылку на ту тему с комментарием, что исходники там.
Оружие стреляет кодом по протоколу MilesTag2. Скетч тут.