Boa tarde a todos,

O meu nome é Ricardo e informo desde já que não tenho qualquer experiência com codificação ou placas arduino ou outras.... sou um iniciante a zeros...

Como sou um pouco curioso, e o clube de basquete onde joga o meu filho mais novo precisa de um placar electronico, pensei em fazer um ... talvez com um pouco de loucura ...

Então o que pretendo é um placard electronico que conte a pontuação das equipas e controle o tempo de jogo.

Medidas do placar – 42 cm X 29,5 cm ( folha A3 ) alimentado por transformador ou baterias

Medidas dos dígitos ( pontos e tempo ) – 10 cm X 5 cm em led’s ou fitas de led

 

Contador de pontos ( independente para cada equipa )

O contador de pontos será constituído por 3 digitos para cada equipa, a começar no 000 e a terminar no 999.

O contador deve ser accionado por um do botão acrescentando sempre e só um valor de cada vez.

Deverá também existir um botão para retirar valores ( um e cada vez ) em caso de engano.

Contador de tempo

                O contador de tempo ( cronómetro ) deverá ter 4 digitos e deverá funcionar em contagem decrescente.

                Deverá também, ter as seguintes opções ( recorrendo a botão ) :

                1 – Fazer reset colocando a zeros

                2 – Colocação pelo utilizador do tempo que for decidido ( o tempo não é fixo )

                3 – Quando a contagem decrescente tiver a decorrer, poder efectuar paragem de tempo e posteriormente continuar a mesma sequência.

                4 – Quando chegar a um ( 01:00 ) minuto do tempo final, o cronometro deverá contar as decimas de segundo até chegar a zero ( 00:00 )

                5 – Quando atingir os zero ( 00:00 ) acciona um buzz de 3 segundos

Espero que tenha colocado a informação toda necessário e que me possam ajudar.

Mais uma vez, não "pesco" nada do assunto ... ;)

Obrigado a todos

Ricardo Alexandre

Exibições: 17203

Responder esta

Respostas a este tópico

Teoricamente, a interface RS-485 suporta 1000 metros ! 

Acho que dá ! KKKK

Biblioteca de comunicação serial RS-485:

Depois de testes em algumas bibliotecas e tutoriais, encontrei essa biblioteca que funcionou corretamente ! 

Do jeito que eu queria. Excelente !  Ela envia um buffer de 20 caracteres.

Podemos usar esse buffer, para enviar os comandos para o Placar. 

https://github.com/Protoneer/RS485-Arduino-Library

char Message[maxMsgLen+1] ;

strcpy(Message,"Msg12345678901234567");

if(RS485_SendMessage(Message,fWrite,ENABLE_PIN))

Analisando a Biblioteca BasketScoreboard do Miguel Pynto :

Esta na hora da gente decidir como serão enviados os dados da Console Arduino para o Placar Arduino. 

Na console Arduino, deverá ter um display LCD 4x20, um teclado matricial , uma interface RS-485 e um relógio RTC para controlar os displays Timer e Shoot Clock(futuro). 

Acho que usando um RTC, a console ficará mais simples.

Se for possível depois, a gente poderá descartar o RTC e usar os timers internos do Arduino. (não vejo como boa opção).

Biblioteca BasketScoreboard:

https://github.com/MiguelPynto/BasketScoreboard

Comandos já definidos para controle do ScoreBoard : 

https://github.com/MiguelPynto/BasketScoreboard/blob/master/commands.h

SET_POINTS_HOME,
SET_POINTS_VISIT,
SET_FOULS_HOME,
SET_FOULS_VISIT,
SET_PERIOD,
SET_POSSESSION_HOME,
SET_POSSESSION_VISIT,
CLEAR_POSSESSION,
TOGGLE_TIMER,
RESET_TIMER,
BUZZ

Variáveis definidas na Console Arduino :

https://github.com/MiguelPynto/BasketScoreboard/blob/master/control...

volatile int pointsHome, pointsVisit;
volatile int foulsHome, foulsVisit;
volatile bool possessionHome, possessionVisit;
volatile int period;

Precisamos definir a variável do Timer . 

Nos meus testes com o RTC DS3231 , usei essas duas bibliotecas : 

