Nota
¡Hola, bienvenido a la Comunidad de Aficionados a Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
Soporte de expertos: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.
Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones festivas y sorteos: Participa en sorteos y promociones de fiestas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy!
6.2 Dados Digitales¶
Aquí utilizamos un botón, un display de 7 segmentos y el 74hc595 para hacer un dado electrónico. Cada vez que se presiona el botón, se genera un número aleatorio del 1 al 6 y se muestra en el Display de 7 segmentos.
Componentes Necesarios
Para este proyecto, necesitamos los siguientes componentes.
Comprar un kit completo es definitivamente conveniente, aquí está el enlace:
Nombre |
ELEMENTOS DE ESTE KIT |
ENLACE |
|---|---|---|
3 in 1 Starter Kit |
380+ |
También puedes comprarlos por separado en los siguientes enlaces.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
Esquemático
Cableado
Código
Nota
Abre el archivo
6.2.electronic_dice.inoen la ruta3in1-kit\basic_project\6.2.electronic_dice.O copia este código en Arduino IDE.
O sube el código a través del Arduino Web Editor.
Cuando el código se haya cargado con éxito, el Display de 7 segmentos mostrará del 0-7 en un desplazamiento rápido, y cuando presiones el botón, mostrará un número aleatorio y dejará de desplazarse. El desplazamiento del display comienza nuevamente cuando presionas el botón otra vez.
¿Cómo funciona?
Este proyecto se basa en 5.10 ShiftOut(Display de Segmentos) con un botón para iniciar/pausar el desplazamiento en el Display de 7 segmentos.
Inicializa cada pin y lee el valor del botón.
void setup () { ... attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING); }
Aquí se utiliza la interrupción para leer el estado del botón. El valor predeterminado de
buttonPines bajo, que cambia de bajo a alto cuando se presiona el botón.rollDicerepresenta la función que se llamará cuando se active la interrupción, se utiliza para alternar el valor de la variablestate.FALLINGsignifica que la interrupción se activa cuando elbuttonPinpasa de bajo a alto.
Cuando la variable
statees 0, se llama a la funciónshowNumber()para hacer que el Display de 7 segmentos muestre aleatoriamente un número entre 1 y 7.void loop() { if (state == 0) { showNumber((int)random(1, 7)); delay(50); } }
Acerca de la función
rollDice().void rollDice() { state = !state; }
Cuando se llama a esta función, alterna el valor de state, como 1 la última vez y 0 esta vez.
Acerca de la función
showNumber().void showNumber(int num) { digitalWrite(STcp, LOW); //ground ST_CP and hold low for as long as you are transmitting shiftOut(DS, SHcp, MSBFIRST, datArray[num]); //return the latch pin high to signal chip that it //no longer needs to listen for information digitalWrite(STcp, HIGH); //pull the ST_CPST_CP to save the data }
Este es el código dentro de
loop()en el proyecto 5.10 ShiftOut(Display de Segmentos) en la funciónshowNumber().