// Projeto: DESAFIO 1: Variando as cores do LED RGB com potenciômetro
// Autor: Hendrick Vidal Lourenço
// Autor: João Vitor Belchiol da Silva
// Data: 27/02/24
// pinos declarados
int botaoR=13; //Atribui ao pino 13 o nome de "botaoR"
int botaog=12; //Atribui ao pino 12 o nome de "botaog"
int botaoB=8; //Atribui ao pino 8 o nome de "botaoB"
float PC=A0; //Atribui ao pino A0 o nome de "PC"
//Variáveis declaradas
//Variaveis do tipo boolianas
bool estado_botao=0; //atribui o valor 0 para a variavel
bool estado_botao1=0; //atribui o valor 0 para a variavel
bool estado_botao2=0; //atribui o valor 0 para a variavel
//Variaveis do tipo inteira
int estado_ledR=0; //atribui o valor 0 para a variavel
int estado_ledG=0; //atribui o valor 0 para a variavel
int estado_ledB=0; //atribui o valor 0 para a variavel
int valor=0; //atribui o valor 0 para a variavel
int teclaR=0; //atribui o valor 0 para a variavel
int teclaG=0; //atribui o valor 0 para a variavel
int teclaB=0; //atribui o valor 0 para a variavel
int teclaX=0; //atribui o valor 0 para a variavel
//variaveis do tipo Char(caractere)
char tecla=0; //atribui o valor 0 para a variavel
void setup() {
//Declarar pinos de entrada
pinMode(botaoR, INPUT); //Define "botaoR" como uma entrada
pinMode(botaog, INPUT); //Define "botaog" como uma entrada
pinMode(botaoB, INPUT); //Define "botaoB" como uma entrada
pinMode(PC, INPUT); //Define "PC" como uma entrada
//Declara pinos de saida
pinMode(11, OUTPUT); //Define pino 11 como uma saida
pinMode(10, OUTPUT); //Define pino 10 como uma saida
pinMode(9, OUTPUT); //Define pino 9 como uma saida
//Definir monitor serial(visualização de dados)
Serial.begin(9600);
}
void loop() {
tecla=Serial.read(); //Leitura da porta serial atribuida na variavel tecla
estado_botao=digitalRead(botaoR); //leitura digital da variavel botaoR e armazena na variavel estado_botao
estado_botao1=digitalRead(botaog); //leitura digital da variavel botaog e armazena na variavel estado_botao1
estado_botao2=digitalRead(botaoB); //leitura digital da variavel botaoB e armazena na variavel estado_botao2
Serial.print("R:"); //imprime no monitor serial o texto digitado
Serial.println(estado_ledR); //imprime no monitor serial o valor atual da variavel
Serial.print("G:"); //imprime no monitor serial o texto digitado
Serial.println(estado_ledG); //imprime no monitor serial o valor atual da variavel
Serial.print("B:"); //imprime no monitor serial o texto digitado
Serial.println(estado_ledB); //imprime no monitor serial o valor atual da variavel
delay(200); //delay de 200 milisegundos (0,2 segundos)
//Estrutura de Controle "if" (Se condição imposta for verdadeira a estrutura é executada até deixar de ser verdadeira)
if((estado_botao==1)||(teclaR==HIGH))
{
valor = analogRead(PC); //leitura analogica da variavel PC e armazena na variavel valor
estado_ledR = map(valor, 0, 1023, 0, 255); //função matematica "map" que remapeia um número de um intervalo para outro, remapeando a variavel valor que tem um intervalo de 0 a 1023 para um intervalo de 0 a 255 e armazena na variavel estado_ledR
analogWrite(11,estado_ledR); //escreve o valor da variavel estado_ledR no pino 11
}
//Estrutura de Controle "if" (Se condição imposta for verdadeira a estrutura é executada até deixar de ser verdadeira)
if((estado_botao1==1)||(teclaG==HIGH))
{
valor = analogRead(PC); //leitura analogica da variavel PC e armazena na variavel valor
estado_ledG = map(valor, 0, 1023, 0, 255); //função matematica "map" que remapeia um número de um intervalo para outro, remapeando a variavel valor que tem um intervalo de 0 a 1023 para um intervalo de 0 a 255 e armazena na variavel estado_ledG
analogWrite(10,estado_ledG); //escreve o valor da variavel estado_ledG no pino 10
}
//Estrutura de Controle "if" (Se condição imposta for verdadeira a estrutura é executada até deixar de ser verdadeira)
if((estado_botao2==1)||(teclaB==HIGH))
{
valor = analogRead(PC); //leitura analogica da variavel PC e armazena na variavel valor
estado_ledB = map(valor, 0, 1023, 0, 255); //função matematica "map" que remapeia um número de um intervalo para outro, remapeando a variavel valor que tem um intervalo de 0 a 1023 para um intervalo de 0 a 255 e armazena na variavel estado_ledB
analogWrite(9,estado_ledB); //escreve o valor da variavel estado_ledB no pino 9
}
//Estrutura de Controle "switch...case" (compara o valor de uma variável aos valores especificados nos comandos case)
switch(tecla){
case 'R': //caso executado quando 'R' for pressionado
teclaR=1; //atribui o valor 1 na variavel teclaR
break; //interrompe o comando switch
case 'G': //caso executado quando 'G' for pressionado
teclaG=1; //atribui o valor 1 na variavel teclaG
break; //interrompe o comando switch
case 'B': //caso executado quando 'B' for pressionado
teclaB=1; //atribui o valor 1 na variavel teclaB
break; //interrompe o comando switch
case 'X': //caso executado quando 'X' for pressionado
teclaR=0; //atribui o valor 0 na variavel teclaR
teclaG=0; //atribui o valor 0 na variavel teclaG
teclaB=0; //atribui o valor 0 na variavel teclaB
break; //interrompe o comando switch
}
}