Nesta aula vamos integrar a funcionalidade das duas aulas anteriores e controlar o brilho ou intensidade de um Led RGB (Red, Green e Blue), desta forma podemos obter várias cores com a mistura dessas 3 três cores principais.
O código abaixo define os pinos que serão utilizados como leitura de sinal analógico e também o pinos de saída com o periférico PWM. No programa principal as três primeiras linhas de comando tem a função de realizar a leitura das entradas analógicas e já dividir o valor lido por 4, essa divisão é preciso ter pelo fato das resoluções do PWM e do canal ADC não serem os mesmos, portanto o PWM trabalha de 0 a 255 e o ADC de 0 a 1023, com isto aplicando a divisão ( 1024/4 = 256) eu posso mover posteriormente o valor armazenado na variável diretamente para o pino com PWM.
As três ultimas linhas de programação do programa principal tem a função de atualizar o valor do PWM, caso ocorra de um dos potenciômetros da entrada tenha seu valor alterado.
O código abaixo define os pinos que serão utilizados como leitura de sinal analógico e também o pinos de saída com o periférico PWM. No programa principal as três primeiras linhas de comando tem a função de realizar a leitura das entradas analógicas e já dividir o valor lido por 4, essa divisão é preciso ter pelo fato das resoluções do PWM e do canal ADC não serem os mesmos, portanto o PWM trabalha de 0 a 255 e o ADC de 0 a 1023, com isto aplicando a divisão ( 1024/4 = 256) eu posso mover posteriormente o valor armazenado na variável diretamente para o pino com PWM.
As três ultimas linhas de programação do programa principal tem a função de atualizar o valor do PWM, caso ocorra de um dos potenciômetros da entrada tenha seu valor alterado.
Detalhando o código de execução
// controle de cor utilizando um LED RGB // Profº Bruno Orosco //---------- Definição dos pinos de I/O -------------// #define redpin 9 //Pin 9 #define greenpin 10 //Pin 10 #define bluepin 11 //Pin 11 #define Control_Red A1 //entrada Analogica1 #define Control_Green A2 //entrada Analogica2 #define Control_Blue A3 //entrada Analogica3 //------------ Fim das Definições ---------------// //---------- Variaveis Globais -------------// int pot_R =0; //cria uma variavel do tipo inteira int pot_G =0; //cria uma variavel do tipo inteira int pot_B =0; //cria uma variavel do tipo inteira //---------- Fim das Variaveis Globais -------------// //---------- Configuração Inicial -------------// void setup() { pinMode(redPin, OUTPUT); //define pino como saída pinMode(greenPin, OUTPUT);//define pino como saída pinMode(bluePin, OUTPUT); //define pino como saída } //---------- Fim da Configuração Inicial -------------// //---------- Programa Principal -------------// void loop() { //realiza a leitura dos potenciometros pot_R = analogRead(Control_Red/4); //Lê o valor do Canal AD - A0 controle do vermelho pot_G = analogRead(Control_Green/4);//Lê o valor do Canal AD - A1 controle do verde pot_B = analogRead(Control_Blue/4); //Lê o valor do Canal AD - A2 controle do azul // atualiza valor do PWM analogWrite(redpin,pot_R); // PWM COR VERMELHO analogWrite(greenpin,pot_G); // PWM COR VERDE analogWrite(redpin,pot_B); // PWM COR AZUL } //---------- fim do Programa Principal -------------//
Esquema Elétrico
Bom Trabalho!!!