Ir ao conteúdo
  • Cadastre-se

C Como criar uma GUI "redonda"?


Antônio_Lima

Posts recomendados

Quero desenvolver um propeller clock usando o micro-controlador STM32F411RE e ser capaz de, por meio de uma interface, desenhar a imagem que quero exibir no pc e transmitir por bluetooth para o arm, mas não tenho nenhuma ideia de como desenvolver uma interface, ainda mais que seja redonda, como a da imagem. A ideia por trás do código do pc seria transformar tudo em uma matriz e enviar para o arm.

As linhas seriam os números de LEDs, e as colunas seriam os "ângulos" que vou acionar. Vale ressaltar que vou trabalhar com leds de uma cor só e que a imagem eu peguei de uma página que da uma explicação em como desenvolver o código do micro-controlador, mas não do PC. http://www.wittyrobo.com/povd/index.html

Enfim, alguém saberia como desenvolver algo assim usando C?

c00_p01_i01_aicte.jpg

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Claro, acho que me expressei mal. O que eu quis dizer foi que não sei como desenvolver um programa no computador que exiba uma matriz "torcida" (não tenho conhecimento nenhum sobre interfaces, a únicas coisas que faço são pelo console). Gostaria de saber se tu tem alguma ideia de como posso desenvolver isso.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Antônio_Lima No caso, para manter o local correto, a ser exibido, calcule o tempo de giro, e a cada giro, você diminui a coordenada x, dependendo da direção do relógio, para a mensagem não rotacionar com a 'hélice'. E no caso da GUI redonda, a IDE Delphi é bem útil nessa questão.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@TYSQUARE89  Para fazer a mensagem ficar "estática" eu vou usar um sensor magnético, que irá detectar o tempo que levou para fazer uma volta, e assim calcular a velocidade da rotação. Mas não entendi a parte de diminuir a coordenada x, como assim? E sobre a IDE Delphi, já ouvi falar que ela é uma linguagem, mas só posso programar usando C. 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Em ‎22‎/‎09‎/‎2017 às 01:14, Benjamin Breeg disse:

xy.gif

Mas isso só no caso de ser um que rotacione os led's em vez de um estático:

Imagine que você acenda um led em (3,1) sendo (x,y), eventualmente o local do led ira mudar com a rotação, mesmo que a coordenada não mude, então você precisa mapear cada coordenada dos led's a fim de que a mensagem continue no mesmo lugar , sendo que o led em (4,1) será o novo (3,1). 

 

. Delphi é uma IDE, Pascal é a linguagem usada pela IDE... Desculpe, achei que ainda iria escolher a linguagem, quando citou como criar uma GUI redonda.

 

Agora no caso do relógio estático, é só você agrupar uma quantidade de led, tal que forme o circulo, e na linguagem C, você cria um código que mapeia esses led's com uma matriz e acenda os necessários para que apareça a mensagem que está na interface. Porém lembra-se C é diferente de C++, apenas C++ trabalha com GUI...

 

Exemplo simples de um relógio digital ( 0 led desligado, 1 led ligado )

int mapa relogio[4][29] = { 

0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 },

0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 },

0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 },

0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 }};

 

Texto: 10 : 15 : 20

 

P.S: não coloquei virgula para ver melhor

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@TYSQUARE89 A minha ideia é fazer propeller clock que rotacione os leds, como o da imagem:pov_completed.jpg

A minha ideia para exibir caracteres é criar uma matriz int texto[16][90], onde 16 é o número de leds que eu terei e 90 é o número de mudanças que posso exibir, ou seja, a cada 4 graus os leds poderão mudar de estado.

Quanto à linguagem, conversei com o professor sobre criar a interface e ele disse que posso usar C++ e sugeriu usar o C++ Builder para isso. Tu sabe de algum outro meio pra fazer essa interface ou recomenda o C++ Builder também?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@TYSQUARE89 Quanto à lógica, eu pensei em duas maneiras de fazer:

1ª maneira: Criar uma imagem com 16 círculos e detectar quando o usuário faz um clique e pegar a coordenada x e y. Com isso, eu posso calcular o ângulo do clique a partir do centro da imagem e também a distância por meio de Pitágoras. Depois, - de alguma maneira que eu ainda não pensei - usar o ângulo e a distância para alterar a célula correspondente na matriz.

2ª maneira: Criar um grid do mesmo tamanho da minha matriz (16x90) e pegar a posição do clique e alterar o valor corresponde na matriz (ainda preciso descobrir como fazer).

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 23/09/2017 às 18:47, Antônio_Lima disse:

@TYSQUARE89 Quanto à lógica, eu pensei em duas maneiras de fazer:

1ª maneira: Criar uma imagem com 16 círculos e detectar quando o usuário faz um clique e pegar a coordenada x e y. Com isso, eu posso calcular o ângulo do clique a partir do centro da imagem e também a distância por meio de Pitágoras. Depois, - de alguma maneira que eu ainda não pensei - usar o ângulo e a distância para alterar a célula correspondente na matriz.

2ª maneira: Criar um grid do mesmo tamanho da minha matriz (16x90) e pegar a posição do clique e alterar o valor corresponde na matriz (ainda preciso descobrir como fazer).

 

 

Como eu disse, não precisa de ângulo algum.

Se cada seção da imagem for um objeto, ao clicar automaticamente você já sabe o X e o Y.

Sugestão; colocar a imagem bmp e dentro de cada quadrado uma caixa de seleção ou, se quiser elaborar mais, uma forma geométrica que você mude de cor quando clica.

 

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...