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