Introdução à programação C para Arduino

Giovan Barreira · Capítulo 28 de 30

Páginas do PDF

Introdução à programação C para Arduino

Conversão de Texto para Número Inteiro

Figura 82 - Atividade 16 – Números aleatórios

gerados

 

CONVERSÃO DE TEXTO PARA NÚMERO

INTEIRO

 

Obs. os números lidos pela placa são interpretados como texto, então devemos converter os números lidos de texto para número inteiro pela função atoi(valor_lido); .

 

ATIVIDADE_017 – Agora vamos desenvolver um código onde a placa vai gerar um número entre 1 e 15, vai ler um número pela porta serial, vai escrever de volta o número gerado e o lido utilizando a porta serial e ainda vai acender um led amarelo quando o número sorteado for maior que o lido, vai acender um led vermelho quando o número sorteado for menor que o lido e por último vai acender um led verde se os números forem iguais. Sem dúvida, esta é a atividade mais complexa deste livro, tanto do ponto de vista da lógica.

CÓDIGO

//VARIÁVEL QUE ARMAZENA O VALOR LIDO COM ATÉ 4 CARACTERES, MAS NÃO É NÚMERO, É TEXTO

char valor_lido[4]="";

int numero_lido=0; //VARIÁVEL QUE ARMAZENA O TEXTO LIDO CONVERTIDO PARA NÚMERO

int numero_sorteado=0; //VARIÁVEL QUE ARMAZENA O VALOR SORTEADO

int i = 0; //VARIÁVEL CONTADORA, UTILIZADA NO WHILE

void setup() {

//HABILITA AS PORTAS DIGITAIS 2,3 E 4 PARA OUTPUT

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

Serial.begin(9600); //HABILITA A PORTA SERIAL PARA COMUNICAR NA TAXA 9600

randomSeed(analogRead(0)); //SEMENTE PARA AJUDAR A GERAR NÚMEROS PSEUDOALEATÓRIOS

}

 

void loop() {

//PORTAS DIGITAIS 2,3 E 4 EM ESTADO LOW (LED APAGADO)

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

delay(500); //ESPERA MEIO SEGUNDO COM OS LEDS APAGADOS

 

//ROTINA DE LEITURA

while(Serial.available()){

valor_lido[i] = Serial.read();

i++;

}

 

i = 0; //REINICIA A VARIÁVEL CONTADORA PARA QUANDO HOUVER OUTRA LEITURA

numero_lido=atoi(valor_lido); //CONVERTE O TEXTO valor_lido EM NÚMERO INTEIRO numero_lido

numero_sorteado=random(1,16); //SORTEIA UM NÚMERO ENTRE 1 E 15

 

//ROTINA QUE TESTA SE O NÚMERO SORTEADO É MAIOR, IGUAL OU MENOR QUE O NÚMERO LIDO

if(numero_sorteado>numero_lido)

digitalWrite(2,HIGH);

else if(numero_sorteado == numero_lido)

digitalWrite(3,HIGH);

else if(numero_sorteado < numero_lido)

digitalWrite(4,HIGH);

else

digitalWrite(3,LOW);

 

//ROTINA QUE ESCREVE OS NÚMEROS LIDO E SORTEADO NA PORTA SERIAL 

Serial.print(numero_sorteado); 

Serial.print(" - ");

Serial.println(numero_lido);

 

delay(2000); //ESPERA 2 SEGUNDOS COM O LED ACESO

}

Figura 83 - Atividade 17 – Esquema de ligação na

placa física