/*-----------------------------------------------------
Estudo de Componente
CI 74HC595 - Registrador de deslocamento de bit
> Contagem com shiftRegister de 7 segmentos
11.05.2024
by.: LOSR | <Pedra_Lascada></pL>
-------------------------------------------------------*/
// -------------- Definição de Hardware ---------------//
// Chip 74HC595
#define data 27 // Pino DS
#define clk 14 // Pino Clock "SHCP"
#define latch 12 // Pino Latch "STCP"
// ------------- Declarão das Variáveis ---------------//
#define led_azul 1 // 0b000000001
#define led_ciano (1 << 1) // 0b000000010
#define led_verde (1 << 2) // 0b000000100
int8_t out_mask;
class leds
{
int num_bit;
void shiftRegister() {
digitalWrite(latch, LOW); // Desativa latch
shiftOut(data, clk, MSBFIRST, out_mask); // Envia o valor das unidades ao 1° chip
digitalWrite(latch, HIGH); // Ativa latch
// > Pulso para troca de valores no 74HC595
}
public:
void attach(int pin){
num_bit = pin;
}
void on() {
out_mask |= num_bit;
shiftRegister();
}
void off() {
out_mask &= ~num_bit;
shiftRegister();
}
};
leds a, b, c;
// -------------------- SETUP ----------------------//
void setup() {
// Definindo todos os pinos do 74HC595 como sáida
pinMode(data, OUTPUT);
pinMode(clk, OUTPUT);
pinMode(latch, OUTPUT);
a.attach(led_azul);
b.attach(led_ciano);
c.attach(led_verde);
}
// -------------------- LOOP -----------------------//
void loop() {
a.on();
b.on();
c.on();
delay(1000);
a.off();
delay(1000);
c.off();
delay(1000);
b.off();
a.on();
delay(1000);
}
// ------------------- FUNÇÕES ---------------------//