Paso 2: El código (Sketch de Arduino)
Aquí está el código. Descargar esto en su Arduino. Puede ignorar las líneas de impresión ya se utiliza para la depuración.const int rollButton = 14;
const int secretButton = 15;
const int diceOne = 0;
const int diceTwo = 6; Añadir 6 a los pines de dirección de morir segundo
int rollButtonState = alto; la lectura actual desde el pasador. ALTA = no presionado
int lastRollButtonState = alto; la lectura anterior del pasador de rodillo
int secretButtonState = alto; la lectura actual del pin secreto
int lastSecretButtonState = alto; la anterior lectura de pin secreto
las siguientes variables son largas de porque el tiempo, medido en milisegundos,
rápidamente se convertirá en un número más grande que puede ser almacenado en un int.
lastSecretDebounceTime largo = 0; la última vez que el pin de salida fue fijado
lastRollDebounceTime largo = 0; la última vez que el pin de salida fue fijado
debounceDelay largo = 55; el tiempo de debounce; aumentar si la salida parpadea
void setup() {}
pinMode (0, salida); primero morir de LED
pinMode (1, salida);
pinMode (2, salida);
pinMode (3, salida);
pinMode (4, salida);
pinMode (5, salida);
pinMode (6, salida);
pinMode (7, salida); en segundo lugar, morir de LED
pinMode (8, salida);
pinMode (9, salida);
pinMode (10, salida);
pinMode (11, salida);
pinMode (12, salida);
pinMode (13, salida);
pinMode (rollButton, entrada); establece el pin A0 como entrada digital; Este es el botón de rodillo
digitalWrite (rollButton, HIGH); encender la resistencia de pullup
pinMode (secretButton, entrada); establece A1 como entrada digital; Este es el botón secreto
digitalWrite (secretButton, HIGH); encender la resistencia de pullup
Serial.Begin(9600);
randomSeed(analogRead(3)); Si el pin entrado analógico 3 es análogo al azar,
ruido hará que la llamada a randomSeed() para generar
número de semillas diferentes cada vez que se ejecuta el bosquejo.
randomSeed() entonces se baraja la función aleatorizada.
clearAll();
lightOne(0); establecer dos dados a luz unos esperando rodillo interruptor al ser presionado
lightOne(7);
}
void loop() {}
Serial.Print(rollButtonState);
Serial.println ("= estado de botón Roll»);
Serial.println ("bucle principal");
checkRollButton();
checkSecretButton();
Si (rollButtonState == LOW) / / botón presionado = baja
{
blinkAll (300, 3); parpadear de y todos los led de 3 veces, 300 ms aparte y luego el rodillo
}
}
void checkSecretButton() {}
leer el estado del interruptor en una variable local:
lectura de int = digitalRead(secretButton);
Verifique si usted recién oprimió el botón
(es decir, la entrada fue de alta a baja), y ha esperado
tiempo suficiente para ignorar cualquier ruido:
Si el interruptor fue bajo, debido al ruido o prensado:
Si (leer == LOW) {}
esperar el tiempo debouncing
Delay(debounceDelay);
lectura = digitalRead(secretButton);
Si (leer == LOW) //reading todavía es bajo después de debounce delay
{
secretButtonState = bajo;
Serial.println ("secretRoll de rutina establecido bajo");
lastSecretButtonState = bajo; Esto recuerda el botón fue presionado y sólo puede restablecerse después de un rollo secreto
}
otra cosa
{secretButtonState = alto;
}
}
otra cosa
{secretButtonState = alto;
}
}
void checkRollButton() {}
leer el estado del interruptor en una variable local:
lectura de int = digitalRead(rollButton);
Verifique si usted recién oprimió el botón
(es decir, la entrada fue de alta a baja), y ha esperado
tiempo suficiente para ignorar cualquier ruido:
Si el interruptor fue bajo, debido al ruido o prensado:
Si (leer == LOW) {}
esperar el tiempo debouncing
Delay(debounceDelay);
lectura = digitalRead(rollButton);
Si (leer == LOW) //reading todavía es bajo después de debounce delay
{rollButtonState = bajo;
Serial.println ("CheckRoll de rutina establecido bajo");
}
otra cosa
{rollButtonState = alto;
}
}
otra cosa
{rollButtonState = alto;
}
}
void lightOne (int diceNumber) {}
Serial.println ("en uno");
digitalWrite (diceNumber, HIGH);
}
void lightTwo (int diceNumber) {}
Serial.println ("en dos");
digitalWrite (1 + diceNumber, HIGH);
digitalWrite (4 + diceNumber, HIGH);
}
void lightThree (int diceNumber) {}
Serial.println ("en tres");
digitalWrite (1 + diceNumber, HIGH);
digitalWrite (4 + diceNumber, HIGH);
digitalWrite (0 + diceNumber, HIGH);
}
void lightFour (int diceNumber) {}
Serial.println ("en cuatro");
digitalWrite (3 + diceNumber, HIGH);
digitalWrite (1 + diceNumber, HIGH);
digitalWrite (4 + diceNumber, HIGH);
digitalWrite (6 + diceNumber, HIGH);
}
void lightFive (int diceNumber) {}
Serial.println ("en cinco");
digitalWrite (1 + diceNumber, HIGH);
digitalWrite (3 + diceNumber, HIGH);
digitalWrite (4 + diceNumber, HIGH);
digitalWrite (6 + diceNumber, HIGH);
digitalWrite (0 + diceNumber, HIGH);
}
void lightSix (int diceNumber) {}
Serial.println ("en seis");
digitalWrite (1 + diceNumber, HIGH);
digitalWrite (2 + diceNumber, HIGH);
digitalWrite (3 + diceNumber, HIGH);
digitalWrite (4 + diceNumber, HIGH);
digitalWrite (5 + diceNumber, HIGH);
digitalWrite (6 + diceNumber, HIGH);
}
void clearAll() {}
digitalWrite (0, LOW);
digitalWrite (1, bajo);
digitalWrite (2, bajo);
digitalWrite (3, bajo);
digitalWrite (4, bajo);
digitalWrite (5, bajo);
digitalWrite (6, bajo);
digitalWrite (7, bajo);
digitalWrite (8, bajo);
digitalWrite (9, bajo);
digitalWrite (10, bajo);
digitalWrite (11, bajo);
digitalWrite (12, bajo);
digitalWrite (13, bajo);
}
void blinkAll (int t, int n) {}
clearAll();
para (int x = 0; x < n; x ++) {/ / bucle números veces
digitalWrite (0, LOW);
digitalWrite (1, bajo);
digitalWrite (2, bajo);
digitalWrite (3, bajo);
digitalWrite (4, bajo);
digitalWrite (5, bajo);
digitalWrite (6, bajo);
digitalWrite (7, alto);
digitalWrite (8, HIGH);
digitalWrite (9, alto);
digitalWrite (10, HIGH);
digitalWrite (11, alto);
digitalWrite (12, HIGH);
digitalWrite (13, HIGH);
Delay(t);
digitalWrite (0, alto);
digitalWrite (1, alto);
digitalWrite (2, alto);
digitalWrite (3, alto);
digitalWrite (4, alto);
digitalWrite (5, alto);
digitalWrite (6, alto);
digitalWrite (7, bajo);
digitalWrite (8, bajo);
digitalWrite (9, bajo);
digitalWrite (10, bajo);
digitalWrite (11, bajo);
digitalWrite (12, bajo);
digitalWrite (13, bajo);
Delay(t);
}
clearAll();
Compruebe primero si botón secreto fue empujado previamente
Si (lastSecretButtonState == LOW) / / pulsar botón secreto, lastSecretButtonState seguirá siendo baja
{
secretDiceRoll();
}
otra cosa
{
randomDiceRoll();
}
}
void randomDiceRoll() {}
int randNumber = 6;
/*
código de prueba
clearAll();
lightOne(diceOne); establecer dos dados a luz unos esperando rodillo interruptor al ser presionado
lightOne(diceTwo);
*/
Serial.println ("introducidos al azar número código");
Serial.Print(rollButtonState);
Serial.println ("= estado de botón Roll»);
para (int d = 0; d < 8; d = d + 7) {/ / hacer una vez para morir ea
obtener un número aleatorio de 1 a 6
randNumber = random (6) + 1;
interruptor (randNumber) {}
caso 1:
lightOne(d);
rotura;
caso 2:
lightTwo(d);
rotura;
caso 3:
lightThree(d);
rotura;
caso 4:
lightFour(d);
rotura;
caso 5:
lightFive(d);
rotura;
caso 6:
lightSix(d);
rotura;
por defecto:
clearAll();
rotura;
}
}
rollButtonState = alto;
Serial.println ("salido al azar número código");
Serial.Print(rollButtonState);
Serial.println ("= estado de botón Roll»);
Serial.println("");
}
void secretDiceRoll() {//secret botón causas aleatorias dobles
int secretRandNumber = 6;
secretRandNumber = random (6) + 1;
interruptor (secretRandNumber) {}
caso 1:
{lightOne(0); lightOne(7); break;}
caso 2:
{lightTwo(0); lightTwo(7); break;}
caso 3:
{lightThree(0); lightThree(7); break;}
caso 4:
{lightFour(0); lightFour(7); break;}
caso 5:
{lightFive(0); lightFive(7); break;}
caso 6:
{lightSix(0); lightSix(7); break;}
por defecto:
{clearAll(); break;}
}
secretButtonState = alto;
lastSecretButtonState = alto;
}