Adquira estes componentes na Loja do Lab de Garagem
Neste tutorial, vamos mostrar como utilizar o multiplexador/demultiplexador 4051 com o arduino. O circuito integrado 4051 é multiplexador ou demultiplexador analógico que por endereçamento pode acionar uma porta desejada.
Olhando o datasheet, podemos ver a pinagem dele, como mostrada abaixo:
Onde:
VDD - Alimentação de 3V a 15V;
VSS - GND ou terra;
VEE - É a tensão negativa para geração de ruído entre as I/O's, neste tutorial, vamos conectá-lo no GND;
A0,A1,A2 - São as portas de endereçamento;
Y0,Y1...Y6,Y7 - São as portas para I/O's;
Z - É porta de entrada/saída a qual você vai utilizar para conectar com Arduino;
E - É o pino de habilitação do circuito integrado 4051.
Olhando novamente no datasheet, podemos ver qual endereço é necessário para ativar uma saída:
Ao ver a tabela, podemos ver que para que o 4051 funcione, é necessário aterrar o pino "E". E se aterrar os pinos de endereçamento A0,A1 e A2, irá ativar o pino Y0. E se conectar o A0 em VCC e os A1 e A2 no GND, vai ativar o pino Y1. Assim por diante.
Agora, podemos fazer o circuito com Arduino:
Aqui fizemos um teste montando com LDRS na entrada, mas você pode substituir os LDR's e os diodos por potenciometros.
Se tampar a luz no primeiro LDR da direita para esquerda, o primeiro led acenderá respectivamente. E assim por diante.
Agora, abra a IDE do Arduino e passe a seguinte programação:
/*
* Example of getting 16 i/o from 5 pins using a CD4051
*
* Based on tutorial and code by david c. and tomek n.* for k3 / malmö högskola
* http://www.arduino.cc/playground/Learning/4051?action=sourceblock&a...
*/
int selPin[] = { 14, 15, 16 }; // select pins on 4051 (analog A0, A1, A2)
int commonPin[] = { 17, 18}; // common in/out pins (analog A3, A4)
int led[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW }; // stores eight LED states
int CdSVal[] = { 0, 0, 0, 0 }; // store last CdS readings
int cnt = 0; // main loop counter
int persistDelay = 100; // LED ontime in microseconds
void setup(){
Serial.begin(9600); // serial comms for troubleshooting (always)
for(int pin = 0; pin < 3; pin++){ // setup select pins
pinMode(selPin[pin], OUTPUT);
}
}
void loop(){
flashLEDs();
if (cnt == 0){
for(int x; x < 8; x++){
led[x] = random(2);
}
}
cnt++;
if (cnt > 100) { cnt = 0; }
}
void flashLEDs() {
for(int pin = 0; pin < 2; pin++) { // set common pins low
pinMode(commonPin[pin], OUTPUT);
digitalWrite(commonPin[pin], LOW);
}
for (int bank = 0; bank < 4; bank++) {
for(int pin = 0; pin < 3; pin++) { // parse out select pin bits
int signal = (bank >> pin) & 1; // shift & bitwise compare
digitalWrite(selPin[pin], signal);
}
if (led[bank * 2]){ // first LED
digitalWrite(commonPin[0], HIGH); // turn common on
delayMicroseconds(persistDelay); // leave led lit
digitalWrite(commonPin[0], LOW); // turn common off
}
if (led[bank * 2 + 1]){ // repeat for second LED
digitalWrite(commonPin[1], HIGH);
delayMicroseconds(persistDelay);
digitalWrite(commonPin[1], LOW);
}
}
}
Conecte sua placa Arduino, selecione a versão da sua placa Arduino(UNO, Duemilanove, etc), selecione a porta(comX, ttyUSBx, ttyACMx) e lique em UPLOAD.
Pronto!! Você pode ver que ao tampar cada um dos LDR's, os leds acenderão.
E é isso aí!! Boa diversão!!! Se você tiver dúvidas, poste aqui no blog! Se tiver sugestões, poste aqui! Você pode ver nossos outros tutoriais, clicando aqui, e os projetos abertos, clicando aqui!
Referências:
http://dawson-station.blogspot.com.br/2010/01/mux-demux-cd4051-parl...
Comentar
Como devo ligar o CI se utilizar o Arduino Mega 2560 ?
Poderia fazer um exemplo com leitura individual das portas? ele serve como expansor de portas analógicas, ne iss
Vlw mano vey.
Este CI provavelmente é o mesmo (normalmente as primeiras letras identificam o fabricante).
Meio bobo da minha parte perguntar, mais o CI HEF4051B é igual ao CI CD4051? Obrigado
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)