Menus de configuração no Painel de Administração

GVensino - fome de saber!

Lendo Entradas Digitais – input()

Aprenda o que são e pra que servem resistores de pull-down. Aprenda também como ler entradas usando o comando input() e o if.

Introdução

Caro aluno, na vida nós, seres-humanos, precisamos receber informações do mundo exterior, do ambiente ao nosso redor. Que seria de nós sem o tato, sem a visão, sem a audição? Os nossos 5 sentidos (dizem que as mulheres tem 6) nos permitem detectar o que está acontecendo no ambiente ao nosso redor e, a partir disso, tomar decisões.

Mas espere, vamos com calma. Será que um microcontrolador precisa receber dados do mundo exterior a ele?

A resposta é um sonoro CLARO, SIM, COM CERTEZA, ÓBVIO, CERTAMENTE, POSITIVO, AFIRMATIVO!

Repare em uma coisa: praticamente qualquer sistema, por mais simples que ele seja, precisa receber alguma informação do mundo exterior.

– E como é que um sistema recebe a informação do mundo exterior, querido professor?

– É simples, caro e dileto aluno. Você consegue imaginar máquinas sem botões?

– Realmente, eu não consigo. Parece que todos os aparelhos ao nosso redor possuem botões.

– Exatamente, sagaz aluno, exatamente! Quase todos os sistemas automáticos ao nosso redor possuem botões. Os botões são uma forma que nós, seres-humanos, usamos pra se comunicar com as máquinas! Através dos botões, nós podemos informar à máquina qual é o nosso desejo, informar a ela o que é que nós queremos!

– Puxa, nunca tinha pensado por este lado, excelentíssimo professor.

– Calma, não sou presidente de nenhum país pra ser chamado de excelentíssimo. Mas no fundo, é isso o que os botões fazem. Se você quer ligar alguma coisa, como é que você faz pra dizer isso pra máquina? Você aperta um botão!

– E os botões são a única forma que as máquinas usam pra receber informação do mundo exterior, magnânimo professor?

– Não, espetacular aluno, não! Além dos botões, existem os SENSORES! Os sensores são dispositivos que “sentem” alguma característica do ambiente, como temperatura, pressão, luminosidade, presença ou não de certos objetos, etc., e informa isso para o controlador do sistema!

– Wow! Entendi! E como é que a gente faz pro microcontrolador LER o sinal de um botão ou de um sensor?

– É isso o que vamos começar a aprender na aula de hoje, caro aluno. Aperte o cinto e simbora!


Entradas Digitais x Analógicas

Entradas digitais ou discretas são aquelas que só recebem 2 valores: 0 ou 1, desligado ou ligado, acionado ou desacionado. Um botão é um exemplo clássico de entrada digital: quantos estados um botão pode ter? Apenas dois: pressionado ou solto. 1 ou 0. Um botão nunca pode estar “meio pressionado”. Isso não existe!

Um outro exemplo de entrada digital seria um sensor de presença, que detecte a presença de alguma coisa. Ou essa “coisa” está presente, ou não está! Não existe “a coisa está meio presente”. Ou está, ou não está! 1 ou 0. Digital!

Já as entradas Analógicas podem receber muito mais do que 2 valores. Elas podem receber muitos valores diferentes. Por exemplo, um sensor que mede temperatura. Existem só 2 temperaturas possíveis? Não! Existem infinitas temperaturas possíveis. Logo, um sensor desses teria de ser ligado a uma Entrada Analógica!

O único detalhe aqui é que há certos tipos de dispositivos que medem a temperatura e a transformam em um sinal digital. Os termostatos, por exemplo. Eles funcionam emitindo um sinal sempre que a temperatura for MAIOR que determinado valor. Dessa forma, seu funcionamento é digital: ou a temperatura é menor que o valor ajustado, ou é maior. Nesse caso, ele pode sim ser digital.

Percebeu a diferença?

Digital/Discreto: 1 ou 0. Ligado ou desligado. 2 estados apenas.

Analógico: Vários (possivelmente infinitos) estados possíveis.

Na aula de hoje, nosso foco será nas Entradas Digitais!


Lendo Entradas Digitais

Liguemos um botão a um pino do microcontrolador:

Input.docx_-_Microsoft_Word_2016-06-29_15-16-12

Na imagem acima, ligamos o botão no pino RA0 do PIC. Este pino, agora, é uma ENTRADA, pois sempre que ligamos um botão ou um sensor a um pino, esse pino passa a RECEBER sinal vindo de fora, a informação ENTRA no pino.

E pra que serve o resistor? Esse resistor é chamado de Resistor de Pull-Down. Serve para que o pino do PIC não fique flutuando quando o botão estiver solto.

Input.docx_-_Microsoft_Word_2016-06-29_14-15-13
Input.docx_-_Microsoft_Word_2016-06-29_14-13-02

Sem o resistor de pull-down, quando o botão estiver solto, o microcontrolador não estará recebendo sinal nenhum (estará flutuando). E isso é indesejável, pois ele poderá ler qualquer valor (0 ou 1) aleatoriamente.

