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

Ir para baixo
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

Resolução do Exercício 3.17 Empty 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");
}
}
}
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos