Manual

do

Maker

.

com

Eletrônica digital com Arduino - Introdução à linguagem C - parte 6

Eletrônica digital com Arduino - Introdução à linguagem C - parte 6

Existem duas maneiras de pegar entradas do usuário; uma em tempo de execução, a partir de onde a leitura pode ser da entrada padrão (teclado) ou lendo arquivos do disco. A outra é passando parâmetros na linha de comando, porém como o objetivo é trabalhar com Arduino, vamos utilizar somente a interação com usuário em tempo de execução.

A comunicação com Arduino será pela porta serial, mas para podermos testar no computador, utilizaremos a função scanf(). Basicamente sua forma é: scanf("%TIPO",&ENDERECO);

Isso quer dizer, se queremos pegar um byte, basta fazer:

char umByte; scanf("%c",&umByte);

A palavra scan significa "varredura", ou seja, vai ler qualquer coisa que vier na entrada padrão no formato de char. Então, se na entrada padrão for digitado o número dois, ele será lido como um caractere e não como um inteiro. O endereçador & diz ao scanf que o valor lido deve ser armazenado na variável umByte.

Agora vamos fazer um enunciado: - Faça um programa que diga ao usuário para entrar com dois valores inteiros. SE o primeiro for maior que o segundo, exiba "O primeiro valor eh maiorn", SENÃO exiba "O segundo valor eh maior".

A primeira coisa a ser feita é interpretar o enunciado e separar suas partes. A primeira coisa que o enunciado pede é para pegar dois valores inteiros do usuário, ou seja, é necessário criar duas variaveis do tipo int: int primeiro,segundo; E diz para informar ao usuário que ele deve entrar com dois valores. Então, haverá um printf(): printf("Entre com um valor para ser comparado: "); Agora o usuário vai ver essa mensagem na tela e vai automaticamente digitar algum valor. É necessário recebê-lo com a função scanf(): scanf("%d",&primeiro); Agora é necessário pegar o segundo valor. Informe ao usuário: printf("nAgora entre com o segundo valor: "); E deve-se ler esse valor na segunda variável: scanf("%d",&segundo);

Resolvida a primeira parte do enunciado, que contém também as condições SE e SENÃO. Se o primeiro for maior que o segundo, exibir a mensagem "O primeiro é maior que o segundo", SENÃO exibir "O segundo é maior": if (primeiro > segundo){ printf("nO primeiro eh maior que o segundon"); } else{ printf("nO segundo eh maiorn"); }

Esse exemplo simples é para deixar claro que primeiramente você terá um algoritmo, posteriormente transformado em código. Você deve escrever sua idéia e analisar suas condicionais e seu fluxo, então transformá-lo em código. Um exemplo em Arduino seria:

  • Se o sensor de temperatura indicar mais que 18 graus, dispare um alarme sonoro, senão faça uma pausa de 1 segundo e repita o teste. Essa condição é contínua.

Nesse caso, fariamos um laço que nunca termina, uma medição do sensor, uma comparação para disparar ou parar o alarme e uma pausa de 1 segundo. Um laço que nunca termina poderia ser facilmente criado com while assim: while (1<2){ .... } Que tal tentar desenvolver o resto do código? Invés de ler um sensor, leia um valor dado pelo usuário e invés de tocar um alarme exiba uma mensagem qualquer quando for maior que 18. No próximo post faremos esse exemplo e introduziremos um pouco de lógica booleana no código.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.