#define botao 3
#define ledR 4
#define ledG 5
#define ledB 6
//Criar uma class para Btn
class cBtn
{
public:
cBtn(int p) //O contrutor receber um valor que corresponde ao pino de entrda do botao
{
pino = p;
btn_pressionado = 0;
btn_liberado = 0;
}
~cBtn(){}
bool Verificar_Botao()
{
if(digitalRead(pino) == HIGH){
btn_pressionado = 1;
btn_liberado = 0;
}else{
btn_liberado = 1;
}
if(btn_pressionado == HIGH && btn_liberado == HIGH)
{
btn_pressionado = 0;
btn_liberado = 0;
return true;
}
return false;
}
private:
int pino;
int btn_pressionado;
int btn_liberado;
};
//Class led RGB
class cRGB
{
public:
cRGB(int pR, int pG, int pB): pinoR(pR), pinoG(pG), pinoB(pB){
cont_ciclo = 0;
maximo = 3;
}
~cRGB(){}
void Trocar_Cor_Led()
{
if(cont_ciclo == 0){
LedRGB(1,0,0);
}else if(cont_ciclo == 1){
LedRGB(0,1,0);
}else if(cont_ciclo == 2){
LedRGB(0,0,1);
}
if(cont_ciclo > (maximo - 1)){
cont_ciclo = 0;
LedRGB(0,0,0);
}
cont_ciclo++;
}
void LedRGB(int cor1, int cor2, int cor3)
{
digitalWrite(pinoR, cor1);
digitalWrite(pinoG, cor2);
digitalWrite(pinoB, cor3);
}
private:
int pinoR;
int pinoG;
int pinoB;
int cont_ciclo;
int maximo;
};
//objetos com escopo global. Esse objetos serão inicializado.
cRGB ob_LedRGB(ledR,ledG,ledB);
cBtn ob_Botao(botao);
void setup()
{
//configurando o modo de trabalho dos pinos do Arduíno
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(botao, INPUT);
}
void loop()
{
if(ob_Botao.Verificar_Botao()){
ob_LedRGB.Trocar_Cor_Led();
}
delay(200);
}