...And finally the rest:
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
// This shifts 8 bits out MSB first,
//on the rising edge of the clock,
//clock idles low
//internal function setup
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
//clear everything out just in case to
//prepare shift register for bit shifting
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
//for each bit in the byte myDataOut?
//NOTICE THAT WE ARE COUNTING DOWN in our for loop
//This means that %00000001 or "1" will go through such
//that it will be pin Q0 that lights.
for (i=7; i>=0; i--) {
digitalWrite(myClockPin, 0);
//if the value passed to myDataOut and a bitmask result
// true then... so if we are at i=6 and our value is
// %11010100 it would the code compares it to %01000000
// and proceeds to set pinState to 1.
if ( myDataOut & (1<<i) ) {
pinState= 1;
}
else {
pinState= 0;
}
//Sets the pin to HIGH or LOW depending on pinState
digitalWrite(myDataPin, pinState);
//register shifts bits on upstroke of clock pin
digitalWrite(myClockPin, 1);
//zero the data pin after shift to prevent bleed through
digitalWrite(myDataPin, 0);
}
//stop shifting
digitalWrite(myClockPin, 0);
}
void Winner() {
i2 = 0;
analogWrite(rdPin, 0);
clearLCD();
for(i3 = 0; i3 < 5; i3++) {
Serial.print("WINNER!!");
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 255);
digitalWrite(latchPin, 1);
for(i = 255; i > 0; i--) {
i2 = i2 + 1;
analogWrite(blPin, i);
analogWrite(gnPin, i2);
delay(1);
}
clearLCD();
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 0);
digitalWrite(latchPin, 1);
for(i = 0; i < 256; i++) {
i2 = i2 - 1;
analogWrite(blPin, i);
analogWrite(gnPin, i2);
delay(1);
}
}
analogWrite(gnPin, 0);
analogWrite(blPin, 0);
}
void Loser() {
clearLCD();
for(i = 0; i < 5; i++) {
Serial.print("LOSER!!");
delay(300);
clearLCD();
delay(300);
}
}
void Wrong() {
randomNumber = random(6);
switch (randomNumber) {
case 0:
Serial.print("Not Quite!");
break;
case 1:
Serial.print("Ouch!");
break;
case 2:
Serial.print("Nope...");
break;
case 3:
Serial.print("Wrong!");
break;
case 4:
Serial.print("Try Again!");
break;
case 5:
Serial.print("Darn!");
break;
}
}