int latchPin = 8; // Pin cocnnected to Pin 12 of 74HC595 (Latch)
int clockPin = 12; // Pin cocnnected to Pin 11 of 74HC595 (Clock)
int dataPin =11; //Pin cocnnected to Pin 14 of 74HC595 (Data)
int animasi1[]={1,2,4,8,16,32,64,128};
int animasi2[]={128,64,32,16,8,4,2,1};
void setup() {
// set pins to output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop(){
//count from 0 to 225
for (int i = 0; i < 8; i++){
GeserDataOutput(animasi1[i]);
//set latchPin low then high to send data out
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
delay(100);
}
for (int i = 0; i < 8; i++){
GeserDataOutput(animasi2[i]);
//set latchPin low then high to send data out
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
delay(100);
}
}
void GeserDataOutput(byte dataOut) {
//shift out 8 bits LSB first (ke kanan),clooking each with a rasing edge of the clock line
boolean pinState;
for (int i=0; i<=7; i++) { // for each bit in dataOut send out a bit
digitalWrite(clockPin, LOW); //set clockPin to LOW
// if the value of DataOut and (logical AND) a bitmask
// are true, set pinState to 1 (HIGH)
if ( dataOut & (1<<i) ) {
pinState = HIGH;
}
else{
pinState = LOW;
}
// sets dataPin to HIGH or LOW depending on pinState
digitalWrite(dataPin, pinState); //send bit out
digitalWrite(clockPin, HIGH);
}
digitalWrite(clockPin, LOW); //stop shifting out data
}