3D impreso microcontrolador Dice Roller (3 / 10 paso)

Paso 3: Programando el microcontrolador

Escribí mi código en MPIDE. MPIDE es completamente gratuito y puede descargarse aquí. Nota: MPIDE puede programar cualquier microcontrolador, incluyendo todos los chipKIT y placas Arduino. Si usted está utilizando una placa Arduino y ya tiene de Arduino IDE que funcionará igual de bien también.

Si eres nuevo en microcontroladores y la programación en un IDE, es aquí un rápido tutorial que explica cómo instalar MPIDE y utilizarlo para comunicarse con la placa: Introducción a MPIDE.

A continuación se muestra el código que escribí para el microcontrolador. Hay tres porciones principales a este "sketch":

  • La función roll() que lo hace parecer como si realmente está lanzando el dado. Esta es una función que he creado yo mismo y se incluye en el código siguiente.
  • Generar un número aleatorio entre 1 y 6 con la función rand(). (Esta función está predefinida en el archivo de cabecera stdlib.h).
  • Y una serie de si declaraciones para iluminar el LED correcto basado en el azar de valor se genera.

Este código puede copiarse directamente desde el cuadro a continuación y pegar en su IDE. Entonces puedes subirlo directamente a su placa de allí. Si no estás seguro cómo subir el sketch, revisa el tutorial de "Introducción a MPIDE" vinculado por encima.

Nota: Disculpen el formato muy consumo de espacio para el código. Se utiliza para mostrar en un cuadro poco agradable que usted podría recorrer, pero Instructables hecho algunos cambios en su interfaz de edición y no soy capaz de hacerlo ya.

#include / / para utilizar la función rand()

Inicializa el pin utilizado para la entrada de botón

const int btnPin = 26;

Inicialización de pines para el control de cada LED

const int led_left_top = 33; LED en la esquina superior izquierda de la die

const int led_left_center = 32; LED en el lado izquierdo de la matriz en la fila de centro

const int led_left_bottom = 31; LED en la esquina inferior izquierda de la matriz

const int led_right_top = 30; LED en la esquina superior derecha de la matriz

const int led_right_center = 29; LED en el lado derecho de la matriz en la fila de centro

const int led_right_bottom = 28; LED en la esquina inferior derecha de la matriz

const int led_center = 27; LED en el centro de la matriz

Crear una función para simular la acción de un dado del balanceo

Función hará LEDs parpadean a través de números 1-6

roll() vacío

{

int i = 0; Cuenta la variable de bucle for

para (i = 0; i < 5; i ++) / / ciclo 5 veces

{

Pantalla 1

digitalWrite (led_left_top, bajo);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, bajo);

digitalWrite (led_center, HIGH);

Delay(50); esperar 50ms antes de mostrar el siguiente valor

Pantalla 2

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, bajo);

Delay(50);

Pantalla 3

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, HIGH);

Delay(50);

Pantalla 4

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, HIGH);

digitalWrite (led_right_top, HIGH);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, bajo);

Delay(50);

Pantalla de 5

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, HIGH);

digitalWrite (led_right_top, HIGH);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, HIGH);

Delay(50);

Pantalla 6

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, HIGH);

digitalWrite (led_left_bottom, HIGH);

digitalWrite (led_right_top, HIGH);

digitalWrite (led_right_center, HIGH);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, bajo);

Delay(50);

}

} / / Fin de la función de rodillo

Initiliazing variable para representar el valor de morir

int die_value = 0;

voidsetup () / / configurar los pines del microcontrolador

{

Botón SET pin para entrada

pinMode (btnPin, entrada);

Sets pasadores LED a la salida

pinMode (led_left_top, salida);

pinMode (led_left_center, salida);

pinMode (led_left_bottom, salida);

pinMode (led_right_top, salida);

pinMode (led_right_center, salida);

pinMode (led_right_bottom, salida);

pinMode (led_center, salida);

}

voidloop )

{

Compruebe la presión del botón

Si (digitalRead(btnPin) == HIGH) / / si se pulsa el botón

{

Roll(); Simular el rodillo de morir

die_value = (rand() % 6) + 1; Al azar seleccione valor de morir, este código generará un número entre 1 y 6

Si (die_value == 1) / / sólo centro LED está iluminado

{

digitalWrite (led_left_top, bajo);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, bajo);

digitalWrite (led_center, HIGH);

}

elseif (die_value == 2) / / sólo la parte superior izquierda e inferior derecha LEDs se encienden

{

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, bajo);

}

elseif (die_value == 3) / / la parte superior izquierda, inferior derecha, y centro de LEDs se encienden

{

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, HIGH);

}

elseif (die_value == 4) / / se encienden los cuatro LEDs en las esquinas

{

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, HIGH);

digitalWrite (led_right_top, HIGH);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, bajo);

}

elseif (die_value == 5) / / se encienden los LEDs de la 4 esquina y el centro de LED

{

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, HIGH);

digitalWrite (led_right_top, HIGH);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, HIGH);

}

Else / / die_value == LED 6 y todos están encendidos excepto el centro uno

{

digitalWrite (led_left_top, HIGH);

digitalWrite (led_left_center, HIGH);

digitalWrite (led_left_bottom, HIGH);

digitalWrite (led_right_top, HIGH);

digitalWrite (led_right_center, HIGH);

digitalWrite (led_right_bottom, HIGH);

digitalWrite (led_center, bajo);

}

