20.- Operating sequence (needs to be updated)

Degut a la quantitat de dispositius que he decidit gestionar necesitaré 2 plaques. He triat un arduino Nano i un Micro.

Arduino NANO:

Bàsicament per controlar el temps ja que aquest ha de ser gestionat apart del codi principal perquè s'ha de mantenir un descompte exacte d'un segon i si hi ha ingerències d'alguna part del codi entre mig del descompte d'un segon, aquest, no seria un descompte precís.

Básicamente para controlar el tiempo ya que este debe ser gestionado aparte del código principal para que se mantendrá un descuento exacto de un segundo y si hay injerencias de alguna parte del código entre medio del descuento de un segundo, este , no sería un descuento preciso.

Basically to control the time function that has to be controlled apart of the main code (controlled by the Micro) because, in order to keep exactly 1 second in the discounting time, this discount cannot be disturbed by any other part of code. So Nano has to be focused only to manage the time.

Arduino MICRO:


És el que tindrà el codi principal, és a dir el bucle que anirà llegint el taulell, enviarà les dades al host i escriura els moviments a la pantalla. Aquest microcontrolador és necessari perquè soporta l'emulació d'un teclat degut al seu connector USB 2.x, necessaria per enviar les dades a l'ordinador.

Es el que tendrá el código principal, es decir el bucle que irá leyendo el mostrador, enviará los datos al host y escribirá los movimientos en la pantalla. Este microcontrolador es necesario para que soporta la emulación de un teclado debido a su conector USB 2.x, necesaria para enviar los datos al ordenador.

It will support the main code and tihs type of microcontroller is needed because admits the keyboard emulation (due to use the USB 2.x connector) necessary to send the keyboard orders to the computer.





Seqüència d'operació / Secuencia de operación / Operating sequence

1.- Endollo USB al MICRO (dono 5V i GND al NANO):

    - NANO: no fa res

    - MICRO: Pantalla benvinguda (tbé ho ha de fer al fer reset però no al new game)

2.-Selecciona modalitat de joc (

    - Si CLOCK=ON → activa el codi d’escaneig després de clicar els botons dels jugadors

    - Si CLOCK=OFF → activa el codi de joc sense rellotge

      Cas CLOCK =1 → codi d’escaneig del taulell després de clicar el botó del rellotge dels jugadors, quan clico el botó de les blanques (corre el temps per les negres) llavors escaneija el taulell i el LOOP envia els canvis al HOST, mentre no es cliqui el botó de les negres no esccaneija res, és a dir, no comproba si hi ha hagut canvis ja que se sap que el jugador negre ha mogut ja que no ha clicat el seu botó.

    → dono senyal MICD2

    → dono senyal NAND8

Pantalla inici (per temps):

    a) tft print: «Logo JacMat» . Espera uns segons.
    b) tft print «Selecciona increment de temps: »

Es clica el botó seg/min → dona senyal al NANO Pin NAN-D3 i

    → dona senyal al MICRO activant el Pin MIC-D0 (RX1).

Quantes vegades es cliqui Seg/min s’anirà augmentant els segons a la tft i els segons al display de les Negres (al de les blanques no).

    c) Es clica Ok → tft print «Selecciona els minuts: 00:00»

        «clica botó Ok per començar»

    → display blanques mostra 00:00

    → display negres mostra 00:00

        Es clica el botó seg/min → dona senyal al Pin NAN-D3 (High) augmentant els minuts als 2 displays digitals

    → dona senyal al MIC-D0 (RX1?) augmentant els minuts a la tft.

    d) Es clica Ok → print tft «Comprovant posició d’inici correcta»

        (Aquí es fa el primer escaneig del taulell, ha de donar el byte: 195.195.195.195.195.195.195.195 cosa que voldrà dir que les peces estan ben posicionades per començar a jugar. )

