Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Gráficos TFT:Gráficos de história ao vivo

Componentes e suprimentos

Arduino Mega 2560
× 1
Sensor DHT11 de Temperatura e Umidade (4 pinos)
× 1
Elegoo 2,8 polegadas TFT LCD Shield
× 1
Fios de jumpers (genérico)
× 1
Breadboard (genérico)
× 1

Aplicativos e serviços online

Arduino Web Editor

Sobre este projeto





Visão geral


Você já quis representar graficamente seus dados profissionalmente em um LCD TFT? Mas há um problema, é particularmente difícil criar um gráfico por causa de todos os cálculos envolvidos.

Este projeto tem como objetivo tirar todo esse estresse de seus ombros e permitir que você crie seu próprio gráfico de histórico personalizado, fazendo um gráfico de tudo o que você quiser em apenas alguns segundos. Tudo que você precisa fazer é editar 5 variáveis.

Vídeo

Imagem





Funcionalidade


Este projeto visa tornar a representação gráfica fácil e divertida para todos, todos os cálculos difíceis estão concluídos, tudo o que o usuário precisa fazer é editar 2 variáveis ​​e escolher a cor do seu gráfico. Aqui estão alguns exemplos que mostram a diversidade do gráfico.

O gráfico traçará a temperatura ao vivo, em intervalos de 6 segundos, o valor será exibido por um ponto, o ponto será conectado a outros pontos por uma linha. Os segundos que passaram desde o início do código serão exibidos no eixo x com o intervalo dos valores no eixo y.

O projeto funciona de forma simples, o Arduino Mega lê o valor do sensor DHT 11 e armazena a temperatura em uma variável, depois representa o valor no gráfico customizado. Aqui está um diagrama que ilustra a visão geral da funcionalidade.

Aqui está uma imagem que mostra a visão geral do código do projeto.
  • Leitura de temperatura vai ler a temperatura do sensor
  • Dados do processo irá processar a leitura do sensor e mapeá-la para o gráfico.
  • Dados do gráfico exibirá os valores mapeados no gráfico.

Tudo que você precisa saber para prosseguir com este projeto é um amplo entendimento de como as coisas estão posicionadas no LCD TFT, isso é explicado abaixo.

Refiro-me a todo o LCD como a tela, é aqui que tudo é desenhado, todas as bibliotecas TFT LCD funcionam de forma bastante semelhante, portanto, as funções neste código também devem funcionar com outras bibliotecas. Abaixo está o esboço de um quadrilátero (um retângulo) sendo desenhado em um LCD TFT.

Neste esboço, um retângulo é desenhado, cada ponto é rotulado, a linha de código que é usada para desenhar um retângulo é esta,
  tft.fillRect (originX, originY, sizeX, sizeY, Color);  
  • originX é representado por 'z' no diagrama acima, esta é a distância da direita da tela até a forma.
  • originY é representado por 'x' no esboço, esta é a distância do topo da tela até a forma.
  • sizeX é o tamanho da forma no eixo x, este é o comprimento da forma.
  • sizeY é o tamanho da forma no eixo y, esta é a altura da forma.





Benefícios


O usuário operando isto projeto irá benefício Em:
  • Gráfico de dados do sensor em um LCD TFT
  • Faça isso em segundos





Construindo o projeto


Etapa 1: Obrigatório Aparelho

Este projeto está usando um sensor de temperatura e umidade DHT 11 para receber os dados de temperatura, mas qualquer sensor pode ser usado, a troca do sensor será explicada mais adiante.
  • 1, Arduino Mega
  • 1, Elegoo 2.8 'TFT LCD
  • 1, sensor DHT 11
  • 1, breadboard
  • Fios de jumpers

Etapa 2: Conectando o Circuito

Aqui estão os esquemas para o projeto, basta conectar o sensor DHT 11 ao Arduino Mega e pronto.

Etapa 3:Reconhecendo o Código

Existem 3 partes principais no código:
  • Configurar gráfico
  • Leitura da temperatura
  • Desenhar gráfico

Essas seções são explicadas a seguir.
  • Configurar gráfico
  // desenha o título tft.setCursor (10, 10); // define o cursor tft.setTextColor (BLUE); // define a cor do texto tft.setTextSize (4); // define o tamanho do texto tft.println (graphName); // desenha o contorno tft.drawLine (originX, originY, (originX + sizeX), originY, graphColor); tft.drawLine (originX, originY, originX, (originY - sizeY), graphColor); // desenhar rótulos para (int i =0; i  

Esta parte do código desenhará o contorno do gráfico, desenhará as linhas dos eixos xey, também desenhará as marcas e rotulará o eixo y com valores.
  • Ler Temperatura
  chk =DHT.read11 (22); temp =(temperatura DHT);  

