// For the discord channel
const int dataPin = 2;
const int clockPin = 3;
const int latchPin = 4;
const int outputEnablePin = 6;
const int button1 = 10;
const int button2 = 11;
const int button3 = 12;
void setup()
{
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(outputEnablePin, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
Serial.begin(115200);
}
void loop()
{
int data = 0;
int valueBit0 = digitalRead(button1) == LOW ? 1 : 0;
int valueBit1 = digitalRead(button2) == LOW ? 1 : 0;
int valueBit2 = digitalRead(button3) == LOW ? 1 : 0;
bitWrite(data,0,valueBit0);
bitWrite(data,1,valueBit1);
bitWrite(data,2,valueBit2);
// A button was pressed ? then do the fading.
if(data != 0)
{
Serial.print("Led number ");
Serial.println(data);
// set the 'n'-th bit
byte pattern = 0;
bitWrite(pattern,data,1);
// Set byte in shift register.
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
// Fade In
for (int pwm=255; pwm>=0; pwm--)
{
analogWrite(outputEnablePin, pwm);
delay(5);
}
// Fade Out
for (int pwm=0; pwm<=255; pwm++)
{
analogWrite(outputEnablePin, pwm);
delay(5);
}
}
delay(10);
}
Bit 0
Bit 1
Bit 2