TTgo T-display - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T09:14:41Zhttps://labdegaragem.com/forum/topics/ttgo-t-display?commentId=6223006%3AComment%3A867903&x=1&feed=yes&xn_auth=noResultado desejado mais ou me…tag:labdegaragem.com,2021-04-14:6223006:Comment:8679032021-04-14T19:06:01.309Zleonardo clavellhttps://labdegaragem.com/profile/leonardoclavell
<p>Resultado desejado mais ou menos, rsrsrs, não consegui carregar imagens personalizadas para as duas telas de temperatura, só consegui adicionando mais uma imagem (a ultima da sequencia), que você me ensinou a ter um delay, com o desenho do sensor..mas tudo bem.</p>
<p></p>
<p>Mais uma vez, obrigado mesmo pelas dicas.</p>
<p>Resultado desejado mais ou menos, rsrsrs, não consegui carregar imagens personalizadas para as duas telas de temperatura, só consegui adicionando mais uma imagem (a ultima da sequencia), que você me ensinou a ter um delay, com o desenho do sensor..mas tudo bem.</p>
<p></p>
<p>Mais uma vez, obrigado mesmo pelas dicas.</p> Sim, fico feliz que tenha che…tag:labdegaragem.com,2021-04-14:6223006:Comment:8678052021-04-14T13:45:51.941ZRodrigo Corberahttps://labdegaragem.com/profile/RodrigoCorbera
<p>Sim, fico feliz que tenha chegado ao resultado desejado!</p>
<p></p>
<p>O uso de estados dentro de um programa é extremamente útil e pode ser usado em diversos casos. <br/>Sempre se deve pensar nos vários estados e nas regras de suas transições primeiro. Assim codificar essas condições é muito mais fácil de dar manutenção e de executar.<br/>Abraços.</p>
<p></p>
<p>Sim, fico feliz que tenha chegado ao resultado desejado!</p>
<p></p>
<p>O uso de estados dentro de um programa é extremamente útil e pode ser usado em diversos casos. <br/>Sempre se deve pensar nos vários estados e nas regras de suas transições primeiro. Assim codificar essas condições é muito mais fácil de dar manutenção e de executar.<br/>Abraços.</p>
<p></p> Obrigado Rodrigo, por ter me…tag:labdegaragem.com,2021-04-14:6223006:Comment:8676982021-04-14T13:33:24.972Zleonardo clavellhttps://labdegaragem.com/profile/leonardoclavell
<p>Obrigado Rodrigo, por ter me falado que o que eu queria era possível, e ter me dado a dica do "loop" vou fazer isso.</p>
<p>Obrigado Rodrigo, por ter me falado que o que eu queria era possível, e ter me dado a dica do "loop" vou fazer isso.</p> Parabéns Leonardo!
Ficou ótim…tag:labdegaragem.com,2021-04-14:6223006:Comment:8675982021-04-14T13:24:47.546ZRodrigo Corberahttps://labdegaragem.com/profile/RodrigoCorbera
<p>Parabéns Leonardo!</p>
<p>Ficou ótimo e muito bonito!<br/><br/>Caso tenha interesse em compartilhar seu projeto, como disse, sugiro criar um GitHub com fotos, código, vídeos, esquemas, STLs e tudo mais que queira deixar público.</p>
<p></p>
<p>Parabéns Leonardo!</p>
<p>Ficou ótimo e muito bonito!<br/><br/>Caso tenha interesse em compartilhar seu projeto, como disse, sugiro criar um GitHub com fotos, código, vídeos, esquemas, STLs e tudo mais que queira deixar público.</p>
<p></p> Só para fechar este tópico, e…tag:labdegaragem.com,2021-04-14:6223006:Comment:8677912021-04-14T12:31:44.307Zleonardo clavellhttps://labdegaragem.com/profile/leonardoclavell
<p>Só para fechar este tópico, eu terminei o projeto, sozinho, demorou mas acho que ficou legal e funcional, temperaturas conferidas com termometro digital, perfeito!!</p>
<p></p>
<p>Link youtube: </p>
<p><a href="https://youtu.be/X3BnSwbFDCI" target="_blank">https://youtu.be/X3BnSwbFDCI</a></p>
<p></p>
<p></p>
<p>Fotos:…</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/8793058863?profile=original" rel="noopener" target="_blank"><img class="align-full" src="https://storage.ning.com/topology/rest/1.0/file/get/8793059280?profile=RESIZE_710x" width="303"></img></a></p>
<p></p>
<p></p>
<p>Só para fechar este tópico, eu terminei o projeto, sozinho, demorou mas acho que ficou legal e funcional, temperaturas conferidas com termometro digital, perfeito!!</p>
<p></p>
<p>Link youtube: </p>
<p><a href="https://youtu.be/X3BnSwbFDCI" target="_blank">https://youtu.be/X3BnSwbFDCI</a></p>
<p></p>
<p></p>
<p>Fotos:</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/8793058863?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8793059280?profile=RESIZE_710x" width="303" class="align-full"/></a></p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/8793059694?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8793059694?profile=RESIZE_710x" width="303" class="align-full"/></a></p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/8793061058?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8793061058?profile=RESIZE_710x" width="400" class="align-full"/></a></p> Pessoal, ainda estou precisan…tag:labdegaragem.com,2021-04-08:6223006:Comment:8676572021-04-08T20:10:35.851Zleonardo clavellhttps://labdegaragem.com/profile/leonardoclavell
<p>Pessoal, ainda estou precisando de ajuda, eu aprendi a colocar os textos que eu quero no lugar, agora estou na parte do sensor, estou usando dois termistores TTC 103, para mmonitorar e mostrar na tela do ttgo display montei o circuito, resistor de 10k, na porta 32 e 33 do ttgo display, usei o exemplo "basicntc" para funcionar, quando testo em saida no monitor serial, tudo funciona, mas quando coloco a exibição no ttgo, não aparece, alguem pode me ajudar?</p>
<p></p>
<p>Eu tinha dito que…</p>
<p>Pessoal, ainda estou precisando de ajuda, eu aprendi a colocar os textos que eu quero no lugar, agora estou na parte do sensor, estou usando dois termistores TTC 103, para mmonitorar e mostrar na tela do ttgo display montei o circuito, resistor de 10k, na porta 32 e 33 do ttgo display, usei o exemplo "basicntc" para funcionar, quando testo em saida no monitor serial, tudo funciona, mas quando coloco a exibição no ttgo, não aparece, alguem pode me ajudar?</p>
<p></p>
<p>Eu tinha dito que pagaria por uma ajuda, mas o Rodrigo Corbera, cobrou 300,00 para me ajudar com o sketch, tudo bem, cada um cobra o que quer pelo seu conhecimento, mas não achei o preço justo para me "ajudar", pois o código já está 90% pronto, como podem ver acima, não acho que daria para alguem com conhecimento mais de 20m de leitura na minha duvida em achar o que estou fazendo de errado, e mesmo porque estou fazendo isso por hobie, e quando tiver pronto, deixarei tudo aqui no site para quem quizer fazer o mesmo, então...se alguem puder ajudar um novato no ttgo eu agradeço!!! :)</p> O texto vai baixando por caus…tag:labdegaragem.com,2021-04-07:6223006:Comment:8675442021-04-07T19:47:41.387ZRodrigo Corberahttps://labdegaragem.com/profile/RodrigoCorbera
<p>O texto vai baixando por causa do println();</p>
<p></p>
<p>Tem que usar funções gráficas para desenhar imagens e texto ao mesmo tempo.</p>
<p></p>
<p>O texto vai baixando por causa do println();</p>
<p></p>
<p>Tem que usar funções gráficas para desenhar imagens e texto ao mesmo tempo.</p>
<p></p> Nao sei como te agradescer Ro…tag:labdegaragem.com,2021-04-07:6223006:Comment:8677282021-04-07T17:37:40.437Zleonardo clavellhttps://labdegaragem.com/profile/leonardoclavell
<p>Nao sei como te agradescer Rodrigo, juntei os codigos e ficou assim, fiz upload e deu certo!!!</p>
<p></p>
<p>queria te pedir o código para que faça isso: (para te falar a verdade, estou sem graça de pedir a você para fazê-lo para mim, se quizer, espero que não se sinta ofendido, eu pago a você pelo trabalho, pois adimiro muito o dom de saber progrmação, vou deixar o meu telefone em mensagem para você.)</p>
<p></p>
<p>*********************</p>
<p>1) notei uma coisa, cada vez que o texto "ola…</p>
<p>Nao sei como te agradescer Rodrigo, juntei os codigos e ficou assim, fiz upload e deu certo!!!</p>
<p></p>
<p>queria te pedir o código para que faça isso: (para te falar a verdade, estou sem graça de pedir a você para fazê-lo para mim, se quizer, espero que não se sinta ofendido, eu pago a você pelo trabalho, pois adimiro muito o dom de saber progrmação, vou deixar o meu telefone em mensagem para você.)</p>
<p></p>
<p>*********************</p>
<p>1) notei uma coisa, cada vez que o texto "ola mundo" aparece, ele desce uma linha na tela, até desaparecer.</p>
<p>2) queria que o texto, tenha uma imagem de fundo, ou apareça em cima da ultima imagem carregada.</p>
<p>3) como fazer com o sensor? preciso adicionar 2 (um para o processador, outro para o liquid cooler).</p>
<p></p>
<p></p>
<p>Aqui está a "situação" atual do sketch.</p>
<p></p>
<p>#include "SPIFFS.h"<br/>#include <TJpg_Decoder.h><br/>#include "SPI.h"<br/>#include <TFT_eSPI.h> // Hardware-specific library</p>
<p><br/>TFT_eSPI tft = TFT_eSPI(); // Invoke custom library<br/>int imgNum = 0;<br/>int TFT_GREY;<br/>int estado = 0;</p>
<p>void setup() {<br/> Serial.begin(115200);</p>
<p>// Initialise SPIFFS<br/> if (!SPIFFS.begin()) {<br/> Serial.println("SPIFFS initialisation failed!");<br/> while (1) yield(); // Stay here twiddling thumbs waiting<br/> }</p>
<p>Serial.println("\r\nInitialisation done.");<br/> listSPIFFS();</p>
<p>tft.begin();<br/> tft.setRotation(1);<br/> tft.fillScreen(TFT_BLACK);</p>
<p>TJpgDec.setJpgScale(1);<br/> TJpgDec.setSwapBytes(true);<br/> TJpgDec.setCallback(tft_output);<br/>}</p>
<p>////////////////////////////////////////////</p>
<p>void executa_video(){</p>
<p>if (imgNum > 111) {delay (20 * 1000); // espera 20 segundos com a imagem do ultimo frame do video na tela<br/> imgNum = 0; // imgNum é o número do Frame da sequencia do mini vídeo<br/> estado = 1; // muda o estado para mostrar o texto<br/> return;<br/> }</p>
<p>// no mais desenha frame a frame o video<br/> String imgPath = "/image_";<br/> imgPath += imgNum++;<br/> imgPath += ".jpg";</p>
<p>TJpgDec.drawFsJpg(0, 0, imgPath); // aqui desenha o frame número <imgNum> no display...</p>
<p>}</p>
<p>void executa_texto(){</p>
<p>tft.fillScreen(TFT_GREY); // apaga a tela com a cor cinza<br/> tft.println("==> OLA MUNDO! <=="); // escreve algo na tela<br/> delay(20 * 1000); // espera 20 segundos com o texto parado na tela<br/> estado = 0; // alterna para o estado 0 --> video<br/>}</p>
<p>// A solução está no loop().... ele controlará os estados da máquina e fará o correspondente a cada estado</p>
<p>// 0 para video e 1 para texto - variável global<br/>void loop() {<br/> switch (estado) {<br/> case 0:<br/> executa_video();<br/> break;<br/> case 1:<br/> executa_texto();<br/> break;<br/> }</p>
<p>}</p>
<p>void listSPIFFS(void) {<br/> Serial.println(F("\r\nListing SPIFFS files:"));<br/> static const char line[] PROGMEM = "=================================================";</p>
<p>Serial.println(FPSTR(line));<br/> Serial.println(F(" File name Size"));<br/> Serial.println(FPSTR(line));</p>
<p>fs::File root = SPIFFS.open("/");<br/> if (!root) {<br/> Serial.println(F("Failed to open directory"));<br/> return;<br/> }</p>
<p>if (!root.isDirectory()) {<br/> Serial.println(F("Not a directory"));<br/> return;<br/> }</p>
<p>Serial.println(FPSTR(line));<br/> Serial.println();<br/> delay(10000);<br/>}</p>
<p>bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t* bitmap)<br/>{<br/> // Stop further decoding as image is running off bottom of screen<br/> if ( y >= tft.height() ) return 0;</p>
<p>// This function will clip the image block rendering automatically at the TFT boundaries<br/> tft.pushImage(x, y, w, h, bitmap);</p>
<p>// Return 1 to decode next block<br/> return 1;<br/>}</p> Nossa, tenho q ler muito isso…tag:labdegaragem.com,2021-04-07:6223006:Comment:8675412021-04-07T15:18:27.500Zleonardo clavellhttps://labdegaragem.com/profile/leonardoclavell
Nossa, tenho q ler muito isso para entender, pelo q vi voce conhece muito da linguagem, muito obrigado pela ajuda, isso e muito novo para mim, tenho medo de nao conseguir fazer, rsrs, vou testar e dou um feedback para vc
Nossa, tenho q ler muito isso para entender, pelo q vi voce conhece muito da linguagem, muito obrigado pela ajuda, isso e muito novo para mim, tenho medo de nao conseguir fazer, rsrs, vou testar e dou um feedback para vc Olá Leonardo,
Sim, é possíve…tag:labdegaragem.com,2021-04-07:6223006:Comment:8676272021-04-07T14:47:44.835ZRodrigo Corberahttps://labdegaragem.com/profile/RodrigoCorbera
<p>Olá Leonardo,</p>
<p></p>
<p>Sim, é possível tudo que você quer. O sketch que você mostrou usa estas bibliotecas do Arduino:</p>
<p>TFT_eSPI ==> usada para desenhar, manipular e controlar no LCD TFT.</p>
<p>TJpg_Decoder ==> usada para decodificar imagens no formato JPG</p>
<p>SPIFFS ==> usado para ler arqruivos gravados na FLASH do ESP32, possivelmente com a sequencia de imagens JPG que são os 111 frames do vídeo</p>
<p>SPI ==> interface elétrica do ESP32 com o LCD…</p>
<p>Olá Leonardo,</p>
<p></p>
<p>Sim, é possível tudo que você quer. O sketch que você mostrou usa estas bibliotecas do Arduino:</p>
<p>TFT_eSPI ==> usada para desenhar, manipular e controlar no LCD TFT.</p>
<p>TJpg_Decoder ==> usada para decodificar imagens no formato JPG</p>
<p>SPIFFS ==> usado para ler arqruivos gravados na FLASH do ESP32, possivelmente com a sequencia de imagens JPG que são os 111 frames do vídeo</p>
<p>SPI ==> interface elétrica do ESP32 com o LCD TFT</p>
<p></p>
<p>Para escrever Temperatura, Voltagem, mensagens etc no LCD, basta usar a biblioteca TFT_eSPI.</p>
<p>Para desenhar os quadros do vídeo, é a TJpg_Decoder, como exatamente usado no sketch.</p>
<p></p>
<p>Para alternar entre vídeo, imagens ou telas com texto deve-se usar o conceito de programação baseado em máquina de estados. Essa máquina é na prática uma variável que guarda o estado e uma lógica que muda de um estado para outro.</p>
<p></p>
<p>Ou seja, por exemplo, temos dois estados: mostrando o vídeo (estado A) OU mostrando o texto (estado B).</p>
<p>Cada um ocorre após o outro infinitamente.</p>
<p>A lógica/condição da mudança do estado A para o B será: 30 segundos após o fim do vídeo</p>
<p>A lógica/condição da mudança do estado B para o A será: após 20 segundos após desenhar o texto</p>
<p></p>
<p>Seria algo como:</p>
<p></p>
<p>void executa_video(){</p>
<p> if (imgNum > 111) {</p>
<p> delay (30 * 1000); // espera 30 segundos com a imagem do ultimo frame do video na tela</p>
<p> imgNum = 0; // imgNum é o número do Frame da sequencia do mini vídeo</p>
<p> estado = 1; // muda o estado para mostrar o texto</p>
<p> return;</p>
<p> }</p>
<p> // no mais desenha frame a frame o video<br/> String imgPath = "/image_";<br/> imgPath += imgNum++;<br/> imgPath += ".jpg";</p>
<p> TJpgDec.drawFsJpg(0, 0, imgPath); // aqui desenha o frame número <imgNum> no display...</p>
<p></p>
<p>}</p>
<p></p>
<p>void executa_texto(){</p>
<p> tft.<span class="pl-c1">fillScreen</span>(TFT_GREY); // apaga a tela com a cor cinza</p>
<p> tft.println("==> OLA MUNDO! <=="); // escreve algo na tela</p>
<p> delay(20 * 1000); // espera 20 segundos com o texto parado na tela</p>
<p> estado = 0; // alterna para o estado 0 --> video</p>
<p>}</p>
<p></p>
<p>// A solução está no loop().... ele controlará os estados da máquina e fará o correspondente a cada estado<br/><br/></p>
<p>int estado = 0; // 0 para video e 1 para texto - variável global</p>
<p>void loop() {</p>
<p> switch (estado) {</p>
<p> case 0:</p>
<p> executa_video();</p>
<p> break;</p>
<p> case 1:</p>
<p> executa_texto();</p>
<p> break;</p>
<p> }</p>
<p>}</p>