Arduinoにおけるビット演算の便利な関数であるbit、bitSet、bitClearなどを解説します。
【値の変更】指定ビットの変更
bitSet関数は、指定した桁数のビットを1に変更します。
bitClear関数は、指定した桁数のビットを0に変更します。
bitWrite関数は、指定した桁数のビットを指定した値に変更します。
void setup() { Serial.begin(9600); } void loop() { // B11001100が上位バイト、B10101010が下位バイト uint16_t x = (B11001100 * 256) + B10101010; // 下位から1ビット目を1に変更 bitSet(x, 0); Serial.println(x, BIN);// 1100110010101011 // 下位から2ビット目を0に変更 bitClear(x, 1); Serial.println(x, BIN);// 1100110010101001 // 下位から8ビット目を0に変更 bitWrite(x, 7, 0); Serial.println(x, BIN);// 1100110000101001 }
【抽出】上位、下位バイト、指定ビットの取り出し
lowByte関数は、指定した数値から下位Byteを取り出すことができます。
highByte関数はその逆で、指定した数値から上位Byteを取り出すことができます。
void setup() { Serial.begin(9600); } void loop() { // B11001100が上位バイト、B10101010が下位バイト uint16_t x = (B11001100 * 256) + B10101010; // 上位バイトを取り出し uint8_t y1 = highByte(x); Serial.println(y1, BIN);// 11001100 // 下位バイトを取り出し uint8_t y2 = lowByte(x); Serial.println(y2, BIN);// 10101010 // 下位から2ビット目を取り出し uint8_t y3 = bitRead(x, 1); Serial.println(y3, BIN);// 1 }
【ArduinoでIoT入門】基本的な使い方から応用例まで解説
Arduinoで電子工作する方法やサンプルプログラム(ソースコード)を入門者向けに解説しています。
コメント