Rodillo de dados de vacaciones (2 / 3 paso)

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;
}

Artículos Relacionados

Cómo hacer un rodillo de dados electrónicos

Cómo hacer un rodillo de dados electrónicos

Este post muestra un proyecto que terminé el verano pasado, un rodillo de dados electrónicos. En este post, voy a ir sobre cómo y por qué creó, y cómo usted puede hacer uno también!Paso 1: ¿Por qué construir un rodillo del dado electrónico?Era mi obj
Bola electrónica dados

Bola electrónica dados

Este simulador electrónico de dados es un reemplazo para dados y otras jugadas en juegos de mesa. Fue diseñado con dos objetivos en mente. En primer lugar, además de simular dados, deben ser capaces de generar números aleatorios de otras distribucion
Un dados de LED con un PIC 16F84 (o 16F88)

Un dados de LED con un PIC 16F84 (o 16F88)

Se trata de una reedición de un proyecto que hice un número de años - fue pesca de arrastre de la web y descubrió que otros habían estado haciendo, así que decidí poner el detalle aquí en instructables.com - para que otros puedan beneficiarse.Muchos
Cómo hacer su juego

Cómo hacer su juego

¿Tienes ganas de hacer su propio juego de mesa? ¿Tienes una idea que siempre has querido probar o estás lleno de ideas para juegos pero no está seguro de dónde empezar? ¿Quieres que sea lo suficientemente bueno como para que sus familiares y amigos q
Guía de estrategia de Catan

Guía de estrategia de Catan

Catan (anteriormente llamado "Los colonos de Catan") es un clásico juego de mesa diseñado por Klaus Teuber. Es probablemente la más exitosa de los juegos de estilo europeo y ha generado numerosas expansiones. Utiliza un tablero hermoso e infinit
Tutorial de ensamblador AVR 11

Tutorial de ensamblador AVR 11

Bienvenido a Tutorial 11!En este breve tutorial, finalmente vamos a construir la primera parte de nuestro proyecto final.Lo primero que debes hacer es ir al último paso de este tutorial y ver el video. Luego vienen aquí. [pausa mientras haces eso...]
Super Mario PowerPoint juego de Quiz - Juegos para profesores de inglés (ESL)

Super Mario PowerPoint juego de Quiz - Juegos para profesores de inglés (ESL)

Esto es un juego que hice para revisar puntos de gramática y vocabulario con mis estudiantes del idioma inglés. Este juego es totalmente adaptable a cualquier tema. Los usuarios pueden personalizar las preguntas cambiando el texto en el PowerPoint. T
Thayam Paramapadham o Pampu o serpientes y escalera

Thayam Paramapadham o Pampu o serpientes y escalera

Significado del nombreTablero de juego en la India desde tiempo antiguo. Relacionados con la vida humana.Paramapadham significa obtener una posición Suprema en la vida o a los pies del Dios. Para obtener una posición Suprema tenemos que enfrentar muc
Construcción de una trituradora de Penny

Construcción de una trituradora de Penny

Estoy construyendo una máquina para producir monedas presionados. Es similar en muchos aspectos a los que se puede encontrar en un zoológico, el aeropuerto o el Museo, con algunas diferencias importantes. Mientras más trituradoras de penny le permite
¡ Quiero mi GMTV! (tablero de la mesa en una gran pantalla)

¡ Quiero mi GMTV! (tablero de la mesa en una gran pantalla)

¡ ADVERTENCIA! El siguiente instructivo combina una Junta de proyecto con juegos de mesa y por lo tanto, puede ser frikis de todos los tiempos. ***Hola a todos. Recientemente, mis hijos tomaron un interés en los juegos de mesa y me pidieron que les e
Mesa automática de Mahjong

Mesa automática de Mahjong

Mahjong es un divertido juego!pero configurar los azulejos cada solo juego es pesado!Qué tal una mesa que hace para usted!!!!!!Aquí son algunos profesionales para inspirarse:http://www.youtube.com/watch?v=m5aiwxSfdH0http://www.youtube.com/watch?v=zdy
Creación de un personaje mediante el sistema de juego de rol Pathfinder

Creación de un personaje mediante el sistema de juego de rol Pathfinder

El sistema de juego de rol Pathfinder, publicado por Paizo, es increíblemente similar a Dungeons & Dragons 3.5 en la mayoría de los respectos. En general, sin embargo, el jugador se le da más opciones y se han simplificado muchas reglas confusas. Est
BRICOLAJE hogar máquina de Arcade

BRICOLAJE hogar máquina de Arcade

Hey chicos, este es un pequeño paso a paso básico para la construcción de su propio hogar arcade. Básicamente siempre he querido hacer uno incluso antes de que MAME estaba alrededor. Cuando yo era un niño tuve la gran idea de poner un NES en un gabin
Introducción a mi Tutorial de como hacer su muy propio rol juego sin cualquier conocimiento de Scripting y Pixel-Art

Introducción a mi Tutorial de como hacer su muy propio rol juego sin cualquier conocimiento de Scripting y Pixel-Art

bien, desea realizar su propio proyecto de rol, pero no sabes donde empezar... bueno este tutorial básicamente le mostrará cómo crear un juego de RPG de rodillo de dados sin necesidad de cualquier navegador de internet, un asesino de aburrimiento per