Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Código para realizar o efeito de "vai e vem" dos oito LEDs com Shift Register.
/**
* Manipulando dados no Shift Register 74HC595
* https://www.tecdicas.com/58/manipulando-dados-no-shift-register
*
* EXEMPLO2: EFEITO "VAI E VEM" DE LEDS - V1.2
*
* Autora: Ana Paula Messina - anapaula@tecdicas.com
*
* https://www.tecdicas.com/
*
* 23/01/2019
*
* MIT
*/
/**
* Constantes para GPIOs do NodeMCU ESP-12E
*/
#define DATA 12 // D6
#define LATCH 13 // D7
#define CLK 15 // D8
/**
* Constantes para GPIOs do Arduino Atmega328p
*/
//#define DATA 8
//#define LATCH 9
//#define CLK 10
byte valorByte = 0x00;
/**
* Monta e limpa um byte para ser manipulado no Shift Register
*
* @param byte &valor - Valor do byte de até 0xFF/255/8 bits
* @param int posicao - Posição do bit de 0 a 7.
* @param int estado - Estado de HIGH/1 ou LOW/0 para o bit.
*/
void montarByte(byte &valor, int posicao, int estado)
{
//Serial.println(valorByte, BIN);
if(estado == HIGH)
{
bitSet(valor, posicao);
}
else if(estado == LOW)
{
bitClear(valor, posicao);
}
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLK, LSBFIRST, valor);
digitalWrite(LATCH, HIGH);
//Serial.println(valorByte, BIN);
}
void ledVaiVem()
{
for(int i=0;i<=7;i++)
{
montarByte(valorByte, i, HIGH);
delay(500);
}
for(int i=7;i>=0;i--)
{
montarByte(valorByte, i, LOW);
delay(500);
}
}
void setup()
{
Serial.begin(9600);
pinMode(DATA, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLK, OUTPUT);
}
void loop()
{
ledVaiVem();
delay(1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.