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.

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta