Manual
do
Maker
.
com
No artigo anterior mostrei a leitura analógica desse multiplexador baratíssimo. Agora vamos ver de forma bem resumida como fazer a leitura digital; isto é, retornar 1 ou 0.
Quando fazemos a leitura analógica, temos valores que vão de 0 à 1023, correspondente a 10 bits. Para sensores analógicos é uma maravilha, e a resolução fica por conta do ADC. Já para analisar estados de pinos, apenas para saber se está em HIGH ou LOW, devemos modificar 2 linhas e incluir 1. Primeiramente, usemos como exemplo um botão conectado ao pino. Quando o botão for pressionado, vai para ground, portanto a leitura deve retornar 0.
Devemos definir um GPIO para a leitura. No caso, vou usar o pino 7. Onde fazemos analogRead, mudamos para digitalRead. Na função setup() devemos definir o pino como INPUT_PULLUP. Pronto, está feita a configuração!
O código é quase idêntico, mas disponho todo ele abaixo, bastando copiar e colar. Vale lembrar também que esse código está otimizado para trabalhar com atmega32u, que é a MCU do Arduino Leonardo e do Arduino Pro Micro. O Arduino Industrial 101 também o usa, mas é necessário testar porque não lembro de cabeça a disposição dos GPIO nessa placa híbrida.
O código:
#define READ_MUX_PIN 7
uint16_t pb_values = 0;
void handler(uint8_t value){
//agora não tem propósito, mas essa função fará sentido em outro artigo
Serial.print(value,BIN);
Serial.print(" - ");
Serial.println(pb_values);
}
uint8_t getValues(){
for (uint8_t i=0;i<16;i++){
PORTB |= (i<<4);
delay(1);
pb_values = digitalRead(READ_MUX_PIN);
Serial.print("C");
Serial.print(i);
Serial.print(":");
handler(pb_values);
PORTB &= ~(i<<4);
delay(1);
}
}
void setup() {
DDRB = 0xF<<4;
PORTB = 0;
pinMode(READ_MUX_PIN,INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
getValues();
delay(2000);
}
Como pode-se ver, com poucas linhas de código já fazemos o controle desse multiplexador. Para a leitura digital tem que escrever essas linhas a mais, mas não é nada fora do habitual.
No próximo artigo pretendo mostrar a escrita, tornando esse multiplexador útil para acionamento de relés, LEDs e afins.
Esse multiplexador extremamente barato você encontra na Eletrônica Mangili, que tem outros itens interessantes em sua lista, mas o link direto para o multiplexador é esse.
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.