Funções de Manipulação de bits com o Arduino

Manipulação de bits com o Arduino

Arduino com potenciômetro

Nesta lição vamos apresentar diversas funções que permitem realizar manipulação de bits no Arduino. Com estas funções podemos controlar individualmente os bits que compõem um valor numérico inteiro, mesmo que ele seja representado no sistema de numeração decimal.

As funções que estudaremos são cinco: bit(), bitRead(), bitSet(), bitClear() e bitWrite().

Função bit()

Retorna o valor de uma dada posição de um bit (independente de variável)
bit(0) é igual a 1, bit(1) é 2, bit(2) é 4, e assim por diante.

A posição de bit 0 é e menos significativa (bit mais à direita, LSB)

Sintaxe:

bit(posiçãoBit)

Função bitRead()

Retorna o valor (0 ou 1) do bit em uma determinada posição de uma variável x.

Sintaxe:

bitRead(x, posiçãoBit)

Função bitSet()

Escreve um valor 1 em uma posição especificada de uma variável x.

Sintaxe:

bitSet(x, posiçãoBit)

Função bitClear()

Apaga (escreve um valor 0) em uma posição especificada de uma variável x.

Sintaxe:

bitClear(x, posiçãoBit)

Função bitWrite()

Escreve um valor 1 ou 0 em uma posição especificada de uma variável x.

Sintaxe:

bitWrite(x, posiçãoBit, valor)

Exemplo

Vejamos um exemplo de manipulação de bits. No programa a seguir declaramos uma variável x, que será utilizada para lermos e gravarmos bits utilizando as funções apresentadas na lição.

// Usando funções de manipulação de bits

int x = 0;
void setup() {
 Serial.begin(9600);
}

void loop() {
 Serial.print("Valor inicial de x: ");
 Serial.println(x);
 bitSet(x, 2);
 Serial.print("Valor de x apos configurar bit na pos. 2: ");
 Serial.println(x);
 Serial.print("Valor em binario: ");
 Serial.println(x, BIN);
 Serial.print("Verificando o bit na pos. 6: ");
 Serial.println(bitRead(x, 6));
 Serial.print("Valor em binario: ");
 Serial.println(x, BIN);
 Serial.print("Alterando o bit na pos. 6 e verificando novamente: ");
 bitWrite(x, 6, 1);
 Serial.println(bitRead(x, 6));
 Serial.print("Valor em binario: ");
 Serial.println(x, BIN);

 Serial.print("Valor atual do numero: ");
 Serial.println(x);
 Serial.print("Valor em binario: ");
 Serial.println(x, BIN);

 Serial.print("Limpando todos os bits do numero: ");
 for (int i=0; i<8; i++) {
   bitClear(x, i);
 }
 Serial.println(x);
 Serial.println();
 delay(3000);
}

Funções de manipulação de bits no Arduino

Neste programa de exemplo declamaros uma variável x, inicializada com o valor 0. Logo em seguida configuramos o bit da segunda posição em 1, o que equivale ao valor 4 (22), e exibimos seu valor em decimal e em binário na saída do Monitor Serial.

Depois, é verificado o valor do bit na posição 6 (que é 0), e então alteramos esse bit para 1. Essa alteração irá somar o valor 64 ao número, pois 26 = 64. Verificamos novamente o valor do número, em binário e em decimal, que será igual a 68 (4 + 64).

E, por fim, limpamos todos os bits do número, zerando-o novamente, por meio de uma instrução bitClear() aplicada em um laço for.

Próximo: Operadores de Deslocamento de Bits no Arduino

Sobre Fábio dos Reis (1083 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

1 Trackbacks & Pingbacks

  1. Operadores de Deslocamento de Bits no Arduino - Bóson Treinamentos em Tecnologia

Escreva um comentário

Seu e-mail não será divulgado


*