A instrução if-else é talvez uma das instruções mais utilizadas em projetos eletrônicos que utilizam a linguagem Python. Além disso, a lógica bit a bit é amplamente utilizada, especialmente nas entradas e saídas digitais da placa Raspberry PI4B. daí a importância de saber utilizá-los na linguagem Python. Neste capítulo, estudaremos a instrução if-else e a lógica bit a bit.
Como visto no capítulo anterior, com a linguagem Python podemos controlar as entradas/saídas digitais da placa Raspberry Pi4B. Além disso, podemos controlar periféricos de comunicação como: porta serial, porta I2C e porta SPI. É necessário conhecer a instrução "if-else" e a lógica bit a bit da linguagem Python, para ler as entradas digitais e controlar as saídas digitais e periféricos. Observe a figura a seguir, onde a partir do Python controlamos a CPU e a partir da CPU controlamos as entradas/saídas da placa Raspberry Pi4B.
Normalmente as instruções que estão dentro da memória de instruções de um microcontrolador são executadas sequencialmente, ou seja, são executadas uma após a outra e assim sucessivamente. Mas na maioria dos circuitos que utilizam microcontroladores, é preciso quebrar essa sequência, para tornar os projetos inteligentes. As declarações: "if", "else" e "elif", nos permitem quebrar a sequência de execução das instruções como veremos neste capítulo.
A lógica de programação é muito semelhante ao comportamento humano perante a vida. Por exemplo, se estiver chovendo, é muito provável que a maioria das pessoas leve um guarda-chuva, se for sair de casa. Ou se uma pessoa está com sede, encontre água para beber. Nos microcontroladores a lógica é bem parecida, como veremos neste capítulo. Para o desenvolvimento dos exemplos e práticas deste capítulo, utilizei o editor: "Visual Studio Code", conforme figura a seguir:
Existem muitos editores e ambientes de desenvolvimento para Python. Você pode usar qualquer um deles, pois os exemplos mostrados neste capítulo são compatíveis com esses ambientes.
A seguir está uma lista das instruções usadas para testar uma condição:
if
elif
else
A figura a seguir mostra as partes do processador Raspberry Pi4B afetadas por estas instruções:
A SENTENÇA: if.
A declaração ou instrução “if” pode ser entendida como: “se algo acontecer, faça isso”. Por exemplo, vejamos o seguinte programa Python:
temperature = 23
if temperature > 17:
print(“hot environment”)
Esta declaração condicional está dizendo: se a temperatura for maior que 17 graus Celsius, execute o bloco de código:
print(“hot environment”)
O programa anterior dará no console de saída, o seguinte resultado:
hot environment
Com este exemplo, podemos ver as infinitas possibilidades de testar os valores de variáveis numéricas. A imagem a seguir mostra um fluxograma para a instrução: “se”.
A DECLARAÇÃO: if….else.
Esta instrução permite executar um "bloco de código" se a "condição" for atendida e outro "bloco de código" se a "condição" não for atendida. Por exemplo, o seguinte programa imprime no console: "ambiente quente", se a temperatura for superior a 17 graus centígrados. Se a temperatura for: menor ou igual a 17, está impresso no console: “ambiente frio”. Essa frase pode ser entendida como: “Se a condição for atendida, faça isso, caso contrário, faça outra coisa”.
temperature = 23
if temperature > 17:
print(“hot environment”)
else :
print(“cold environment”)
O programa anterior dará no console de saída, o seguinte resultado:
hot environment
No programa a seguir, podemos observar que a afirmação: "se temperatura > 17" não é atendida, pois a variável: "temperatura" não é maior que 17.
temperature = 17
if temperature > 17:
print(“hot environment”)
else :
print(“cold environment”)
O programa anterior dará no console de saída, o seguinte resultado:
hot environment
O programa anterior dará no console de saída, o seguinte resultado:
cold environment
A imagem a seguir mostra um fluxograma para a instrução: “if-else”.
A DECLARAÇÃO: if….elif….else.
Esta instrução permite executar um "bloco de código" se a "condição" for atendida e descartar os outros "blocos de código" se a "condição" não for atendida. Por exemplo, o seguinte programa imprime no console: "ambiente normal", se a temperatura for maior ou igual a 12 e menor que 20 graus Celsius:
temperature = 17
if temperature < 5:
print(“very cold environment”)
elif temperature < 12:
print(“very cold environment”)
elif temperature < 20:
print(“normal environment”)
else :
print(“hot environment”)
O programa anterior dará no console de saída, o seguinte resultado:
normal environment
OPERADORES LÓGICOS BIT A BIT (BITWISE).
Os tipos de operadores lógicos bit a bit em Python são: Lógico “OR”, Lógico “AND” e Lógico “XOR”. A lógica e o bom senso são usados diariamente, seja por sistemas eletrônicos ou por pessoas. Neste capítulo veremos a lógica: “e”, “ou” e “xor”. Quase todos os equipamentos eletrônicos utilizam a lógica digital para seu funcionamento e funcionamento, daí a importância de conhecer este tema. As operações lógicas que o cérebro faz podem ser conscientes ou subconscientes. Quando você consente, tomamos conhecimento da operação, ação ou decisão que estamos tomando. Quando subconsciente, não temos consciência disso, mas mesmo assim o executamos. A lógica e o bom senso ou forma de pensar de cada pessoa, tem muita semelhança.
Por isso a semelhança entre um cartão como o Raspberry Pi4B e a mente ou cérebro humano, já que ambos podem realizar processos lógicos. Na eletrônica, muitas operações lógicas são realizadas, a tal ponto que todos os sistemas eletrônicos modernos o utilizam. Neste artigo estudaremos essas operações ou instruções.
As operações que veremos OR, AND e XOR são do tipo bit a bit ou bit a bit. Isso significa que essas operações lógicas são executadas nos bits individuais dos operandos. A imagem a seguir mostra quais partes do processador são afetadas quando essas instruções são executadas:
A LÓGICA BIT A BIT: “OU”.
A instrução de lógica OU segue o princípio de funcionamento do circuito mostrado na figura a seguir.
Podemos notar que, fechando o circuito com qualquer um dos 2 interruptores, a lâmpada acenderá. Mesmo que ambos os interruptores estejam fechados, a lâmpada acenderá. Essa é a lógica OR. A única maneira de a lâmpada não acender é se os dois interruptores estiverem abertos. Assim, tabelas de verdade foram criadas para cada instrução lógica. Na figura a seguir podemos ver a tabela verdade para a instrução OR lógica.
Esta tabela simplifica o que foi dito anteriormente sobre a lógica OR. A figura a seguir mostra o esquema usado para a lógica OR.
O símbolo utilizado na linguagem Python, para a lógica OR, é a barra vertical (||). O seguinte programa define 2 variáveis (“s” e “t”) e então executa uma instrução: OU sobre estas variáveis, deixando o resultado na variável: “r”, então imprime o resultado em formato hexadecimal:
O programa anterior dará no console de saída, o seguinte resultado:
A LÓGICA BIT A BIT: “E”
A figura a seguir mostra o circuito elétrico que representa a instrução AND lógica. Observe que somente quando os 2 interruptores estiverem fechados, a lâmpada acenderá.
Caso contrário, a lâmpada não acenderá. É como se disséssemos: "A lâmpada acende, somente se os interruptores A e B estiverem fechados." A figura a seguir mostra a tabela verdade para a lógica AND.
A figura a seguir mostra o símbolo lógico:
O seguinte programa define 2 variáveis (“s” e “t”) e então executa uma instrução: “AND” sobre estas variáveis, deixando o resultado na variável: “r”, então imprime o resultado em formato hexadecimal:
O programa anterior dará no console de saída, o seguinte resultado:
0xf
O programa a seguir é o mesmo visto acima, mas utiliza a função: “bin()” para imprimir os valores da variável em formato hexadecimal para o console:
O programa anterior dará no console de saída, o seguinte resultado:
Como visto anteriormente em outro capítulo, também podemos fazer esses tipos de operações em linguagem assembly. O seguinte é um programa que executa a instrução: "AND" no montador:
A LÓGICA BIT A BIT: “XOR”.
A lógica "XOR" também é conhecida como OU EXCLUSIVO, ou seja, somente quando uma das entradas estiver em "um" (1), a saída também estará em "um" (1). Veja a tabela verdade na figura a seguir.
Se as 2 entradas forem altas (1), a saída será baixa (0). Além disso, se ambas as entradas forem baixas (0), a saída será baixa (0). O diagrama esquemático da lógica XOR pode ser visto na figura a seguir:
O símbolo usado para representar a instrução XOR na linguagem Python é o símbolo circunflexo (^). Na figura a seguir podemos ver um exemplo de XOR no nível de byte.
Vejamos o seguinte programa em Python:
O programa anterior dará no console de saída, o seguinte resultado:
Conclusão
Como podemos ver, fazer uso da instrução “if-else” é muito simples na linguagem Python. Além disso, o uso da lógica bit a bit é fácil de entender. A lógica é uma linguagem universal e segue princípios simples de entender. Em microcontroladores e sistemas digitais, a lógica digital é amplamente utilizada. Você pode testar e verificar os resultados na saída do console do editor Python que está usando. O uso da função: “bin()”, é muito útil para imprimir dados em formato binário e o uso da função: “hex()” para imprimir dados em formato hexadecimal.