Разложение байта на биты
- Войдите на сайт для отправки комментариев
Чт, 26/04/2012 - 18:26
Есть ли в языке Arduino функция (оператор), позволяющая обращаться к отдельным битам байта?
Нет желания резервировать байт под каждый буль информации.
bitRead, bitWrite, bitSet и т.д. Здесь подробнее arduino.cc/en/Reference/BitRead
Спасибо, то, что нужно
А лучше почитать в http://arduino.cc/en/Reference/HomePage раздел "Bitwise Operators"
С помощью них вы сделаете все то же самое, и возможно даже более гибко. Плюс на всех форумах, примерах, либах используются именно они. bitRead и т.п. - ни разу не видел их в живом проекте. Так что "осваивать" все равно нужно будет.
Если же хочется "феншуя" и что-бы код легко читался, то возможно стоит посмотреть в сторону структур и "битовых полей"
http://netlib.narod.ru/library/book0003/ch06_09.htm
Честно говоря не пробовал это на ардуине, но думаю "по приемственности" - должно работать. Тогда вы к каждому биту, сможете обращатся "по имени", а не помнить "его номер".
Коллеги всем доброго дня!
наконец-то, я вроде нащупал, то что искал. Проект простой - переделка жд макета из ТТЛ на Ардуино. Более гибко, меньше помех, более бюджетно и т.п. Заразила Ардуино - наша жд молодежь. Кое-что уже сделали, кое-что в разработке. Но я после двухмесячных раздумий , поиска и чтения литературы, понял, что огромные перспективы в нашем деле открывает шина I2C! Особенность в том, что у нас большое количество кнопок тумблеров, серв и т.п..... А вот на чистую DCC переходить не хочется. Хочется и по-арбайтать своими руками. Куда интереснее. Не все же покупать ....
Начал эксперименты с сервами и с шиной. Архитектура достаточно простая - на шине стоят расширители типа МСР23016 и ШИМ драйвера для серв типа РСА9685. Все пины расширителей МСР23016 сконфигурированы как "ВХОДЫ" и к ним подключены подтягивающие резисторы (10кОм на 5В) и тумблеры, которые могут сажать пин на землю. То есть 1 или 0. Так вот, каждому тумблеру, предполагается, будет соответствует одна серва. При переключении тумблера серва выполняет поворот влево или вправо ( неважно при каком значении - можно поменять) на +/-5 градусов.
Вопрос как "разложить" байт на биты? Да, было бы не плохо присвоить каждому биту ИМЯ булевой переменной.
Да, читал о командах (bit Read, bit Write ...) указанных выше, но как они будут работать на шине? Вопрос еще , можно ли оперировать именами 12 регистров в теле скетча, или это просто условное обозначение? (возник по прочтению вот этих материалов)
http://www.bristolwatch.com/arduino/arduino_mcp23016.htm
http://invent-systems.narod.ru/_pdf/mcp23016_rus.pdf