//gives a random number between 0 and 9
int dataPin = PB0;
int clockPin = PB2;
int latchPin = PB1;
int button = PB4;
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(button, INPUT_PULLUP);
}
bool firstTime= true;
void loop() {
while (digitalRead(PB4) == HIGH) {
// do nothing
}
if (firstTime) {
randomSeed(micros());// to increase randomness
firstTime = false;
}
for (byte i = 0; i < 10; i++) {
int num = random(0, 10);//gives a random number from 1 to 6
displayNumber(num);
delay(50 + 20 * i);
}
}
void displayNumber(byte number) {
int pattern=0b00000000;
if(number==0){
pattern = 0b00000011;//0
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==1){
pattern = 0b10011111;//1
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==2){
pattern = 0b00100101;//2
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==3){
pattern = 0b00001101;//3
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==4){
pattern = 0b10011001;//4
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==5){
pattern = 0b01001001;//5
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==6){
pattern = 0b01000001;//6
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==7){
pattern = 0b00011111;//7
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==8){
pattern = 0b00000001;//8
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
if(number==9){
pattern = 0b00001001;//9
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(50);}
}