Colegas, tudo relativo a exibir teclas pressionadas numdisplay oled que encontrei é relacionado a teclados matriciais. Minha intenção é utilizar apenas 5 push-buttons e nomear cada um como 1,2,3,4,5 e cada vez que eu pressionar um qualquer, um display oled 128x32 mostra o valor. Eu conseguir fazer isso com o trecho do código em anexo, porém, se aperto o botão 1 mostra 1, se aperto botão 2 muda de 1 para 2...etc. Não consigo fazer mostrar uma sequencia, exemplo: 12 ou 145 ou 133 ou 112 ou 12345 ou 15434..etc. Por isso pergunto: Como deveria ficar este código para obter este resultado impedindo digitação de 6 números, ou seja, só pode acumular no display oled no máximo 5 números quaisquer entre 1 e 5 ? grato.

Exibições: 570

Anexos

Responder esta

Respostas a este tópico

Oi DT, este código que anexei não contém a modificação pois ela não funcionou. Mas minha última mensagem neste post, de hoje cedo, eu relato que consegui resolver a questão usando um comando if dentro do LOOP. Te agradeço demais por ter dado atenção ao meu caso.

...

Tiago, consegui fazer o lance dos botões usando a sua lógica. Grato D+

Saberia dizer algo a respeito do meu RTC ? ..que escrevi na resposta que dei ao colega D.T Ribeiro

Se ele fica fora do loop não conta. Se deixo dentro do loop conta mas não sai da tela quando entro na rotina de pressionar teclas.

Outra coisa que gostaria de resolver é a seguinte: Por falta de memória precisei reduzir os pixels do meu display OLED para 64x16. Mas vejam na foto em anexo que aparecem uns pontinhos da metade da tela direita. Como eu faço para eliminá-los ?

Aliás quem souver de alguma biblioteca que gaste menos memória para display oled 128x32 eu agradeço (para exibir somente textos)

Anexos

Olá. Que ótimo que conseguiu resolver sua questão.

A título de curiosidade, EU ACHO que algumas libs fazem um recurso bem similar a este, mas seria necessário estuda-la um pouco.

Com relação aos pontos na tela, parece um erro de código. Poderia posta-lo atualizado?

Em anexo o código mais recente com as 5 teclas funcionando. Os pontos na tela não saem de jeito nenhum, Parece que ao reduzir os pixels do display oled para 64 x 16 o sistema perde o controle sobre a parte restante e aí mostra os pontos. Estou com 2 problemas: Estes pontos e não conseguir pôr o relógio RTC para ser exibido quando ligo o sistema, se coloco a rotina telainicial() dentro de loop a digitação das teclas não funciona direito.

Anexos

Consegui resolver a questão do relógio RTC sair da tela quando começo a digitação nas 5 teclas. Coloquei uma condicional if dentro do loop. if(contador==0)...aí sim habilita mostrar o relógio. 

Falta resolver 2 problemas: 1) pontos tipo 'sujeira' na tela conforme fotos do display que coloquei aqui em mensagens anteriores. Reduzi os pixels para 64 x 16 ao invés de 128 x 32 e ao ligar o sistema estes pontos insistem em sempre aparecer.

2) Precisei escrever a palavra ação, mas o cedilha e o ã não vieram acentuados, estas letras foram trocadas por caracteres estranhos.

Vou pesquisar alguma biblioteca alternativa para ver se corrijo o problema 1, já quanto a acentuação ainda não sei o que fazer.

https://pastebin.com/D2RAbdvC

Testa esse código e me diz o que acontece. Neste código, apenas dei uma melhorada na parte do loop.

Aqui eu não tenho RTC nem essa tela que você está usando.

De qualquer forma, está parecendo um problema de configuração da lib.

É importante que você identifique a lib correta e que faça as configurações ideais para o seu display.

Se ele é de 300 x 200, por exemplo, você deve definir nas configurações essa resolução.

Obs- Fique atento ao utilizar o pino 0 e 1, do arduino, pois eles são usados para a comunicação serial.

Tiago, testei mas não funcionou. Eu tenho 5 botões, aperto e de cada vez. Cinco são números 1,2,3,4,5. Ao apertar qualquer tecla nada acontece. O OLED fica mostrando hora e data sem contar os segundos. 

Mas eu vim aqui por outro motivo. Você sabe dizer como faço para o OLED mostrar letras acentuadas (á,ã,ão, etc) ? ao invés de mostrar acentos está trocando por caracteres estranhos, tipo: são por s;/o

Outra dúvida é: Digamos que eu queira que uma frase seja escrita em duas linhas. Exemplo: "Saída pela direita mais a frente"

Mas ao invés de aparecer assim: "Saída pela direita mais

                                                a frente"

Eu gostaria que aparecesse assim: "Saída pela direita

                                                   mais a frente"

Ou seja, eu determinar o inicio da escrita num ponto (0,0) e também determinar um ponto X e Y em que a linha terá que parar ali e escrever na linha de baixo. Não é o caso de usar println numa determinada posição da frase pois as frases mudarão. Minha dúvida é se tem como determinar um ponto no qual dali em diante não pode escrever nada. Não aceitar.

  

Tiago, testei mas não funcionou. Eu tenho 5 botões, aperto e de cada vez. Cinco são números 1,2,3,4,5. Ao apertar qualquer tecla nada acontece. O OLED fica mostrando hora e data sem contar os segundos. 

Sobre ele ficar travado, remova a linha "while (!digitalRead(i)) {} ".

Assim que eu tiver um tempo, faço um teste com outra tela aqui, referente a essa optimização.

Você sabe dizer como faço para o OLED mostrar letras acentuadas (á,ã,ão, etc) ?

Sim, você terá que procurar uma fonte que tenha estes acentos. Normalmente nenhuma fonte padrão tem, pois são baseadas no inglês (e ela não tem acento). A outra opção é você desenhar o acento. Outra opção também é você produzir a sua própria fonte.

Outra dúvida é: Digamos que eu queira que uma frase seja escrit...

Se tiver, eu desconheço. Atualmente faço manualmente, escrevo, verifico e defino a quebra da linha.

Fiz várias tentativas com bibliotecas até que usei esta abaixo e parou de exibir pontos estranhos na tela. O que eu preciso agora é entender a sua informação quanto a eu mesmo desenhar o acento e como incluir este desenho na biblioteca. Preciso destes 7 caracteres: á,ã,é,í,ó,ú,ç

SSD1306Ascii.h  

O resto eu estou dando conta de resolver aos poucos (aprendizado)

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço