ArduinoProjects/DiceRoller/DiceRoller.ino

86 lines
2.1 KiB
C++

int isGenerating = false;
//Connesso al Pin DS del 74HC595
int dataPin = 8;
//Connesso al Pin ST_CP del 74HC595
int latchPin = 9;
//Connesso al Pin SH_CP del 74HC595
int clockPin = 10;
int buttonPin = 12;
void setup() {
//configuriamo i 3 pin di output
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(buttonPin, INPUT);
turnOnLeds(0);
}
void loop() {
if (!isGenerating)
{
if (digitalRead(buttonPin) == HIGH)
{
isGenerating = true;
int wait = 10;
for (int i = 0; i <= 20; i++)
{
int rand = random(1, 7);
turnOnLeds(rand);
wait += 10;
delay(wait);
}
isGenerating = false;
}
}
}
void turnOnLeds(int howMany)
{
for (int j = 0; j < 7 - howMany; j++)
{
digitalWrite(clockPin, 0); //mi assicuro che clock si LOW
digitalWrite(latchPin, 0); //abbasso il latch per iniziare a programmare il 74HC595
digitalWrite(dataPin, 0); // abbasso il pin data
digitalWrite(clockPin, 1); //alzo il clock -> abbiamo "spinto" il valore 1 nel primo registro del 74HC595.
digitalWrite(dataPin, 0); //rimetto a zero il data pin e clock pin per non portare valori HIGH oltre questo punto.
digitalWrite(clockPin, 0); //rimetto a zero il clock pin.
digitalWrite(latchPin, 1); //latch HIGH per confermare gli output.
}
for (int j = 0; j < howMany; j++) {
digitalWrite(clockPin, 0); //mi assicuro che clock si LOW
digitalWrite(latchPin, 0); //abbasso il latch per iniziare a programmare il 74HC595
digitalWrite(dataPin, 1); // alzo il pin data
digitalWrite(clockPin, 1); //alzo il clock -> abbiamo "spinto" il valore 1 nel primo registro del 74HC595.
digitalWrite(dataPin, 0); //rimetto a zero il data pin e clock pin per non portare valori HIGH oltre questo punto.
digitalWrite(clockPin, 0); //rimetto a zero il clock pin.
digitalWrite(latchPin, 1); //latch HIGH per confermare gli output.
}
}