Escaneja el taulell per comprovar que estigui així:

                                        1 1 1 1 1 1 1 1
                                        1 1 1 1 1 1 1 1
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        1 1 1 1 1 1 1 1
                                        1 1 1 1 1 1 1 1

Si comprovació Ok→ escriu a la pantalla «inici partida partida» → envia senyal a MIC-D3,NAN-D12 i comença el Loop al MICRO i al NANO

    → MICRO comença a escanejar taulell per detectar moviments i enviarlos al host amb el Keyboard.h

    → NANO es preocupa només del temps, LED’s, buzzer i pausa amb els displays.

Si comprovació no Ok→ escriu a la tft «peces mal col·locades» → segueix escanejant fins que es ok, quan troba la posició correcta escriu a la tft «pot començar la partida» → envia senyal a MIC-D3,NAN-D12 i comença el Loop al MICRO i al NANO

MICRO- envia senyal al NANO de que ja es pot començar → MIC-D3=High

NANO- rep senyal del MICRO NAN-D12=high conforme es pot començar i comença a descomptar el temps de les blaques.

s’ilumina el LED blanques → NAN-A2=High

Comença el codi del descompte de temps només pel NANO

        (Display blanques 0x70)

        (Display negres 0x74)

El NANO a partir d’aquí es limitarà a controlar els temps dels jugadors , els LED’s i el Buzzer.

El MICRO només s’encarregarà d’enviar senyal serie (USB) i de posar a la pantalla les jugades.

Comencen els loops:

1.- Enchufo USB al MICRO (doy 5V y GND al NANO):

    - NANO: no hace nada

    - MICRO: Pantalla bienvenida (también debe hacerlo al hacer reset pero no al new game)

2.-Seleccionar modalidad de juego (

    - Si CLOCK = ON → activa el código de escaneo después de pulsar los botones de los jugadores

    - Si CLOCK = OFF → activa el código de juego sin reloj

      Caso CLOCK = 1 → código de escaneo del tablero después de pulsar el botón del reloj de los jugadores, cuando hago click en el botón de las blancas (corre el tiempo para las negras) entonces escanea el tablero y el LOOP envía los cambios al HOST, mientras no se pulse el botón de las negras sigue escaneando pero no guarda ninguna posición a menos que haya habido algun cambio.

    → doy señal MICD2

    → doy señal NAND8

Pantalla inicio (por tiempo):

    a) tft print: «Logo JacMat». Espera unos segundos.
    b) tft print «Seleccionar incremento de tiempo:»

Se pulsa el botón seg / min → da señal al NANO Pin NAN-D3 y

    → da señal al MICRO activando el Pin MIC-D0 (RX1).

¿Cuántas veces se clique Seg / min irá aumentando segundos a la tft y en el display de las Negras (al de las blancas no).

    c) Se pulsa Ok → tft print «Seleccionar los minutos: 00:00»

        «Pulsa botón Ok para empezar»

    → display blancas muestra 00:00

    → display negros muestra 00:00

        Se pulsa el botón seg / min → da señal al Pin NAN-D3 (High) aumentando los minutos de los 2 displays digitales

    → da señal al MIC-D0 (RX1?) Aumentando los minutos en la tft.

    d) Se pulsa Ok → print tft «Comprobando posición de inicio correcta»

        (Aquí se hace el primer escaneo del tablero, debe dar el byte: 195.195.195.195.195.195.195.195 lo que significa que las piezas están bien posicionadas para empezar a jugar.)

Escanea el tablero para comprobar que esté así:

                                        1 1 1 1 1 1 1 1
                                        1 1 1 1 1 1 1 1
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        1 1 1 1 1 1 1 1
                                        1 1 1 1 1 1 1 1

Si comprobación Ok → escribe en la pantalla «inicio partida» → envía señal a MIC-D3, NAN-D12 y comienza el Loop al MICRO y al NANO

    → MICRO comienza a escanear para detectar movimientos y enviarlos al host con el Keyboard.h

    → NANO se preocupa sólo del tiempo, LEDs, buzzer y pausa con los displays.

Si comprobación no Ok → escribe en la tft «piezas mal colocadas» → sigue escaneando hasta que se ok, cuando encuentra la posición correcta escribe en la tft «puede empezar la partida» → envía señal a MIC-D3, NAN-D12 y comienza el Loop al MICRO y al NANO

Micro- envía señal al NANO de que ya se puede empezar → MIC-D3 = High

Nano- recibe señal del MICRO NAN-D12 = high conforme se puede empezar y empieza a descontar el tiempo de las blancas.

ilumina el LED blancas → NAN-A2 = High

Comienza el código del descuento de tiempo sólo por NANO

        (Display blancas 0x70)

        (Display negros 0x74)

El NANO a partir de aquí se limitará a controlar los tiempos de los jugadores, los LEDs y el Buzzer.

El MICRO sólo se encargará de enviar señal serie (USB) y de poner en la pantalla las jugadas.

Empiezan los loops:

1.- USB plug to MICRO (gift 5V and GND to NANO):

    - NANO: He doesn't do anything

    - MICRO: Welcome screen (you must do this when resetting but not in the new game)

2.-Select game mode

    - If CLOCK = ON → activates the scan code after clicking the players buttons

    - If CLOCK = OFF → activates the game code without clock

       Case CLOCK = 1 → board scan code after clicking the players clock button, when I click the white button (time runs for black) then it scans the board and the LOOP sends the changes to the HOST, while do not click the black button does not scan anything, that is, do not check if there have been any changes as it is known that the black player has moved as he has not clicked his button.

    → data signal MICD2

    → data signal NAND8

Home screen (by time):

    a) tft print: "JacMat logo". Wait a few seconds.
    b) tft print «Select time increment:»

Click the sec / min button → signal to the NANO Pin NAN-D3 i

    → signals the MICRO by activating the MIC-D0 Pin (RX1).

How many times you click Seg / min will increase the seconds on the tft and the seconds on the Black display (not the white ones).

    c) Click Ok → tft print «Select minutes: 00:00»

        «Click Ok button to start»

    → white display shows 00:00

    → black display shows 00:00

        Click the sec / min button → signal to Pin NAN-D3 (High) increasing the minutes on the 2 digital displays

    → gives signal to MIC-D0 (RX1?) Increasing the minutes to tft.

    d) Click Ok → print tft "Checking correct starting position"

        (Here is the first scan of the board, you must give the byte: 195.195.195.195.195.195.195.195 which will mean that the pieces are well positioned to start playing.)

Scan the counter to see that it looks like this:

                                        1 1 1 1 1 1 1 1
                                        1 1 1 1 1 1 1 1
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        0 0 0 0 0 0 0 0
                                        1 1 1 1 1 1 1 1
                                        1 1 1 1 1 1 1 1

If check Ok → type on the screen «game start» → send signal to MIC-D3, NAN-D12 and start the Loop on the MICRO and NANO

    → MICRO starts scanning counter to detect movements and send them to the host with the Keyboard.h

    → NANO only cares about time, LEDs, buzzer and pause with displays.

If check not Ok → type in the tft «incorrectly placed parts» → keep scanning until it is ok or just click ok to scan again, when you find the correct position type in the tft «you can start the game» → send signal to MIC-D3, NAN-D12 and start Loop to MICRO and NANO

MICRO- sends signal to NANO that it can already start → MIC-D3 = High

NANO- receives signal from MICRO NAN-D12 = high as you can start and starts counting the time of the white player.

the white LED lights up → NAN-A2 = High

Start the time discount code only for the NANO

        (White display 0x70)

        (Black display 0x74)

The NANO will then be limited to controlling player times, LEDs and the Buzzer.

The MICRO will only send a serial signal (USB) and display the plays.

Loops begin:











Comentaris

Entrades populars d'aquest blog

45.- Weighting the pieces

3.- Sensors II

21.- Electronic scheme (updated 26/08/2020)