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

Ir para baixo
lucca senn dallagassa
lucca senn dallagassa
Mensagens : 333
Data de inscrição : 09/03/2020
Idade : 17
Escola : Lindaura Ribeiro Lucas

exercicio 3.16 resolvido  Empty exercicio 3.16 resolvido

Sáb Nov 13, 2021 11:14 am

/*
* 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,13,4,5,6,7); //Setup conforme as ligações realizadas RS-EN-D4-D5-D6-D7
byte caractere; //Variavel usda para guardar a leitura da serial
byte numero; //Variavel usada para guardar o numero recuperado

//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("digite um numero de 0 a 9"); //Mensagem inicial no terminal
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available() > 0){
caractere = Serial.read();
if(caractere < 48 || caractere > 57){
Serial.print("valor incorreto tente novamente");
caractere = 0;

}
if(num == 0){
num1 = caractere;
}else{
num2 = caractere
}
Serial.println(num1);
Serial.println(num2);
Serial.println(num1 && num2);
}
if(num1 && num2){
num1 = num1 - 48;
num2 = num2 - 48;
resultado = num1 + num2);
lcd.setCursor(0,0);
lcd.print(num1);
lcd.setCursor(7,0);
lcd.print(num2);
lcd.setCursor(0,1);
lcd.print(resultado);
Serial.print("O resultado da soma = ");
lcd.println(resultado);
caractere = num1 = num2 = 0;
Serial.print("Digite uma letra ou numero");
}
}
lucca senn dallagassa
lucca senn dallagassa
Mensagens : 333
Data de inscrição : 09/03/2020
Idade : 17
Escola : Lindaura Ribeiro Lucas

exercicio 3.16 resolvido  Empty Re: exercicio 3.16 resolvido

Ter Nov 16, 2021 8:51 am
/*
* 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,13,4,5,6,7); //Setup conforme as ligações realizadas RS-EN-D4-D5-D6-D7
byte caractere; //Variavel usda para guardar a leitura da serial
byte numero; //Variavel usada para guardar o numero recuperado

//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("digite um numero de 0 a 9"); //Mensagem inicial no terminal
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available() > 0){ //Se chegar algum caractere pela serial o valor desse teste e a quantidade de caracteresfor maior que 0 ira rodar o programa abaixo
caractere = Serial.read();//Carrega a variavel caractere com valor recebido pela serial
if(caractere < 48 || caractere > 57){ //Se carctere for menor que 48 ou maior que 57 ira rodar o programa abaixo
Serial.print("valor incorreto tente novamente");//Imprime a mensagem no arduino
caractere = 0;//caractere vai se igualar a 0

}
if(num == 0){ //Se num foi se igualar a 0 roda o programa abaixo
num1 = caractere;//carrrega a variavel num com o valor da variavel caractere
}else{
num2 = caractere//carrrega a variavel num com o valor da variavel caractere
}
Serial.println(num1);
Serial.println(num2);
Serial.println(num1 && num2);
}
if(num1 && num2){
num1 = num1 - 48;
num2 = num2 - 48;
resultado = num1 + num2);
lcd.setCursor(0,0);//Posiciona o cursor na linha 0 e coluna 0
lcd.print(num1);//o print escreve o valor carregado
lcd.setCursor(7,0);//Posiciona o cursor na linha 7 e coluna 0
lcd.print(num2)//;o print escreve o valor carregado
lcd.setCursor(0,1);//Posiciona o cursor na segunda linha
lcd.print(resultado);//Carrega o resultado no arduino
Serial.print("O resultado da soma = ");//Imprime a mensagem no arduino
lcd.println(resultado);//Carrega o resultado no arduino
caractere = num1 = num2 = 0;//
Serial.print("Digite uma letra ou numero");//Imprime a mensagem no arduino
}
}
lucca senn dallagassa
lucca senn dallagassa
Mensagens : 333
Data de inscrição : 09/03/2020
Idade : 17
Escola : Lindaura Ribeiro Lucas

exercicio 3.16 resolvido  Empty Re: exercicio 3.16 resolvido

Ter Nov 16, 2021 8:58 am
/*
* 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,13,4,5,6,7); //Setup conforme as ligações realizadas RS-EN-D4-D5-D6-D7
byte caractere; //Variavel usda para guardar a leitura da serial
byte num; //Variavel usada para guardar o numero recuperado
byte num1; //Variavel usada para guardar o numero recuperado
byte num2; //Variavel usada para guardar o numero recuperado
byte resultado; //Variavel usada para guardar o 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("digite um numero de 0 a 9"); //Mensagem inicial no terminal
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available() > 0){ //Se chegar algum caractere pela serial o valor desse teste e a quantidade de caracteresfor maior que 0 ira rodar o programa abaixo
caractere = Serial.read();//Carrega a variavel caractere com valor recebido pela serial
if(caractere < 48 || caractere > 57){ //Se carctere for menor que 48 ou maior que 57 ira rodar o programa abaixo
Serial.print("valor incorreto tente novamente");//Imprime a mensagem no arduino
caractere = 0;//caractere vai se igualar a 0

}
if(num == 0){ //Se num foi se igualar a 0 roda o programa abaixo
num1 = caractere;//carrrega a variavel num com o valor da variavel caractere
}else{
num2 = caractere;//carrrega a variavel num com o valor da variavel caractere
}
Serial.println(num1);
Serial.println(num2);
Serial.println(num1 && num2);
}
if(num1 && num2){
num1 = num1 - 48;
num2 = num2 - 48;
resultado = num1 + num2;
lcd.setCursor(0,0);//Posiciona o cursor na linha 0 e coluna 0
lcd.print(num1);//o print escreve o valor carregado
lcd.setCursor(7,0);//Posiciona o cursor na linha 7 e coluna 0
lcd.print(num2)//;o print escreve o valor carregado
lcd.setCursor(0,1);//Posiciona o cursor na segunda linha
lcd.print(resultado);//Carrega o resultado no arduino
Serial.print("O resultado da soma = ");//Imprime a mensagem no arduino
lcd.println(resultado);//Carrega o resultado no arduino
caractere = num1 = num2 = 0;//
Serial.print("Digite uma letra ou numero");//Imprime a mensagem no arduino
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5788
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 3.16 resolvido  Empty Re: exercicio 3.16 resolvido

Qui Dez 09, 2021 11:51 pm
Lucca, estava corrigindo seu exercício e tem alguns erros que precisa corrigir.
Lembra que no final de cada comando precisa ter um ; , e aqui faltou lcd.print(num2)//;o print escreve o valor carregado
outro detalhe do programa tem a ver com a variável num que é usada para controle da leitura da porta serial.

Veja o yrecho abaixo:

if(num == 0){ //Se num foi se igualar a 0 roda o programa abaixo
num1 = caractere;//carrrega a variavel num com o valor da variavel caractere
}else{
num2 = caractere;//carrrega a variavel num com o valor da variavel caractere
}

Se o num for igual a 0 a leitura da porta serial será guardada na variável num1, até aqui tudo bem
agora quando receber o segundo caractere desejamos que ela vá para a variável num2 , certo? Porque vamos somar num1 com num2 e vamos guardar cada recebimento numa variável.
Logo quando transferir o primeiro caractere para num1 , deve também mudar o valor de num para que na segunda leitura, num seja diferente de zero e o fluxo do programa vai pelo else guardando o segundo caractere na variável num2

Para isso basta colocar num = 1;
lucca senn dallagassa
lucca senn dallagassa
Mensagens : 333
Data de inscrição : 09/03/2020
Idade : 17
Escola : Lindaura Ribeiro Lucas

exercicio 3.16 resolvido  Empty Re: exercicio 3.16 resolvido

Sáb Dez 11, 2021 8:57 am
/*
* 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,13,4,5,6,7); //Setup conforme as ligações realizadas RS-EN-D4-D5-D6-D7
byte caractere; //Variavel usda para guardar a leitura da serial
byte num; //Variavel usada para guardar o numero recuperado
byte num1; //Variavel usada para guardar o numero recuperado
byte num2; //Variavel usada para guardar o numero recuperado
byte resultado; //Variavel usada para guardar o 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("digite um numero de 0 a 9"); //Mensagem inicial no terminal
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available() > 0){ //Se chegar algum caractere pela serial o valor desse teste e a quantidade de caracteresfor maior que 0 ira rodar o programa abaixo
caractere = Serial.read();//Carrega a variavel caractere com valor recebido pela serial
if(caractere < 48 || caractere > 57){ //Se carctere for menor que 48 ou maior que 57 ira rodar o programa abaixo
Serial.print("valor incorreto tente novamente");//Imprime a mensagem no arduino
caractere = 0;//caractere vai se igualar a 0

}
if(num == 0){ //Se num foi se igualar a 0 roda o programa abaixo
num1 = 1;//carrrega a variavel num com o valor da variavel caractere
}else{
num2 = 1;//carrrega a variavel num com o valor da variavel caractere
}
Serial.println(num1);
Serial.println(num2);
Serial.println(num1 && num2);
}
if(num1 && num2){
num1 = num1 - 48;
num2 = num2 - 48;
resultado = num1 + num2;
lcd.setCursor(0,0);//Posiciona o cursor na linha 0 e coluna 0
lcd.print(num1);//o print escreve o valor carregado
lcd.setCursor(7,0);//Posiciona o cursor na linha 7 e coluna 0
lcd.print(num2);//o print escreve o valor carregado
lcd.setCursor(0,1);//Posiciona o cursor na segunda linha
lcd.print(resultado);//Carrega o resultado no arduino
Serial.print("O resultado da soma = ");//Imprime a mensagem no arduino
lcd.println(resultado);//Carrega o resultado no arduino
caractere = num1 = num2 = 0;//
Serial.print("Digite uma letra ou numero");//Imprime a mensagem no arduino
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5788
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 3.16 resolvido  Empty Re: exercicio 3.16 resolvido

Qua Abr 27, 2022 12:31 am
Oi Lucca, precisa revisar o programa, ainda não funcionou
Conteúdo patrocinado

exercicio 3.16 resolvido  Empty Re: exercicio 3.16 resolvido

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