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

Ir para baixo
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Exercício 3.17 resolvido Empty Exercício 3.17 resolvido

Qua Out 20, 2021 8:46 am
/*
* CURSO DE ROBOTICA 2021
*
* Exercicio: 3.17
* Tema: Controle RGB pelo terminal
* Atividade: Controlar os leds RGB pelo terminal, Letras maiusculas acendem o LEDs e minusculas apagam os LEDs (R, G e B)
* Descrição: Receber o caractere pela serial, reconhecer o caractere e comandar os LEDS RGB, quando receber Miuscula acende o led e minuscula apaga o led
* 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,
* Hardware2: Neste exercício vamos configurar os pinos analógicos para funcionar como pinos digitais, no caso A4=D18 ; A3=D17 ; A2=D16 ;
* Comandos: Serial.begin(9600); lcd.print(); Serial.available(); Serial.print(); pinMode();
* 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: Checar se o valor enviado está correto e enviar mensagem de erro se os valores não forem numeros
* Dica5: O digito R acende o led Vermelho e o digito r apaga o led Vermelho
* Dica6: O digito G acende o led Verde e o digito g apaga o led Verde
* Dica7: O digito B acende o led Azul e o digito b apaga o led Azul
* Dica8: Para converter os pinos analógicos em digital, por exemplo, para o pino A2 Usar pinMode(16, OUTPUT);
* Dica9: No terminal enviar texto informando o status do led
* Dica10:No display informas R=OFF G=OFF na outra linha B=OFF
*/

//DEFINICOES INICIAIS
#include //A biblioteca com as funções do display está carregada
#define ledR 3//Definido que o pino 3 irá se chamar ledR
#define ledG 4//Definido que o pino 4 irá se chamar ledG
#define ledB 5//Definido que o pino 5 irá se chamar ledB

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7);//Os pinos serão ligados nessa sequência ao display
char caractere;//Variável para serem guardados os caracteres recebidos pela porta serial

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Porta serial inicializada com velocidade de 9600 bps
Serial.print("Digite uma letra RGB ou rgb pra controlar o led \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.begin(16,2);//Display inicializado, o display usado possui 16 colunas e 2 linhas
pinMode(ledR, OUTPUT);//Configurado o pino 3 como saída
pinMode(ledG, OUTPUT);//Configurado o pino 4 como saída
pinMode(ledB, OUTPUT);//Configurado o pino 5 como saída
lcd.home();//O cursor irá para o início da primeira linha do display
lcd.print("R=OFF G=OFF");//O texto entre aspas será escrito no display
lcd.setCursor(0,1);//O cursor irá para o início da segunda linha do display
lcd.print("B=OFF");//O texto entre aspas será escrito no display
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available() > 0){//Se a porta serial receber um valor, irá rodar o bloco abaixo
caractere = Serial.read();//Os valores lidos na porta serial serão atribuídos à variável caractere
}
if(caractere != 0){//Se houver algum valor que seja diferente de 0 na variável caractere, irá rodar o bloco abaixo
switch(caractere){//Irá testar o conteúdo da variável caractere
case('R')://Se houver um R, irá rodar o bloco abaixo
digitalWrite(ledR,HIGH);//O ledR irá acender
Serial.print("Led R está aceso \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.setCursor(2,0);//O cursor irá para a coluna 2 da primeira linha do display
lcd.print("ON ");//O texto entre aspas será escrito no display
break;//O programa irá sair desse bloco
case('G')://Se houver um G, irá rodar o bloco abaixo
digitalWrite(ledG,HIGH);//O ledG irá acender
Serial.print("Led G está aceso \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.setCursor(8,0);//O cursor irá para a coluna 8 da primeira linha do display
lcd.print("ON ");//O texto entre aspas será escrito no display
break;//O programa irá sair desse bloco
case('B')://Se houver um B, irá rodar o bloco abaixo
digitalWrite(ledB,HIGH);//O ledB irá acender
Serial.print("Led B está aceso \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.setCursor(2,1);//O cursor irá para a coluna 2 da segunda linha do display
lcd.print("ON ");//O texto entre aspas será escrito no display
break;//O programa irá sair desse bloco
case('r')://Se houver um r, irá rodar o bloco abaixo
digitalWrite(ledR,LOW);//O ledR irá apagar
Serial.print("Led R está apagado \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.setCursor(2,0);//O cursor irá para a coluna 2 da primeira linha do display
lcd.print("OFF");//O texto entre aspas será escrito no display
break;//O programa irá sair desse bloco
case('g')://Se houver um r, irá rodar o bloco abaixo
digitalWrite(ledG,LOW);//O ledG irá apagar
Serial.print("Led G está apagado \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.setCursor(8,0);//O cursor irá para a coluna 8 da primeira linha do display
lcd.print("OFF");//O texto entre aspas será escrito no display
break;//O programa irá sair desse bloco
case('b')://Se houver um r, irá rodar o bloco abaixo
digitalWrite(ledB,LOW);//O ledB irá apagar
Serial.print("Led B está apagado \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
lcd.setCursor(2,1);//O cursor irá para a coluna 2 da segunda linha linha do display
lcd.print("OFF");//O texto entre aspas será escrito no display
break;//O programa irá sair desse bloco
default://Se não for nenhum dos caracteres acima, irá rodar o bloco abaixo
Serial.print("Letra incorreta, digite novamente \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
break;//O programa irá sair desse bloco
}
caractere = 0;//O valor da variável caractere passará a ser 0
Serial.print("Digite uma letra RGB ou rgb pra controlar o led \n");//O texto entre aspas será escrito no monitor serial, e o programa irá para a próxima linha
}
}


Resolvido 3.17 Very Happy Wink
alvaro 123456
alvaro 123456
Mensagens : 476
Data de inscrição : 27/04/2019
Idade : 17

Exercício 3.17 resolvido Empty Re: Exercício 3.17 resolvido

Qua Out 27, 2021 3:31 pm
Oi
Monica

Vou fazer algumas perguntas

lol!  lol!  lol!   ESTÁ INICIANDO O JOGO DO MILHÃO    lol!  lol!  lol!

1) Qual é a diferença entre os dois operadores de comparação "(Serial.available() > 0) " e "(caractere ! = 0 )" no programa ?

2) Para que serve o switch nesse programa ?

3) Faz diferença utilizar o Serial.println("frase "); ou Serial.print("frase \n"); ?
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 3.17 resolvido Empty Re: Exercício 3.17 resolvido

Ter Nov 16, 2021 11:02 pm
O programa foi copiado do Thiago. Preciso que refaça para ganhar a nota.
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Exercício 3.17 resolvido Empty Re: Exercício 3.17 resolvido

Seg Nov 22, 2021 9:39 am
Bom Dia Professor
O exercicio 3.17 voce fez "O programa abaixo foi o Realizado no planejamento do Curso" ai e igualao do Tiago Mello por que vc pois o programa completo

https://roboticalivre.forumeiros.com/t1497-exercicio-3-17-controle-rgb-pelo-terminal
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 3.17 resolvido Empty Re: Exercício 3.17 resolvido

Sex Dez 10, 2021 1:15 am
Monica, coloquei o programa mas lembra que avalio o entendimento dele pelos comentários? coincidentemente os comentários estão exatamente igual a esse post abaixo

https://roboticalivre.forumeiros.com/t2198-exercicio-3-17

dai não consigo saber se entendeu bem ou tem duvidas.

Mas vamos fazer assim, responde as perguntas do Alvaro e não precisa refazer os comentários.

1) Qual é a diferença entre os dois operadores de comparação "(Serial.available() > 0) " e "(caractere ! = 0 )" no programa ?

2) Para que serve o switch nesse programa ?

3) Faz diferença utilizar o Serial.println("frase "); ou Serial.print("frase \n"); ?

Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Exercício 3.17 resolvido Empty Resposta do 3.17

Qui Mar 17, 2022 9:38 am
1) Qual é a diferença entre os dois operadores de comparação "(Serial.available() > 0) " e "(caractere ! = 0 )" no programa ?

No caso a diferença é que so vai estar no if(Serial.available() > 0) se o buffer estiver com um numero maior zero que ja o outro if (caractere ! = 0)qualque coisa que seja diferente de zero em uma escala numerica poderia ser positivi e negativo

2) Para que serve o switch nesse programa ?

O switch serve para fazer testes do conteudo a variavel

3) Faz diferença utilizar o Serial.println("frase "); ou Serial.print("frase \n"); ?

Nenhuma diferença porque ambas imprimem a mesma fase escrita para a proxima linha na porta serial
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 3.17 resolvido Empty Re: Exercício 3.17 resolvido

Dom Abr 24, 2022 11:22 pm
Muito bom Monica, nota 10.0 As respostas estão corretas também.
Conteúdo patrocinado

Exercício 3.17 resolvido Empty Re: Exercício 3.17 resolvido

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