Portas lógicas são a base para a construção de todos os circuitos digitais que conhecemos: desde circuitos integrados ASIC até FPGA’s, todo componente eletrônico que processa alguma informação digital é baseado em portas lógicas. Portas lógicas são os mais simples elementos digitais existentes, e sua função é processar o sinal de uma ou mais entrada afim de produzir um sinal de saída.

   Todo aluno/iniciante que se propõe a aprender eletrônica é exposto ao conceito de portas lógicas já nos primeiros momentos de todo curso/estudo, tendo como base a lógica matemática e a álgebra de Boole. As atividades práticas sobre o assunto (quando oferecidas) tem como base na maioria das vezes os conhecidos circuitos integrados lógicos das família 74xx e 40xx, que basicamente encapsulam portas lógicas de forma a tornar prática sua utilização.

Circuito integrado 7400

   Porém neste artigo eu não vou utilizar nenhum circuito integrado destas famílias lógicas, eu vou te ensinar a implementar todas as portas lógicas individualmente no Arduino!. A ideia me surgiu na cabeça após lembrar como eu mesmo aprendi eletrônica digital (lá em 2003): montando circuitos integrados na protoboard, cheio de fios pra cá e pra lá!.

   A vantagem de implementar diferentes portas lógicas no Arduino é que o hardware não precisa mudar (apenas botões e led’s) e o software/sketch é facilmente modificável.

   Para começar nossos experimentos monte o circuito abaixo no seu Arduino; são somente dois botões, um Led e três resistores:

entradas e saídas do Arduino

   Eu escrevi o código abaixo contemplando todas as sete (7) portas lógicas básicas. Basicamente o que este programa faz é implementar a função lógica em apenas uma linha de código, fazendo uso dos operadores lógicos disponíveis na linguagem do Arduino (disponíveis aqui).

   Neste sketch somente uma função lógica pode ser testada por vez, visto que o nosso hardware tem somente dois botões e um LED. Para utilizar cada uma das portas lógicas basta descomentar (tirar o “//”) da frente da linha desejada, e comentar (colocar o “//”) na frete das outras seis (6) linhas; aí é só compilar e esperar a IDE gravar o programa no seu Arduino.

   A entrada “A” da porta lógica está conectada no pino 2 do Arduino, a entrada “B” no pino 3 e a saída lógica (LED) está no pino 4.   Para esclarecer o funcionamento de cada porta lógica implementada eu coloco abaixo as linhas de código de cada uma:

  • Função lógica “E” (AND), que representa uma multiplicação binária (A x B):

 

  • Fução lógica “OU” (OR), que representa uma soma binária (A + B):

 

  • Função lógica “inverso” (NOT), inverte o valor binário entrado:

 

  • Função lógica “E inverso” (NAND), valor inverso da multiplicação binária (A x B):

 

  • Função lógica “OU inverso” (NOR), valor inverso da soma binária (A + B):

 

  • Função lógica “OU exclusivo” (XOR), valor exclusivo da soma (A + B):

 

  • Função lógica “OU exclusivo inverso” (XNOR), valor exclusivo invertido da soma (A +B):

Abaixo eu disponibilizo um vídeo onde demonstro cada uma das portas lógicas em funcionamento:

 

Em uma próxima oportunidade eu pretendo demonstrar a implementação de circuitos lógicos de memória (Flip-Flop’s) no Arduino. Até lá!.

Implementando portas lógicas no Arduino
Classificado como:                        

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
28 + 29 =