Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
brunodavidsteiner
brunodavidsteiner
Mensagens : 80
Data de inscrição : 21/05/2022
Escola : Juscelino K. de Oliveira

exercicio 3.16 resolvido Empty exercicio 3.16 resolvido

Ter Abr 23, 2024 3:43 pm

/*
* CURSO DE ROBOTICA 2019
*
* Exercicio: 3.16
* Tema: Identificação dos numeros ascii
* Atividade: Com base na tabela ascii enviar para o display um numero de 0 a 9 enviado pelo terminal
* Descrição: Receber o caractere pela serial, converter o numero recebido como caractere em seu valor numerico. Exemplo recebe o ASCII - 49 e converte para valor 1
* Hardware: Display ligado RS=>pino D12; EN=>pino D13; D4=>pino D4; D5=>pino D5; D6=>pino D6; D7=>pino D7, o terminal usa a porta USB do arduino
* Comandos: Serial.begin(9600); lcd.print(); Serial.available(); Serial.print();
* Dica1: A configuração da serial usa velocidade padrão de 9600, poderia ser alterado caso necessite maior performance
* Dica2: Na interface do arduino abrir o terminal em ferramentas - Monitor serial ou ctr+shift+M
* Dica3: Enviar para o terminal \n para nova linha ou \r para retorno de carro
* Dica4: na tabela ASCII os numeros são assim: 0=48;1=49;2=50;3=51;4=52;5=53;6=54;7=55;8=56;9=57
* Dica5: Uma forma simples de chegar ao valor numerico é subtrair o valor recebido de 48, o resultado é igual ao numero recebido
* Dica6: Enviar o valor para o terminal e o display
* Dica7: Checar se o valor enviado está correto e enviar mensagem de erro se os valores não forem numeros
*/

//DEFINICOES INICIAIS
#include //Carrega a biblioteca com as funções do display

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7); //Setup conforme as ligações realizadas RS-EN-D4-D5-D6-D7

//VARIAVEL USADA PARA GUARDAR O NUMERO RECUPERADO
byte caractere = 0;//variavel tip byte para guardar o valor de caractere
byte num1 = 0;//variavel tip byte para guardar o valor de num1
byte num2 = 0;//variavel tip byte para guardar o valor de num2
byte resultado = 0;//variavel tip byte para guardar o valor de resultado

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Inicializa a porta serial com velocidade de 9600
lcd.begin(16, 2); //Inicializa o display configurado como 16 colunas e 2 linhas
Serial.print("disque um numero de 0 a 9 "); //Mensagem inicial no terminal
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available() > 0){
caractere = Serial.read();//carrega o valor do caractere com a porta serial
if(caractere <48 || caractere > 57){
Serial.print("valor incorreto, digite novamente\n");//texto enviado para o munitor serial
caractere = 0;//iniciado com o valor 0
}
if(num1 == 0){
num1 = caractere;//iniciado com o valor 0
}else{
num2 = caractere;//iniciado com o valor 0
}
Serial.println(num1);//tira um print do codigo e pula uma linha
Serial.println(num2);//tira um print do codigo e pula uma linha
Serial.println(num1 && num2);//tira um print do codigo e pula uma linha
if(num1 && num2){
num1 = num1 - 48;//numero = ele mesmo -48
num2 = num2 - 48;//numero = ele mesmo -48
resultado - num1 + num2;//o resultado - numero = o segundo numero
lcd.setCursor(0,0);//reposiciona o cursor
lcd.print(num1);//tira um print do codigo
lcd.setCursor(7,0);//reposiciona o cursor
lcd.print(num2);//tira um print do codigo
lcd.setCursor(0,1);//reposiciona o cursor
lcd.println(resultado);//tira um print do codigo e pula uma linha
Serial.print("o resultado da soma = ");//texto enviado para o munitor serial
Serial.println(resultado);//tira um print do codigo e pula uma linha
caractere - num1 - num2 - 0;//caractere - numero- outo numero - zero
Serial.println("disque um numero de 0 a 9 ");//texto enviado para o munitor serial

}
}
}
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos