.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Únete para profundizar en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros aficionados.
**¿Por qué unirse?**
- **Soporte Experto**: Resuelve problemas post-venta y desafíos técnicos con ayuda de nuestra comunidad y equipo.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Previsualizaciones Exclusivas**: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
3.1.13 JUEGO– 10 Segundos
==============================
Introducción
-------------------
En esta lección, haremos un dispositivo de juego para desafiar tu concentración.
Ata el interruptor de inclinación a un palo para hacer una varita mágica. Agita
la varita y el display de 4 dígitos comenzará a contar. Al agitarla nuevamente,
el conteo se detendrá. Si logras mantener el conteo en **10.00**, ¡ganas! Puedes
jugar con tus amigos para ver quién es el maestro del tiempo.
Componentes
----------------
.. image:: img/list_GAME_10_Second.png
:align: center
Diagrama Esquemático
-------------------------
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO17 Pin 11 0 17
GPIO27 Pin 13 2 27
GPIO22 Pin 15 3 22
SPIMOSI Pin 19 12 10
GPIO18 Pin 12 1 18
GPIO23 Pin 16 4 23
GPIO24 Pin 18 5 24
GPIO26 Pin 37 25 26
============ ======== ======== ===
.. image:: img/Schematic_three_one13.png
:align: center
Procedimientos Experimentales
-------------------------------
**Paso 1**: Ensambla el circuito.
.. image:: img/image277.png
:alt: 10 second_bb
:width: 800
**Paso 2**: Accede a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/3.1.13/
**Paso 3**: Compila el código.
.. raw:: html
.. code-block::
gcc 3.1.13_GAME_10Second.c -lwiringPi
**Paso 4**: Ejecuta el archivo.
.. raw:: html
.. code-block::
sudo ./a.out
Agita la varita para que el display de 4 dígitos comience a contar;
agítala de nuevo para detener el conteo. Si logras que el contador
marque **10.00**, ganas. Agítala una vez más para iniciar otra ronda.
.. note::
Si no funciona después de ejecutar el código o aparece un mensaje de error como: \"wiringPi.h: No such file or directory\", consulta :ref:`faq_c_nowork`.
**Explicación del Código**
.. code-block:: c
void stateChange(){
if (gameState == 0){
counter = 0;
delay(1000);
ualarm(10000,10000);
}else{
alarm(0);
delay(1000);
}
gameState = (gameState + 1)%2;
}
El juego se divide en dos modos:
gameState=0 es el modo \"inicio\", donde se mide el tiempo y se muestra
en el display de segmentos, y se ingresa al modo \"mostrar\" al agitar
el interruptor de inclinación.
gameState=1 es el modo \"mostrar\", que detiene la medición y muestra el
tiempo en el display. Al agitar nuevamente el interruptor de inclinación,
el cronómetro se reinicia y el juego comienza de nuevo.
.. code-block:: c
void loop(){
int currentState =0;
int lastState=0;
while(1){
display();
currentState=digitalRead(sensorPin);
if((currentState==0)&&(lastState==1)){
stateChange();
}
lastState=currentState;
}
}
Loop() es la función principal. Primero, el tiempo se muestra en el display de
4 dígitos y se lee el valor del interruptor de inclinación. Si el estado del
interruptor cambia, se llama a stateChange().