Разложение байта на биты

Antervis
Offline
Зарегистрирован: 26.04.2012

Есть ли в языке Arduino функция (оператор), позволяющая обращаться к отдельным битам байта?

Нет желания резервировать байт под каждый буль информации.

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

bitRead, bitWrite, bitSet и т.д. Здесь подробнее arduino.cc/en/Reference/BitRead

Antervis
Offline
Зарегистрирован: 26.04.2012

Спасибо, то, что нужно

leshak
Offline
Зарегистрирован: 29.09.2011

 А лучше почитать в http://arduino.cc/en/Reference/HomePage раздел "Bitwise Operators"

С помощью них вы сделаете все то же самое, и возможно даже более гибко. Плюс на всех форумах, примерах, либах используются именно они. bitRead и т.п. - ни разу не видел их в живом проекте. Так что "осваивать" все равно нужно будет.

Если же хочется "феншуя" и что-бы код легко читался, то возможно стоит посмотреть в сторону структур и "битовых полей"

http://netlib.narod.ru/library/book0003/ch06_09.htm

Честно говоря не пробовал это на ардуине, но думаю "по приемственности" - должно работать. Тогда вы к каждому биту, сможете обращатся "по имени", а не помнить "его номер".

 

EuBeginer
Offline
Зарегистрирован: 16.11.2015

Коллеги всем доброго дня!

наконец-то, я вроде нащупал, то что искал. Проект простой - переделка жд макета из ТТЛ на Ардуино. Более гибко, меньше помех, более бюджетно и т.п.  Заразила Ардуино - наша жд молодежь. Кое-что уже сделали, кое-что в разработке. Но я после двухмесячных раздумий , поиска и чтения литературы, понял, что огромные перспективы в нашем деле открывает шина 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