Delay(4000); muestra dado valor para 4000ms, o 4 segundos

}

Else / / LEDs permanecen apagadas si no ha pulsado el botón

{

digitalWrite (led_left_top, bajo);

digitalWrite (led_left_center, bajo);

digitalWrite (led_left_bottom, bajo);

digitalWrite (led_right_top, bajo);

digitalWrite (led_right_center, bajo);

digitalWrite (led_right_bottom, bajo);

digitalWrite (led_center, bajo);

}

}

Artículos Relacionados

Cómo hacer un 3D impreso microcontrolador caso

Cómo hacer un 3D impreso microcontrolador caso

El recurso a las cosas de impresión 3D es bastante evidente. Puede crear a todo tipo de cosas en varios colores e incorporar tu propio estilo fantasía en ellos. Si usted es una persona que le gusta la idea de poder personalizar su electrónica o tiene
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
Cómo jugar mentiroso dados

Cómo jugar mentiroso dados

para el pirata de los fans de Caribe, probablemente reconocerás este juego. Me enseñaron este juego aunque me dejé por la noche en mi reciente viaje de campo a través de clases. Los dados del mentiroso, dados del mentiroso o Perudo o Dudo o llame mi
Diversión con Arduino, nada más necesario, parte 2

Diversión con Arduino, nada más necesario, parte 2

Era curioso ver cómo funcionaría un Arduino para matemáticas y gráficos basado en texto simple así que decidí experimentar un poco. Estos programas son los más adecuados para un equipo pero es interesante ver que un Arduino puede ejecutarlas. Que te
Juguete gato de Sensor de movimiento (diversión sin fin... literalmente)

Juguete gato de Sensor de movimiento (diversión sin fin... literalmente)

el Motion Sensor Cat juguete utiliza piezas de un viejo reproductor VHS y otras probabilidades y extremos para hacer un juguete de gato que nunca se detiene siempre y cuando tu gato quiere jugar! También comienza a mover tan pronto como su gato en ce
3D impreso dice cabeza de Turco

3D impreso dice cabeza de Turco

estoy trabajando en una aplicación que genera modelos 3D de nudos de cabeza de turco que luego pueden ser 3D impreso. Pensé que sería cool para generar dados cabeza de turco, así que me fui de lo que sucede!Paso 1: diseño Es una herramienta escribió
3D impreso funcionamiento magnético de mármol

3D impreso funcionamiento magnético de mármol

Convertir la puerta del refrigerador en un patio cinético!!!!!! por 3D impresión magnética mármol ejecutar archivos STL en los siguientes pasos.Y una vez que has probado todas las posibles permutaciones y combinaciones con las pistas de mármol, añadi
3D impreso estante de bomba de jeringa

3D impreso estante de bomba de jeringa

Este instructivo sirve para documentar el proceso de construcción de un 3D impreso jeringa de la bomba. El bastidor está compuesto por 5 bombas de jeringa, con esta configuración puede tener 2 sistemas de flujo continuo y una bomba restante (si tiene
Aprender sobre microcontroladores

Aprender sobre microcontroladores

Este Instructable fue diseñado para responder a la pregunta: ¿Cómo empiezo en microcontroladores? Ahora, en clara, un inglés simple, usted puede aprender lo que un microcontrolador es y cómo usar uno. Usted aprenderá cómo hacer todo lo que necesitas
Micro 105 FPV Quadcopter - 3D impreso

Micro 105 FPV Quadcopter - 3D impreso

He estado volando 250 quadcopters FPV (video de primera persona) tamaño de poco más de un año. Para quienes no están familiarizados con el FPV, puede equipa una cámara al frente de su quadcopter y transmite el video a un par de gafas o un monitor. Us
Detonador termal de Star Wars 3d impreso

Detonador termal de Star Wars 3d impreso

El poderoso Jabba le pregunta porqué él debe pagar 50 mil.Porque él sostiene un detonador térmico.Con acercarse rápido del día Star Wars me sentía sólo era apropiado que mi siguiente proyecto fue una de Star Wars uno. Ya habiendo hecho un sable de lu
3D impreso andamios para el cultivo celular

3D impreso andamios para el cultivo celular

> Células en impresiones 3D la cultura < > Como hacer impresiones 3D para celular y cultivo de tejidos < > Células en 3D impresos andamios la cultura <Arte x tecnología x biologíaSoy un artista que utiliza el cuerpo, la biología y la tec
DriveMyPhone - Smartphone controlado vehículo impreso 3D

DriveMyPhone - Smartphone controlado vehículo impreso 3D

DriveMyPhone es un proyecto que tengo ubicación en mi computadora en formato digital el año pasado 6. El concepto llegó cuando estaba trabajando en mis otros proyectos robóticas llamadas MobileEarthRover 1:00 MobileEarthRover dos.Por fin he tenido ti
Buscador de impresos médicos vena 3D

Buscador de impresos médicos vena 3D

Hola. Mi nombre es Alex, soy ingeniero automotriz militar y mi novia es una enfermera registrada. Su tarea es tomar muestras de sangre para más análisis de pacientes de todas las edades (especialmente jóvenes). Su primer día en su nuevo trabajo no er