Relógio de Xadrez

De Garoa Hacker Clube
Ir para: navegação, pesquisa

O quê?

Um projeto com a finalidade de construir um relógio para Xadrez.

Quando?

Os encontros ocorrem normalmente de quarta após o evento principal do Turing Clube.

Histórico

11/12/2013

  • Presentes:
    • Alexandre Souza
    • Samuel Grigolato
  • Resumo das atividades:
    • Desembalamos o microprocessador RL78 da Renesas, deixado no local pelo André Oliveira.
    • Constatamos que não havia tool chain para nos auxiliar no Linux (de forma precipitada, pois o André passou o seguinte link na lista no dia 12/12), e partimos para o Arduino UNO.
    • Definimos a especificação técnica do projeto.
    • Colocamos um botão para acender/apagar um LED, utilizando uma porta INPUT do Arduino para receber a leitura do botão e uma OUTPUT para acender/apagar o LED. Também escrevemos um Hello, World! em um display LCD 16x2.
    • Jogo paralelo de Xadrez, orquestrado pelo celular (2 minutos por jogada, para dar tempo de fazer outra coisa interessante, como subir um teste no Arduino UNO). Obviamente essa estratégia gerou jogadas engraçadas e peças entregues a preço de banana (pra não falar de graça).
    • Definimos que vamos utilizar o GitHub como repósitório git para os códigos útilizados.

Fotos:

Especificação Técnica

Nota: essa seção não tem o objetivo de ser fixada em pedra, ao contrário, a tendência é que mude semanalmente caso ideias mais interessantes sejam escolhidas pelos participantes. Propostas que foram enviadas mas não tiveram aceitação da maioria (ainda) vão parar na seção Ideias.

O projeto é composto por dois displays LCD 16x2 e dois botões de fliperama. Esses componentes estarão dispostos em um case montado na impressora 3D, assim:

   +--[B1]------------[B2]--+
   |                        |
   |  LP1             LP2   |
   |[      ]        [      ]|
   |                        |
   +------------------------+

Obs: B1/B2 são os botões (no topo da caixa), e LP1/LP2 são os displays. Cada display apresentará, na linha superior, o tempo restante do jogador e, na linha inferior, uma barra de progresso proporcional ao tempo configurado inicialmente. Por exemplo:

   +---------------+
   |05:00          |
   |###############|
   +---------------+
   +---------------+
   |01:15          |
   |####           |
   +---------------+

Na parte funcional, ele possui três situações distintas:

  • Parado, ou em configuração
  • Rodando
  • Estourado (you lose!)

Na situação Parado, o botão B1 permite rotacionar o valor inicial do relógio, dentre os seguintes valores: 0:30, 1:00, 2:00, 5:00, 10:00 e 30:00. O botão B2 passa para a situação Rodando.

Na situação Rodando, o tempo do jogador ativo descresce até que ele aperte seu respectivo botão. Caso os dois botões sejam apertados simultaneamente por mais de 2 segundos, o relógio é "resetado" e volta para a situação Parado. Caso o tempo de algum jogador termine, o relógio passa para a situação Estourado.

Na situação Estourado, o display do jogador que perdeu muda para (Alexandre, aprove aí, acabei de acrescentar isso, rsrs):

   +---------------+
   |# # # # # # # #|
   | # # # # # # # |
   +---------------+

E o botão B1 reinicia com a mesma configuração, enquanto o B2 reseta o relógio para a situação Parado.

O microcontrolador RL78/G13 será utilizado para interligar tudo.

Ideias

  • Usar displays de 7 dígitos
  • Usar LEDs para representar o jogador atual
  • Usar barra de LEDs para representar a barra de progresso
  • Usar buzzers para ficar apitando quando o tempo estiver próximo do fim
  • Usar o display HS-40101BS de 122x90x15mm
  • Usar o display 3208
  • Usar motor de passo
  • Usar os displays em disposição vertical, permitindo utilizar componentes maiores:
   +--[B1]------------[B2]--+
   |                        |
   |          LP1           |
   |    [             ]     |
   |          LP2           |
   |    [             ]     |
   |                        |
   +------------------------+
  • Usar um motor para controlar uma peça em uma "trilha", que anda conforme o tempo vai acabando:
   |______(p)_| ... |____(p)___| ... |_(p)______|
  • Implementar controles mecânicos para os botões, de forma que apenas um fique "para cima" em um determinado momento, como ocorre com os relógios de xadrez analógicos convencionais.
  • Ideias específicas para o display 3208:
    • Usar uma estrutura flexível para apresentação dos minutos, de forma que com 4 caracteres seja possível representar dezenas de minutos sem perder a granularidade da unidade de segundos quando o tempo estiver terminando. Em outras palavras, caso o tempo restante for maior que 10 minutos, ele é formatado assim: "MM:S", caso contrário: "M:SS".
    • Usar representação absoluta do valor (3 dígitos representando os minutos ou 4 dígitos representando os segundos) sem formatação com o caractere ":". Nesse caso, 3 minutos seriam representados como "180" ou simplesmente "3".
    • Usar representação absoluta de minutos auxiliada com representação dos segundos restantes por:
      • Barras horizontais.
      • Barra "quadrada" em volta do número, simulando o percurso da circunferência dos ponteiros de um relógio analógico.
    • Não utilizar nenhum dígito, apenas barras em formato de "ábaco". Para o formato vertical, cada barra teria 5 pontos por coluna, e para o formato horizontal, 10 pontos por linha.
    • Usar vídeo inverso para indicar o jogador atual. Em outras palavras, a imagem seria "negativada" na metade do visor referente ao jogador atual. Exemplo (letra minúscula "m" escrita em vídeo inverso na parte esquerda do display):
   +--[B1]------------[B2]--+
   |###     ####   #####    |
   |### # # ####   # # #    |
   +------------------------+

Quem?