https://github.com/JChristensen/DS3232RTC

https://github.com/jarzebski/Arduino-DS3231

Continuando a reflexão de como os dados serão enviados, penso em duas opções. 

1) envio de comandos . Um comando para cada display como :

    SET_TIMER,  14:27 

    SET_POINTS_HOME, 005
    SET_POINTS_VISIT, 002

    etc

2) Envio de uma String de caracteres com todos as informações do Placar.

    ST1427SPH005SPV002  etc

Depois essa string seria descodificada e cada variável seria recebida. 

Pensei nessa opção, pois assim todo o Placar seria re-atualizado sempre que recebesse qualquer dado. 

Qual seria a melhor opção ? O que acham ?

     

Peço desculpa, tenho andado com pouco tempo devido a problemas pessoais.

A opção 1 fará mais sentido neste nível de abstracção. No scoreboard.ino está a função receiveEvent() para este caso, falta apenas definir a leitura de acordo com o protocolo que será usado.

Cada (payload da) mensagem tem 2 bytes, 1 para o comando e outro para o argumento (se existir).

Pensei que o estado do cronometro seria mantido no placar, e a consola trataria apenas dos comandos (pausa, reset, avançar, etc). Não é este o caso?

Boa tarde, Miguel.

Considerando que somos voluntários, que gentilmente estamos ajudando no projeto do placar, não tem necessidade de pedir desculpas. 

1) Refletindo depois, a opção 1 é a mais sensata, mesmo. Concordo com você. 

  => envio de comandos . Um comando para cada display. 

2) "Cada (payload da) mensagem tem 2 bytes, 1 para o comando e outro para o argumento (se existir)."

Estou achando pouco o numero de bytes para cada comando. Dá para aumentar ? 

por exemplo :

   - set_Timer 14:00 

   - set_Points_Home 115 

3) Acho mais adequado todo o controle do placar ficar na Console. Inclusive do Timer.

Vai facilitar o nosso trabalho. O Placar somente servirá para display. 

Imagine se o timer fosse no Placar. No caso de um reajuste de tempo, o placar teria que enviar os dados para a console e depois a console enviaria os dados para o placar. 

Na outra opção , o placar  somente receberia informação. A princípio, nunca terá que enviar dados para a console. Concorda ? 

Uma questão: o timer também deve ser mostrado na Console?

Boas Miguel,

Sim o timer tambem é mostrado na Consola, a ideia é ter o reflexo do que está no placar na consola, imagina o cado em que o placard está por cima de quem controla a consola, setá complicado estar a ver o que se passa no placard...

Pensei que não fosse.

Então sim, a lógica do timer fica na console e o placar apenas recebe e mostra.

1 byte (0 a 255 em decimal)

Usando o exemplo SET_POINTS_HOME 199

O comando tem o valor decimal 0 (Command.SET_POINTS_HOME em commands.h) que é possivel representar com 1 byte, e o 199 já em decimal e menor que 255 também é possível representar com 1 byte.

Com o SET_TIMER 9999 já é preciso 2 bytes para o argumento.

Desenvolvimento do projeto da CONSOLE :

Em outros tópicos, já tinha feito alguns testes com a Console, com um teclado e um display LCD 20x4.

O desafio agora  é maior ! Inseri um módulo DS3231 e uma interface RS-485 para a comunicação com o outro Arduino (Placar). 

http://labdegaragem.com/forum/topics/placar-eletr-nico-port-til-bas...

http://labdegaragem.com/forum/topics/placar-eletr-nico-port-til-bas...

Acho que essa é a configuração inicial  para testes. Mãos à obra !

https://www.flickr.com/photos/jgustavoam/26745312799/in/album-72157...

Desenvolvimento do projeto da CONSOLE : (continuação) 

Boa noite, 

No Sketch da console eu já consegui :

1) Pontuação do time Home (+2,+1,-1)  = OK 

2) Pontuação do do time Visit  (+2,+1,-1)  = OK 

3) Posse de Bola, Home e Visit = OK 

4) Contagem de Faltas , Home e Visit = OK 

6) Só falta o controle do Timer ! 

Link do Sketch :

https://create.arduino.cc/editor/Gustavo_Murta/66e217c1-c018-41a5-b...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço