Manual

do

Maker

.

com

Como fazer leitura digital do CD74HC4067

Como fazer leitura digital do CD74HC4067

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.

Leitura digital

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!

Código para leitura digital do CD74HC4067

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.

Onde comprar o CD74HC4067?

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.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.