Nesse projeto, que faz parte da elaboração de um kit didático dedicado para práticas em laboratório, o objetivo da proposta contava com uma situação de funcionamento em que, os motores de passo Nema 17 fossem todos acionados simultaneamente, que pudessem sofrer paradas independentes e contassem com uma redução de velocidade que pudesse ser acionada a qualquer momento.
Desafio aceito e finalmente depois de alguns dias ficou pronto e funcionando conforme a necessidade!
Nas figuras a seguir é possível visualizar o projeto finalizado.
Fonte: próprio autor
Fonte: próprio autor
Fonte: próprio autor
Fonte: próprio autor
Fonte: próprio autor
Fonte: próprio autor
O vídeo apresentado na sequência demonstra o funcionamento dos motores, as paradas independentes e a redução de suas velocidades.
O
LED RGB proporciona um acionamento onde pode-se conseguir por meio das diferentes
tensões de alimentação, trabalhar com as cores primarias, vermelha, verde e
azul.
Com
a plataforma Arduino é possível além de conseguir as cores primarias, variar a
intensidade de cada uma para conseguir tonalidades variantes para a aquisição
de outras cores.
Nesse tutorial vamos realizar uma demonstração com projetos onde é possível adquirir o controle das cores desse componente de forma que venha a atender uma necessidade conforme o usuário desejar.
Vamos conhecer um pouco das características desse componente. O LED
RGB possui características físicas que devem ser consideradas. Cada terminal
possui um tamanho, onde o terminal mais longo pode atender a característica
comum para seu funcionamento (o usuário adquire conforme sua necessidade, anodo
comum ou catodo comum).
Características do componente
Projeto 1: Variando as cores com o Arduino
Para esse primeiro projeto, o usuário deve ter em mãos:
Placa microcontrolada Arduino (UNO ou similar)
Resistores 330Ω
LED RGB (catodo comum)
Cabos jumpers
Protoboard
Circuito 1:
fonte: próprio autor
Código 1:
/*
* CORES DO LED RGB
*/
int redpin=9; //Pin 9
int greenpin=10; //Pin 10
int bluepin=11; //Pin 11
int var=0;
int var1=0;
void setup(){
}
void loop(){
for(var=250;var<255;var++){
analogWrite(redpin,var); //RED
analogWrite(greenpin,0);
delay(500);
analogWrite(redpin,0); //GREEN
analogWrite(greenpin,var);
delay(500);
analogWrite(greenpin,0); //BLUE
analogWrite(bluepin,var);
delay(500);
analogWrite(bluepin,0);
delay(500);
}
for(var1=250;var1<255;var1++){
analogWrite(redpin,var1); //YELLOW
analogWrite(greenpin,var1);
delay(500);
analogWrite(redpin,0);
delay(500);
analogWrite(greenpin,var1); //CYAN
analogWrite(bluepin,var1);
delay(500);
analogWrite(greenpin,0);
delay(500);
analogWrite(bluepin,var1); //MAGENTA
analogWrite(redpin,var1);
delay(500);
analogWrite(bluepin,0);
delay(500);
analogWrite(bluepin,var1);
analogWrite(redpin,var1);
analogWrite(greenpin,var1);
}
}
Projeto 2: Variando
as cores do LED RGB com potenciômetro
Componentes:
Placa microcontrolada Arduino (UNO ou similar)
Resistores 330Ω
Resistores 10 KΩ
Botões de pressão
Potenciômetro 10 KΩ
LED RGB (catodo comum)
Cabos jumpers
Protoboard
Circuito 2:
fonte: próprio autor
Código 2:
/*
* VARIANDO CORES DO LED RGB COM O POTENCIÔMETRO
*/
// Define as conexões para cada cor do RGB
const int R = 11;
const int G = 9;
const int B = 10;
// Armazena os valores para cada cor entre (0-255)
int ValorR = 255;
int ValorG;
int ValorB;
// Define as conexões dos botões seletores
const int botR = 2;
const int botG = 4;
const int botB = 7;
// Define a conexão do potenciômetro
const int pot = A1;
void setup()
{
// Define Monitor Serial (visualização de dados)
Serial.begin(9600); // taxa de comunicação entre Arduino e PC
// Indica que os pinos dos botões são de SAÍDA do Arduino
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
// Indica que os pinos são ENTRADA do Arduino
pinMode(botR, INPUT);
pinMode(botG, INPUT);
pinMode(botB, INPUT);
pinMode(pot, INPUT);
}
void loop()
{
//Verifica se os botões seletores estão acionados
while (digitalRead(botR) == HIGH) // enquanto o botão R estiver acionado
{
ValorR = map(analogRead(pot),0,1023,0,255);
analogWrite(R,ValorR);
analogWrite(G,0);
analogWrite(B,0);
// Chama a função para mostrar na tela
monitorSerial();
}
while (digitalRead(botG) == HIGH) // enquanto o botão G estiver acionado
{
ValorG = map(analogRead(pot),0,1023,0,255);
analogWrite(R,0);
analogWrite(G,ValorG);
analogWrite(B,0);
// Chama a função para mostrar na tela
monitorSerial();
}
while (digitalRead(botB) == HIGH)// enquanto o botão G estiver acionado
{
ValorB = map(analogRead(pot),0,1023,0,255);
analogWrite(R,0);
analogWrite(G,0);
analogWrite(B,ValorB);
// Chama a função para mostrar na tela
monitorSerial();
}
// Atualiza o led RGB com a cor da mistura
analogWrite(R, ValorR);
analogWrite(G, ValorG);
analogWrite(B, ValorB);
}
void monitorSerial()
{
//mostra os valores no PC - Monitor Serial valor do potenciômetro
Serial.print("R = ");
Serial.print(ValorR);
Serial.print(" | G= ");
Serial.print(ValorG);
Serial.print(" | B= ");
Serial.println(ValorB);
delay(50);
}
Projeto 3: Variando as cores do LED RGB com Bluetooth
Deixando o projeto um pouco mais interessante, no próximo código, vamos fazer um acionamento remoto das cores do LED RGB, por meio de um aplicativo do celular. Para que isso possa ocorrer, é necessário instalar o aplicativo "RGB Led Control", que pode ser encontrado por esse LINK da Playstore.
fonte: Google play
Componentes:
Placa microcontrolada Arduino (UNO ou similar) Módulo Bluetooth HC-05 ou HC-06
LED RGB (catodo comum)
Cabos jumpers
Protoboard
Circuito 3:
fonte: próprio autor
Código 3:
//Baseado no original de vandenbrande
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial mySerial(10,11); //Definição do pino11 e pino12 como RX e TX
int PIN_RED = 3;
int PIN_GREEN = 5;
int PIN_BLUE = 6;
String RGB = "";
String RGB_Previous = "255.255.255";
String ON = "ON";
String OFF = "OFF";
boolean RGB_Completed = false;
void setup() {
pinMode (PIN_RED, OUTPUT);
pinMode (PIN_GREEN, OUTPUT);
pinMode (PIN_BLUE, OUTPUT);
Serial.begin(9600);
mySerial.begin(9600);
RGB.reserve(30);
}
void loop() {
while(mySerial.available()){
char ReadChar = (char)mySerial.read();
if(ReadChar == ')'){
RGB_Completed = true;
}else{
RGB += ReadChar;
}
}
if(RGB_Completed){
Serial.print("RGB:");
Serial.print(RGB);
Serial.print(" PreRGB:");
Serial.println(RGB_Previous);
if(RGB==ON){
RGB = RGB_Previous;
Light_RGB_LED();
}else if(RGB==OFF){
RGB = "0.0.0";
Light_RGB_LED();
}else{
Light_RGB_LED();
RGB_Previous = RGB;
}
RGB = "";
RGB_Completed = false;
}
}
void Light_RGB_LED(){
int SP1 = RGB.indexOf(' ');
int SP2 = RGB.indexOf(' ', SP1+1);
int SP3 = RGB.indexOf(' ', SP2+1);
String R = RGB.substring(0, SP1);
String G = RGB.substring(SP1+1, SP2);
String B = RGB.substring(SP2+1, SP3);
Serial.print("R=");
Serial.println( constrain(R.toInt(),0,255));
Serial.print("G=");
Serial.println(constrain(G.toInt(),0,255));
Serial.print("B=");
Serial.println( constrain(B.toInt(),0,255));
analogWrite(PIN_RED, (R.toInt()));
analogWrite(PIN_GREEN, (G.toInt()));
analogWrite(PIN_BLUE, (B.toInt()));
}
No vídeo abaixo é possível ver o funcionamento dos três projetos sendo executado.
Bom estudo à todos!