Resolução do Exercício 3.17
Sáb Nov 30, 2019 4:06 pm
Fizemos na primeira etapa a resolução do exercício 3.17 e o programa usado na aula segue abaixo:
- Código:
/*
* CURSO DE ROBOTICA 2019
* PROGRAMA RESOLVIDO EM SALA DE AULA
*
* 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<LiquidCrystal.h> //Carrega a biblioteca com as funções do display
#define ledR 16 //led vermelho ligado no pino A2 que convertido para digital 16
#define ledG 17 //led vermelho ligado no pino A3 que convertido para digital 17
#define ledB 18 //led vermelho ligado no pino A4 que convertido para digital 18
//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(7,6,5,4,3,2); //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);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
lcd.begin(16,2);
//Configura display
lcd.clear();
lcd.print("R=");
lcd.setCursor(6,0); //posiciona o cursor na coluna 6 e linha 0
lcd.print("G=");
lcd.setCursor(0,1);
lcd.print("B=");
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
if(Serial.available()!=0){
caractere = Serial.read();
//Estrutura switch/case para rodar somente quando receber um caractere pela serial
switch(caractere){
case('R'):
digitalWrite(ledR, HIGH);
lcd.setCursor(2,0);
lcd.print("ON ");
break;
case(71): //caractere G
digitalWrite(ledG, HIGH);
lcd.setCursor(8,0);
lcd.print("ON ");
break;
case('B'):
digitalWrite(ledB, HIGH);
lcd.setCursor(2,1);
lcd.print("ON ");
break;
case('r'):
digitalWrite(ledR, LOW);
lcd.setCursor(2,0);
lcd.print("OFF");
break;
case(103):
digitalWrite(ledG, LOW);
lcd.setCursor(8,0);
lcd.print("OFF");
break;
case('b'):
digitalWrite(ledB, LOW);
lcd.setCursor(2,1);
lcd.print("OFF");
break;
default:
Serial.println("Voce digitou errado, tente novamente");
Serial.print("Os caracteres válidos são: R G B r g b");
}
}
}
Permissões neste sub-fórum
Não podes responder a tópicos
|
|