Записать двоичное число в массив
- Войдите на сайт для отправки комментариев
Сб, 16/01/2016 - 11:02
Здраствуйте. Голову сломал и гугл погнул, а найти не могу.
Нужно - десятичное число от 0 до 127 перевести в двоичное и записать его в виде массива. Чтобы каждый ноль и единица в своей ячейке. Второй день ум морщу и палатку грею и никак.
Ну вот, например : http://forum.arduino.cc/index.php?topic=203970.0
Или вот на ту же тему : http://forum.arduino.cc/index.php?topic=109262.0
Поаккуратнее там! Сломаете - где даташиты искать будем?
Araris, спасибо.
С наскоку не понял ничего, они там Аналоговы вход мучают, но думаю и мне должно подойти. Пошел изучать внимательно и вдумчиво (чертовы сдвиги битов). :)
Если будет время объясни пожалуйста на примере цифры 50. Надо её в массив[7] запихать :)
Поаккуратнее там! Сломаете - где даташиты искать будем?
Да шо ему сделается. © :)
Даже и не знаю, что и как объяснять.. Там несколько рабочих примеров разной сложности. Если заменить analogRead(0) на 50, или любую переменную типа int - ничего по сути не изменится.
Помогла другая ссылка (была внутри второй, данной тобой):
http://luckylarry.co.uk/programming-tutorials/arduino-programming/arduin...
Просто переменная int a=50;
переписывалась как строка String buf = String(a,BIN);
ну потом можно "выдирать" нули и единички из buf, как из обычного массива [] :)
Там же в статье описанно как дописать необходимые нули, до необходимой длинны в 8 символов.
Arasis, еще раз спасибо за наводку ;)
Просто переменная int a=50;
переписывалась как строка String buf = String(a,BIN);
ну потом можно "выдирать" нули и единички из buf, как из обычного массива [] :)
Фига-се!
Я-то думал, что из Питера в Москву через Хабаровск - далеко, а оказывается люди и через Мельбурн ездят!
Я извиняюсь, а каков тайный смысл всего этого дейсвия - вместо одного бвйта памяти, занять семь, чтобы озу и так не безграничная быстрее исчерпалась?
Я извиняюсь, а каков тайный смысл всего этого дейсвия - вместо одного бвйта памяти, занять семь, чтобы озу и так не безграничная быстрее исчерпалась?
Смысл следующий:
Собираю Лазер-Таг на ардуине (протокол Майлз 2)
В выстреле есть данные о игроке - ID, цвет команды и непосредственно урон.
Отправляется это всё массивом по IR каналу последовательностью нулей и единиц (ноль = импульсу 600 мкс, единица=1200)
ID игрока может быть от 0 до 127 (7 бит)
Вот и надо заполнить массив выстрела ...600,1200,600,600.... и тд, в зависимости от установочных данных
из промежуточного масива 7 байт (куда я переписывал ID=50 в двоичном виде) я и буду читать, что мне писать в массив выстрела - 600 или 1200.
Вот так. Как мог объяснил.
Если поняли, что мне надо и знаете как это сделать более элегантно, буду очень признателен за подсказку.
Можно сделать например так:
for (i=0; i<=7; i++) {
if (bitRead(data, i) == 0) delayMicroseconds(600);
else delayMicroseconds(1200);
}
ardunec
Как из массива переписать в длительность - вопрос даже не возникал.
Изначатно вопрос был - перевести число из десятичной ситемы в двоичную ввиде массива.
У же разобрался - результат меня устраивает.
Всем кто участвовал спасибо.
Как из массива переписать в длительность - вопрос даже не возникал.
В моём примере нет массива! Там однобайтное число разбивается на отдельные биты и, в зависимости от значения бита, выбирается нужная длительность.