Esta linha curta de código lerá a temperatura do sensor DHT 11 e a armazenará em uma variável.
  • Desenhar Gráfico
  if (blockPos <8) {// imprime o tempo tft.setCursor ((mark [valuePos] - 5), (originY + 16)); tft.setTextColor (graphColor, WHITE); tft.setTextSize (1); tft.println (timeBlock [valuePos]); // mapeia o valor locationBlock [valuePos] =map (temp, 0, graphRange, originY, (originY - sizeY)); // desenhar ponto tft.fillRect ((mark [valuePos] - 1), (locationBlock [valuePos] - 1), markSize, markSize, pointColor); // tente conectar ao ponto anterior if (valuePos! =0) {tft.drawLine (mark [valuePos], locationBlock [valuePos], mark [(valuePos - 1)], locationBlock [(valuePos - 1)], lineColor); } blockPos ++; } else {// limpar a tela do gráfico tft.fillRect ((originX + 2), (originY - sizeY), sizeX, sizeY, WHITE); // mapeia o valor - ponto atual locationBlock [valuePos] =map (temp, 0, graphRange, originY, (originY - sizeY)); // ponto de desenho - ponto atual tft.fillRect ((mark [7]), (locationBlock [valuePos] - 1), markSize, markSize, pointColor); // desenha todos os pontos para (int i =0; i <8; i ++) {tft.fillRect ((mark [(blockPos - (i + 1))] - 1), (locationBlock [(valuePos - i)] - 1), markSize, markSize, pointColor); } // desenhe todas as linhas para (int i =0; i <7; i ++) {tft.drawLine (mark [blockPos - (i + 1)], locationBlock [valuePos - i], mark [blockPos - (i + 2)], locationBlock [valuePos - (i + 1)], lineColor); } // alterar as tabelas de tempo para (int i =0; i <=8; i ++) {tft.setCursor ((mark [(blockPos - i)] - 5), (originY + 16)); tft.setTextColor (graphColor, WHITE); tft.setTextSize (1); tft.println (timeBlock [valuePos - i]); }} valuePos ++;  

Esta parte longa do código irá desenhar os pontos do gráfico em seus valores e então irá juntá-los através de linhas, o código verifica se a tela do gráfico está preenchida, se estiver, ele começará a ejetar o primeiro valor do gráfico e movendo os outros para cima para permitir espaço para o novo valor a ser inserido, se ainda houver espaço, o dispositivo continuará adicionando valores em intervalos.

Personalização do gráfico

O engraçado deste gráfico é que ele é 100% editável, então o usuário pode editar o tamanho do gráfico, sua localização e sua cor, o usuário também pode exibir quaisquer dados no gráfico graças à sua flexibilidade. São são todas as variáveis ​​com as quais você deve se preocupar.
  bool proDebug =0; uint16_t graphColor =BLUE; uint16_t pointColor =BLACK; uint16_t lineColor =GREEN; String graphName ="Gráfico de tempo"; int graphRange =50; int markSize =3;  
  • proDebug é o utilitário de depuração embutido no projeto, ele é definido como 0 como padrão, quando definido como 1 / verdadeiro, ele imprimirá a temperatura atual no Monitor Serial, este é um utilitário de depuração, observe que se ativado, o Monitor Serial é deve ser aberto para que o código seja executado.
  • graphColor define a cor do gráfico, as linhas xey e seus rótulos são definidos com esta cor.
  • pointColour representa a cor do ponto ilustrando o valor no gráfico.
  • lineColour define a cor da linha que une os pontos no gráfico à cor selecionada.
  • graphRange é a espinha dorsal do gráfico, note que é muito importante que seja definido corretamente, ele representa o valor máximo que pode ser representado graficamente, estou usando um sensor de temperatura, não esperaria que o valor ultrapassasse 50ºC, então eu defino o valor para 50, se você quiser representar graficamente uma entrada analógica bruta, você pode definir o graphRange para 1024, o valor máximo que um pino analógico pode exibir.
  • markSize representa o tamanho do ponto que identifica o valor do sensor no gráfico, o valor representa o comprimento do quadrado.

E é isso, é tudo com que você precisa se preocupar, o restante das variáveis ​​serão descobertas automaticamente pelo Arduino.

Mudança o Valor

É bom representar graficamente a temperatura da sua sala, mas é ainda melhor se você puder exibir os dados do sensor no gráfico, e você pode, apenas editando algumas linhas de código, você pode representar graficamente quaisquer dados da umidade do solo à luz intensidade. Aqui está um guia para fazer isso.

Indo Além

Você pode fazer mais experimentos com o projeto, tentar editar as constantes originX, originY, sizeX e sizeY para dar ao seu gráfico um tamanho e posição diferentes na tela. Existe um arquivo de cabeçalho anexado ao esboço principal, ele contém os códigos de cores de algumas cores, tente alterar a cor do gráfico e das barras. E é isso, seu gráfico personalizado está pronto.

Bibliotecas
  • Bibliotecas Elegoo - Copyright (c) 2012 Adafruit Industries sob a licença BSD.
  • DHT - Autor Rob Tillaart, esta biblioteca é de domínio público





Antecedentes


Publiquei recentemente um projeto que representa graficamente 1, 2, 3 ou 4 valores em um gráfico de barras. Decidi publicar outro modelo para gráficos. Não há modelos para gráficos de barras que não tenham linhas em todo o lugar ameaçando confundir, então decidi fazer as contas novamente e publicar um projeto simples que permite a todos criar um gráfico de seus dados em um gráfico histórico, ao vivo.


Código

TFTHistoryGraph
Todo o Código

Esquemas

schematics_g5pey3GWqv.fzz

Processo de manufatura

  1. Animação de bitmap em ILI9341 TFT Touchscreen Display Shield
  2. Arduino Spybot
  3. FlickMote
  4. TV B-Gone caseiro
  5. Relógio mestre
  6. Encontre-me
  7. Arduino Power
  8. Tech-TicTacToe
  9. Exibindo uma imagem em uma tela LCD TFT com o Arduino UNO!
  10. Arduino Quadruped