Ola garagistas,

A um tempo que venho tendo duvida com a utilização do Mux/Demux 4051, tenho estudado algumas coisas e já descobri informações interessantes mas ainda tenho duvidas na construção do código para minha utilização.

Preciso fazer leitura individual de cada uma das portas, em sinal digital, e atribuir uma função especifica para cada entrada (Canal). Segue a tabela verdade:

000 - Canal 0

100 - Canal 1

010 - Canal 2

110 - Canal 3

001 - Canal 4

101 - Canal 5

011 - Canal 6

111 - Canal 7

Um detalhe que me atrapalha é que eu preciso que a leitura seja em tempo real pois eu não sei qual o canal que vai ser ativo, ou seja vai ser uma leitura aleatória, o ideal seria todas as portas ativadas de uma vez mas como não é possível então uma troca rápida de canais funciona.

Alguém poderia me dar uma ajuda?

Obrigado

Exibições: 309

Responder esta

Respostas a este tópico

projetinho que fiz usando apenas 1 4051

https://github.com/rogerin/Arduino/blob/master/EXPANSOR_ANALOGICO/e...

tenho outro que uso 2, codigo maior, mas a ideia é a mesma..

Nosso amigo alexandre, fez uma placa, para expandir ate mais de 64 portas analogicas!! 

:D

mas sobre o "tempo real" acho melhor esperar um pouco entre a leitura e outra.

Essa questão do tempo real é essencial, para ficar como nesse video:

https://www.youtube.com/watch?v=pqn9w-9FuwU

Sem isso não funciona e um detalhe que eu esqueci de mencionar que acho que vai atrapalhar mais, tem que poder ler dois de uma vez

Consegui esse código, ele trabalha em uma velocidade rápida, menos um problema, mas agora não se como saber qual foi o canal ativado, para fazer uma ação individual para cada sensor.

/*

 * codeexample for useing a 4051 * analog multiplexer / demultiplexer

 * by david c. and tomek n.* for k3 / malm� h�gskola

 *

 * edited by Ross R.

 */  

 

int r0 = 0;      //value of select pin at the 4051 (s0)

int r1 = 0;      //value of select pin at the 4051 (s1)

int r2 = 0;      //value of select pin at the 4051 (s2)

int count = 0;   //which y pin we are selecting

 

void setup(){

 

  pinMode(2, OUTPUT);    // s0

  pinMode(3, OUTPUT);    // s1

  pinMode(4, OUTPUT);    // s2

}

 

void loop () {

 

  for (count=0; count<=7; count++) {

 

    // select the bit  

    r0 = bitRead(count,0);    // use this with arduino 0013 (and newer versions)    

    r1 = bitRead(count,1);    // use this with arduino 0013 (and newer versions)    

    r2 = bitRead(count,2);    // use this with arduino 0013 (and newer versions)    

    digitalWrite(2, r0);

    digitalWrite(3, r1);

    digitalWrite(4, r2);

 

    //Either read or write the multiplexed pin here
  }
}

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço