- Diogo Penha Marques
- Mensagens : 107
Data de inscrição : 29/02/2024
Idade : 14
Escola : Colégio Estadual da Colônia Murici
Diogo Saraiva Exercício 3.17
Sáb Ago 03, 2024 11:19 am
/*
* CURSO DE ROBOTICA 2019
*
* 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 //Carrega a biblioteca com as funções do display
#define ledR 2 //led vermelho ligado no pino A2 que convertido para digital 2
#define ledG 3 //led vermelho ligado no pino A3 que convertido para digital 3
#define ledB 8 //led vermelho ligado no pino A4 que convertido para digital 4
//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
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Inicia a porta serial em 9600 bps
lcd.begin(16,2);//Inicia o lcd em 16 colunas e 2 linhas
pinMode(ledR, OUTPUT);//Define ledR como saida
pinMode(ledG, OUTPUT);//Define ledG como saida
pinMode(ledB, OUTPUT);//Define ledB como saida
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available())//Se o numero no Monitor for maior que 0:
{
caractere = Serial.read();//Caracter igual a leitura do monitor em decimal
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
if(caractere == 82) {//Se caracter for igual a 82(R em decimal), Execute:
digitalWrite(ledR, HIGH);//Ligue o ledR
lcd.print("Liga led");//Mostre no display "Liga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Vermelho");//Mostra no display "Vermelho"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 71) {//Se caracter for igual a 71(G em decimal), Execute:
digitalWrite(ledG, HIGH);//Ligue o ledG
lcd.print("Liga led");//Mostre no display "Liga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Verde");//Mostra no display "Verde"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 66) {//Se caracter for igual a 66(B em decimal), Execute:
digitalWrite(ledB, HIGH);//Ligue o ledB
lcd.print("Liga led");//Mostre no display "Liga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Azul");//Mostra no display "Azul"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 114) {//Se caracter for igual a 114(r em decimal), Execute:
digitalWrite(ledR, LOW);//Desligue o ledR
lcd.print("Desliga led");//Mostre no display "Desliga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Vermelho");//Mostra no display "Vermelho"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 103) {//Se caracter for igual a 82(g em decimal), Execute:
digitalWrite(ledG, LOW);//Desligue o ledG
lcd.print("Desliga led");//Mostre no display "Desliga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Verde");//Mostra no display "Verde"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 98) {//Se caracter for igual a 82(b em decimal), Execute:
digitalWrite(ledB, LOW);//Desligue o ledB
lcd.print("Desliga led");//Mostre no display "Desliga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Azul");//Mostra no display "Azul"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
}
}
* CURSO DE ROBOTICA 2019
*
* 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 //Carrega a biblioteca com as funções do display
#define ledR 2 //led vermelho ligado no pino A2 que convertido para digital 2
#define ledG 3 //led vermelho ligado no pino A3 que convertido para digital 3
#define ledB 8 //led vermelho ligado no pino A4 que convertido para digital 4
//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
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Inicia a porta serial em 9600 bps
lcd.begin(16,2);//Inicia o lcd em 16 colunas e 2 linhas
pinMode(ledR, OUTPUT);//Define ledR como saida
pinMode(ledG, OUTPUT);//Define ledG como saida
pinMode(ledB, OUTPUT);//Define ledB como saida
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available())//Se o numero no Monitor for maior que 0:
{
caractere = Serial.read();//Caracter igual a leitura do monitor em decimal
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
if(caractere == 82) {//Se caracter for igual a 82(R em decimal), Execute:
digitalWrite(ledR, HIGH);//Ligue o ledR
lcd.print("Liga led");//Mostre no display "Liga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Vermelho");//Mostra no display "Vermelho"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 71) {//Se caracter for igual a 71(G em decimal), Execute:
digitalWrite(ledG, HIGH);//Ligue o ledG
lcd.print("Liga led");//Mostre no display "Liga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Verde");//Mostra no display "Verde"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 66) {//Se caracter for igual a 66(B em decimal), Execute:
digitalWrite(ledB, HIGH);//Ligue o ledB
lcd.print("Liga led");//Mostre no display "Liga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Azul");//Mostra no display "Azul"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 114) {//Se caracter for igual a 114(r em decimal), Execute:
digitalWrite(ledR, LOW);//Desligue o ledR
lcd.print("Desliga led");//Mostre no display "Desliga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Vermelho");//Mostra no display "Vermelho"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 103) {//Se caracter for igual a 82(g em decimal), Execute:
digitalWrite(ledG, LOW);//Desligue o ledG
lcd.print("Desliga led");//Mostre no display "Desliga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Verde");//Mostra no display "Verde"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
if(caractere == 98) {//Se caracter for igual a 82(b em decimal), Execute:
digitalWrite(ledB, LOW);//Desligue o ledB
lcd.print("Desliga led");//Mostre no display "Desliga led"
lcd.setCursor(0,1);//Coloca o cursor na primeira coluna e na segunda linha
lcd.print("Azul");//Mostra no display "Azul"
delay(1000);//Tempo de espera de 1 segundo
lcd.clear();//Limpa o display e coloca na 1ª coluna e 1ª linha
}
}
}
Re: Diogo Saraiva Exercício 3.17
Sáb Set 14, 2024 1:38 pm
Oi Diogo, tem um pequeno detalhe não atentou, para controlar o brilho dos leds precisa usar pinos PWM,
- Diogo Penha Marques
- Mensagens : 107
Data de inscrição : 29/02/2024
Idade : 14
Escola : Colégio Estadual da Colônia Murici
Re: Diogo Saraiva Exercício 3.17
Qui Set 19, 2024 2:46 pm
Esse exercício não precisa controlar o brilhoPaulo Augusto Batista escreveu:Oi Diogo, tem um pequeno detalhe não atentou, para controlar o brilho dos leds precisa usar pinos PWM,
Permissões neste sub-fórum
Não podes responder a tópicos