O valor desse resistor não é fixo: pode ser desde um valor baixo, como 100Ω, até valores mais elevados, como 1kΩ. Padronizamos 220Ω porque é o mesmo valor que temos usado para os LEDs – embora os LEDs sejam SAÍDA e não entrada.

 

OK, já sabemos agora que o botão, quando solto, vai fazer com que o pino receba 0. Quando pressionado, vai fazer com que o pino receba 1.

Qual é o comando que utilizamos para LER uma entrada digital?

É o comando input( <<pino>> ).

O que é natural, certo? P/ saídas, usamos os comandos output_high() e output_low(). Output significa saída em inglês.

Para ler entradas, usamos um comando só: input() (que em inglês, significa entrada).

Seu uso é muito, muito simples!

Imagine que inserimos um botão no pino RA0 do microcontrolador. O que é que o comando input(pin_a0) faz?

Esse comando não faz NADA! Ele não realiza nenhuma ação. Ele apenas irá LER o estado da entrada do pino RA0 e DAR PRA MIM UM VALOR: esse pino está em 0 (zero) ou em 1 (um)?

Ou seja, o comando input( <<pino>> ) me dá um valor, que pode ser apenas 0 (caso botão esteja solto) ou valor 1 (caso esteja pressionado, com nível lógico alto).

Ok, diria o atento aluno. Mas como eu UTILIZO esse valor? Eu preciso saber SE este valor é 0 ou 1 para fazer alguma coisa. Como eu faço pra saber SE o valor é 0 ou 1 e fazer alguma coisa com essa informação? Ai entra mais um comando muito importante….. o IF.

 

Comando IF

IF em inglês é uma palavra que significa SE. Na vida, temos muitos SEs:

SE o céu estiver escuro, levarei o guarda-chuvas.

SE o Corinthians for campeão brasileiro, farei um churrasco.

SE eu entender esta matéria, serei um grande programador.

Em inglês, utilizamos a palavra IF (SE).

O IF (SE) tem a seguinte estrutura:

Repare bem: dentro dos parêntesis, colocamos uma CONDIÇÃO.

Dentro das chaves, colocamos as ações que serão feitas SE a condição acontecer, isto é, se a condição for verdadeira.

Por exemplo:

No exemplo acima, SE o Corinthians for campeão, que ações serão tomadas? Duas: Convidar os amigos e então Fazer um Churrasco.

Veja que, tudo o que for colocado dentro das chaves { e } só será executado SE a condição for verdadeira! Caso a condição seja falsa (o Corinthians não for campeão), então não haverá convite aos amigos e nem churrasco!

Para saber SE um botão foi pressionado ou não, devemos combinar o uso do comando IF com o do comando input.

 

IF e Input()

Combinamos o uso do comando input com as estruturas de decisão (if) para saber SE a entrada está em 0 ou em 1. Simples assim.

No exemplo acima, Se a Entrada do Pino RA0 estiver recebendo 1 (nível lógico alto), a saída RA1 irá ligar.

Repare que no exemplo acima, em nenhum momento a saída RA1 será DESLIGADA.

Ou seja: Se apertarmos o botão ligado em RA0, a saída RA1 irá ligar. Mas ela nunca irá desligar, pois em nenhum momento foi usado output_low nela!

E se quisermos que, ao soltar o botão de RA0, a saída RA1 desligue?

Há duas formas de se fazer isso. Vejamos cada uma delas. A primeira forma é acrescentar um outro if. Já temos um if (se) para avaliar SE o botão estiver pressionado, ligue o pino RA1. Poderíamos, então, criar outro if (se) para avaliar SE o botão estiver solto (==0), então DESLIGUE RA1. Ficaria assim:

Primeiramente, o programa irá avaliar SE a ENTRADA RA0 é igual a 1 (nível alto). Se for, liga a saída RA1. Em seguida, independentemente se ligou ou não RA1, ele irá avaliar SE a ENTRADA RA0 é igual a 0 (nível lógico baixo). Se for, irá desligar o pino RA1. Como o programa está em loop infinito, ele voltará ao primeiro if e avaliará SE a entrada RA0 está acionada.

Outra forma de fazer a mesma coisa, porém de maneira mais simples, é usando o ELSE.

 

ELSE

Else é uma palavra que em inglês significa “Senão”, “Caso Contrário”.

Usamos no nosso dia-a-dia essa expressão juntamente com a SE. Veja:

SE estiver chovendo, irei de carro. SENÃO, irei a pé.

SE o Corinthians for campeão, farei um Churrasco. SENÃO, irei ao cinema.

Veja que o SENÃO (else) DEPENDE do SE (if).

Não faz sentido o SENÃO se antes dele não tiver o SE. Se eu falar a frase: SENÃO, vou pra praia. Ela tem sentido? SENÃO o quê? Primeiro há um SE, depois um SENÃO.

Sintaxe do IF..ELSE:

Utilizaremos o ELSE sempre que quisermos que o programa faça alguma coisa quando a condição do if não acontecer.

Agora ficou fácil fazer o que tinhamos feito acima: se o botão estiver pressionado, liga a saída RA1; SENÃO, desliga RA1. Veja:

 

 

Pesquisa Avançada de Cursos

©GVensino - Todos os Direitos Reservados
css.php