Lógica e sentido comum são usados diariamente, seja por sistemas eletrônicos ou pessoas. Neste artigo, lógica e, lógico OR, XOR lógico, lógica sequencial e saber como podemos executar estas instruções sobre a placa Arduino Uno, sem ser um programador, precisamos conhecer os elementos que influenciam a lógica binária, ele tem muito a ver com as escolhas que fazemos em nossas vidas diárias. Quase todos os equipamentos eletrônicos usa a lógica digital para tomar decisões e funcionar, daí a importância de conhecer esse assunto.
MIC039S
A eletrônica moderna e os seus resultados como: telefones celulares, computadores, televisores, equipamentos industriais, médicos, etc., não seria possível sem o uso de circuitos lógicos digitais e lógica aplicada a eles. Lógica e bom senso têm muito a ver, porque com eles é que os aparelhos funcionam de modo aceitável.
As principais instruções lógicas são:
OU
AND
XOR
NÃO
Na Figura 1 podemos ver a placa Arduino Uno e na Figura 2 um projeto de desenvolvimento de software, que pode ser baixado a partir do site Arduino. A Figura 3 mostra a semelhança entre a placa Arduino Uno e da mente humana, para 2 permitem operações lógicas.
As operações lógicas é que fazem com que o cérebro possa ser consciente ou inconsciente. Quando consciente, percebemos a operação, ação ou decisão que estamos fazendo. Quando no subconsciente, nós não percebemos, mas executamos. Lógica e o bom senso ou maneira de pensar de cada pessoa, têm muitas semelhanças. Assim, existe uma semelhança entre uma placa como Arduino e a mente humana no modo como os processos lógicos são executados.
Em eletrônica muitas operações lógicas são realizadas, pois todos os sistemas eletrônicos modernos as utilizam. Neste artigo, vamos estudar essas operações ou instruções.
Operações OR, AND, XOR e NOT, são operações de bit a bit. Isso significa que essas operações lógicas são realizadas em bits individuais dos operandos.
A INSTRUÇÃO LOGICA OR (||).
A lógica OU ou OR segue o princípio da operação do circuito mostrado na Figura 4.
Notamos que fechar o circuito com qualquer um dos 2 interruptores, a lâmpada acende. Mesmo se os dois interruptores estejam fechados, a lâmpada acende-se. Esse é o OR ou OU lógico. A única maneira que nenhuma lâmpada acenda é que os 2 interruptores estejam abertos. Assim, criamos tabelas verdade para cada instrução lógica. Na Figura 5 podemos ver a tabela verdade para a lógica ou instrução OR.
Esta tabela simpifica o que foi dito anteriormente. A Figura 6 mostra o diagrama esquemático utilizado para a lógica OU.
Da vida prática podemos citar um exemplo onde usamos a lógica OR. Por exemplo, quando vamos de nosso trabalho para nossa. Temos várias alternativas, tais como:
- Você pode ir caminhando.
- Você pode andar de bicicleta.
- Você pode ir de moto.
- Você pode ir de ônibus ou perua.
- Você pode ir de metro.
- Você pode ir de táxi.
- Você pode ir de carro.
Qualquer das alternativas acima pode nos levar para casa e atingir o objetivo desejado. Para cada possibilidade que você pode fazer uma entrada em um OR lógico. A Figura 7 mostra uma lógica OU 7 entradas.
Você pode criar portas lógicas OR com o número de entradas que precisar. O cérebro este tipo de lógica quase que diariamente e embora nós não percebamos ou estamos cientes disso. Tente analisar os atos ou decisões que tomamos e vemos que nós sempre usamos esse tipo de lógica.
O símbolo usado em linguagem C / C ++ para a lógica OR, é a barra vertical (||). Na placa Arduino Uno, normalmente funciona no nível de byte, que ou seja, 8 bits. A Figura 8 mostra um byte.
Note que existem 8 bits. Quando você executa um nível de instrução byte OR, todos os 8 bits dão o resultado, ao mesmo tempo, mas a individualidade de cada bit é mantida; ou seja, o bit 0 do byte 0 com o bit 0 do byte um, e assim por diante.
O programa da Figura 9, seria o seguinte:
byte operando1 = B01011000;
byte operand2 = B11011011;
resultado de byte = 0;
void setup () {
}
void loop () {
Resultado = operand1 | operand2;
}
Depois de executar o programa, o resultado aparecerá com o valor binário B11011011. Experimente valores diferentes e observe os resultados.
A Figura 10 mostra outro exemplo de lógica OR, mas neste caso os valores são inteiros (unsigned int).
No Arduino Uno, os tipos de dados int são formados por 2 bytes. O programa seria o seguinte:
Unsigned int operando1 = B0000000001011100;
Unsigned int operando2 = B0000000001100101;
unsigned int = 0;
void setup () {
}
void loop () {
Resultado = operando 1 | operando 2;
}
Depois de executar o programa o resultados aparecerá com o valor binário B0000000001111101. Experimente valores diferentes e observe os resultados.
A lógica OR pode ser usada em um alarme em casa. Podemos conectar portas e janelas às entradas lógicas da placa de um microcontrolador e testar se alguma delas foi ativada. Veja a Figura 11.
A INSTRUÇÃO LÓGICA E (&).
A figura 12 mostra o circuito elétrico que representa a instrução lógica AND. Vamos observar que somente quando os 2 interruptores estiverem fechados, a lâmpada acenderá.
Casos contrários a lâmpada não acende. É como se disséssemos: "A lâmpada está ligada, somente se o interruptor A e o interruptor B estiverem fechados". A Figura 13 mostra a tabela de verdade para a lógica AND.
A Figura 14 mostra o símbolo AND lógico e a Figura 15 mostra alguns exemplos dessa lógica.
Na vida cotidiana, também usamos muito essa lógica AND. Por exemplo, quando vamos retirar dinheiro de um caixa eletrônico, é necessário ter o cartão ou cartão que permite debitar a conta e também ter a senha. Se um desses dois itens estiver faltando, não podemos tirar o dinheiro.
Outro exemplo, onde é necessário ter vários itens para atingir nosso objetivo, pode ser quando queremos preparar um bolo ou “pudim" por exemplo. Você precisa ter todos os ingredientes, um recipiente onde colocá-los e um forno. A Figura 16 mostra este exemplo.
Na eletrônica, essa lógica é amplamente usada. Por exemplo, no alarme de uma casa, quando queremos desativar o alarme. Veja a Figura 17.
Mesmo que os sensores são acionados, o alarme não soa porque um dos pinos de entrada da lógica AND está em nível baixo (0 volts)
O símbolo usado na linguagem C / C ++ para a lógica AND é o símbolo &. Vamos ver o seguinte programa:
byte operando1 = B01011000;
byte operand2 = B11011011;
resultado de byte = 0;
void setup () {
}
void loop () {
result = operand1 & operand2;
}
Depois de executar o programa, a variável de resultado será com o valor B01011000. Veja a Figura 18.
O programa a seguir usa números inteiros sem sinal para executar a instrução AND:
Unsigned int operando1 = B0000000001011100;
Unsigned int operando2 = B0000000001100101;
unsigned int = 0;
void setup () {
}
void loop () {
result = operand1 & operand2;
}
Depois de executar o programa de resultados, ele aparecerá com o valor binário B0000000001000100. Veja a Figura 19. Tente valores diferentes e observe os resultados.
A INSTRUÇÃO LÓGICA XOR (^).
A lógica XOR também é conhecida como ESCLUSIVE OR (OU Exclusivo), ou seja, somente quando uma das entradas está em um nível alto (5 Volts), a saída também estará em um nível alto. Veja a tabela de verdade na Figura 20.
Se as duas entradas estiverem em alto nível, a saída será em nível baixo. Além disso, se as duas entradas estiverem em nível baixo, a saída estará em nível baixo. O diagrama esquemático da lógica XOR pode ser visto na Figura 21.
O símbolo usado para representar a instrução XOR é o símbolo de cursor (^).
Um exemplo de XOR pode ser dado quando uma pessoa quer se casar ou formar uma família, mas têm duas namoradas. Sendo esse o caso, você pode se casar, se você escolher um das namoradas, mas você não pode se casar, com as duas. Assim, em muitas coisas ou atitudes humanas, é possível ver o uso da lógica XOR.
Na Figura 22 podemos ver um exemplo de XOR no nível de byte.
Vamos ver o seguinte programa:
byte operando1 = B01011000;
byte operando2 = B11011011;
byte resultado = 0;
void setup () {
}
void loop () {
resultado = operando1 ^ operando2;
}
Depois de executar o programa, a variável de resultado será o valor B10000011.
O programa a seguir usa números inteiros sem sinal para executar a instrução XOR:
Unsigned int operando1 = B0000 0000 0101 1100;
Unsigned int operando2 = B0000 0000 0110 0101;
unsigned int = 0;
void setup () {
}
void loop () {
resultado = operando1 ^ operando2;
}
Depois de executar o programa, o resultado aparecerá com o valor binário B0000000000111001. Veja a Figura 23. Tente valores diferentes e observe os resultados.
A INSTRUÇÃO LÓGICA NÃO (~).
A instrução lógica NÃO inverte os bits de um byte, isto é, se o bit tem um nível baixo (0 volts) é passado para o nível alto (1 volt) e se o bit tem um nível alto, o bit é alterado para o nível baixo. A figura 24 mostra o diagrama esquemático da lógica NOT.
A Figura 25 mostra a tabela verdade para a lógica NOT. Esta operação é do tipo unitário, isto é que se aplica sobre uma variável.
O símbolo usado na linguagem C / C ++ para a lógica NOT é o símbolo ~. Vemos o seguinte programa:
byte operando1 = B01011000;
resultado de byte = 0;
void setup () {
}
void loop () {
resultado = ~ operando1;
}
Depois de executar o programa, a variável de resultado será B10100111. Veja a Figura 26.
O programa a seguir usa números inteiros sem sinal para executar a instrução NOT:
Unsigned int operando1 = B00000000 01011100;
unsigned int = 0;
void setup () {
}
void loop () {
resultado = ~ operando1;
}
Depois de executar o programa de resultados, ele aparecerá com o valor binário B1111111110100011. Veja a Figura 27. Teste com valores diferentes e observe os resultados.
LÓGICA COMBINACIONAL.
A lógica combinacional nasce quando combinamos as lógicas vistas anteriormente, isto é, as saídas são o resultado da lógica dispostas em um circuito. A palavra combinacional já diz tudo: combinar, misturar ou juntar várias das lógicas OR, AND, XOR, NOT, para chegar algum resultado.
No exemplo a seguir, a lógica AND e OR são combinadas.
Veja a Figura 28 e vamos ver o seguinte programa:
byte operando1 = B0101 1000;
byte operando2 = B1101 1011;
byte operando3 = B0011 0011;
byre resultado = 0;
void setup () {
}
void loop () {
resultado = operando1 & operando2;
resultado = resultado | operando3;
}
Depois de executar o programa, a variável de resultado terá o valor B01111011.
O programa a seguir usa números inteiros sem sinal para executar a instrução lógica combinacional:
Unsigned int operando1 = B0000 0000 0101 1100;
Unsigned int operando2 = B0000 0000 0110 0101;
Unsigned int operando3 = B1111 0000 1100 1100;
unsigned int = 0;
void setup () {
}
void loop () {
resultado = operando1 & operando2;
resultado = resultado | operando3;
}
Depois de executar o programa, o resultado aparecerá com o valor binário B1111000011001100. Experimente valores diferentes e observe os resultados.
Vamos dar outro exemplo de lógica combinacional. Neste exemplo, as lógicas OR, AND e NOT são combinadas.
Veja a Figura 29 e veja o seguinte programa:
byte operando1 = B0101 1000;
byte operando2 = B1101 1011;
byte operando3 = B0011 0011;
byte operando4 = B1111 0000;
byte resultado = 0;
void setup () {
}
void loop () {
resultado = operando1 | operando2;
resultado = resultado & operando3;
resultado = resultado | operando4;
resultado = ~ resultado;
}
Depois de executar o programa, a variável de resultado terá o valor B00001100.
O programa a seguir usa números inteiros sem sinal para executar a instrução lógica combinacional:
Unsigned int operando1 = B0000 0000 1011 1000;
Unsigned int operando2 = B0000 0000 0110 0101;
Unsigned int operando3 = B1111 0000 1100 1100;
Unsigned int operando4 = B1010 1010 1010 1010;
unsigned int = 0;
void setup () {
}
void loop () {
resultado = operando1 | operando2;
resultado = resultado & operando3;
resultado = resultado | operando4;
resultado = ~ resultado;
}
Depois de executar o programa de resultados, ele aparecerá com o valor binário B0101010100010001. Experimente valores diferentes e observe os resultados.
OPERAÇÕES BOOLEAS.
Operações booleanas podem ser usadas para verificar se duas ou mais expressões são verdadeiras ou falsas e são normalmente usadas em declarações condicionais, como if ou while. Devemos ter cuidado para não confundir as instruções no nível de byte ou inteiro (int), com as operações booleanas. Instruções booleanas usam dois caracteres como este:
AND &&
OR ||
OPERAÇÃO BOOLEANA E (&&).
A operação booleana AND é verdadeira (true), somente se suas duas expressões forem verdadeiras. Normalmente, a operação AND booleana é usada em uma instrução condicional if (). Vamos ver o seguinte exemplo:
if (digitalRead (2) == HIGH && digitalRead (3) == HIGH) // verifique se ambas as entradas são altas.
{
// Instruções.
}
No código anterior, eles estão verificando se a entrada digital 2 e a entrada digital 3 estão no nível lógico alto. Se as duas entradas forem altas, as instruções entre os colchetes ({}) serão executadas. Caso contrário, o programa irá pular e as instruções não serão executadas.
OPERAÇÃO BOOLEANA OU ou OR (||).
A operação booleana OU será verdadeira, se alguma das duas expressões for verdadeira. Vamos ver o seguinte exemplo:
if (x> 0 || y> 0) // sim, any, x ou y é maior que zero (0).
{
// instruções.
}
Na linha de código anterior, estamos testando se qualquer variável de x ou y é maior que zero (0). Se alguma das variáveis ??x ou y for maior que zero, então elas serão executadas, caso contrário, essas instruções não serão executadas.
CONCLUSÃO
Como podemos concluir, a lógica é muito simples porque segue o senso comum. A lógica OR diz que a meta é atingida por qualquer uma de suas entradas e a lógica AND diz que o objetivo é atingido, se todos os requisitos forem atendidos. A lógica XOR diz que apenas uma entrada pode ser ativada para atingir ou atingir a meta. A prática é a mãe do conhecimento, para que você possa testar e observar os resultados. Você também pode usar essa lógica para testar ou avaliar expressões aritméticas, através da operação booleana OR (||) e da operação booleana ADD (&&).