Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Graphiques TFT :Graphiques de l'historique en direct

Composants et fournitures

Arduino Mega 2560
× 1
Capteur de température et d'humidité DHT11 (4 broches)
× 1
Écran LCD TFT Elegoo 2,8 pouces
× 1
Câbles de raccordement (générique)
× 1
Planche à pain (générique)
× 1

Applications et services en ligne

Éditeur Web Arduino

À propos de ce projet

Présentation

Avez-vous déjà voulu représenter graphiquement vos données de manière professionnelle sur un écran LCD TFT ? Mais il y a un problème, il est particulièrement difficile de créer un graphique à cause de tous les calculs impliqués.

Ce projet vise à éliminer tout ce stress de vos épaules et à vous permettre de créer votre propre graphique historique personnalisé, en représentant tout ce que vous voulez en quelques secondes seulement. Tout ce que vous avez à faire est d'éditer 5 variables.

Vidéo

Image

Fonctionnalité

Ce projet vise à rendre le graphique facile et amusant pour tout le monde, tous les calculs difficiles sont terminés, tout ce que l'utilisateur a à faire est d'éditer 2 variables et de choisir la couleur de son graphique. Voici quelques exemples montrant la diversité du graphique.

Le graphique tracera la température en direct, à des intervalles de 6 secondes, la valeur sera affichée par un point, le point sera relié aux autres points par une ligne. Les secondes écoulées depuis le début du code seront affichées sur l'axe des x avec la plage des valeurs sur l'axe des y.

Le projet fonctionne simplement, l'Arduino Mega lit la valeur du capteur DHT 11 et stocke la température dans une variable, il trace ensuite la valeur sur le graphique personnalisé. Voici un schéma illustrant la vue d'ensemble des fonctionnalités.

Voici une image montrant l'aperçu du code du projet.

  • Lire la température lira la température du capteur
  • Données de processus traitera la lecture du capteur et la mappera sur le graphique.
  • Données graphiques affichera les valeurs mappées sur le graphique.

Tout ce que vous devez savoir pour pouvoir poursuivre ce projet est une compréhension globale de la façon dont les choses sont positionnées sur l'écran LCD TFT, ceci est expliqué ci-dessous.

J'appelle tout l'écran LCD le canevas, c'est là que tout est dessiné, toutes les bibliothèques LCD TFT fonctionnent de manière assez similaire, donc les fonctions de ce code devraient également fonctionner avec d'autres bibliothèques. Ci-dessous se trouve un croquis d'un quadrilatère (un rectangle) dessiné sur un écran LCD TFT.

Dans ce croquis, un rectangle est dessiné, chaque point est étiqueté, la ligne de code qui est utilisée pour dessiner un rectangle est la suivante,

tft.fillRect(originX, originY, sizeX, sizeY, Colour); 
  • origineX est représenté par 'z' sur le schéma ci-dessus, c'est la distance entre la droite de l'écran et la forme.
  • origineY est représenté par « x » sur le croquis, c'est la distance entre le haut de l'écran et la forme.
  • tailleX est la taille de la forme sur l'axe des x, c'est la longueur de la forme.
  • tailleY est la taille de la forme sur l'axe des y, c'est la hauteur de la forme.

Avantages

Le utilisateur exploitation ce projet sera avantage Dans :

  • Graphiquer les données du capteur sur un écran LCD TFT
  • Faites-le en quelques secondes

Construire le projet

Étape 1 : Obligatoire Appareil

Ce projet utilise un capteur de température et d'humidité DHT 11 pour recevoir les données de température, mais n'importe quel capteur peut être utilisé, le changement de capteur sera expliqué plus loin.

  • 1, Arduino Mega
  • 1, écran LCD TFT Elegoo 2,8'
  • 1, capteur DHT 11
  • 1, Planche à pain
  • Cavaliers

Étape 2 : Connexion le Circuit

Voici les schémas du projet, attachez simplement le capteur DHT 11 à l'Arduino Mega et vous êtes prêt à partir.

Étape 3 :Reconnaissance du code

Il y a 3 parties principales dans le code :

  • Configurer le graphique
  • Lire la température
  • Dessiner un graphique

Ces sections sont expliquées ci-dessous.

  • Configurer le graphique
// dessiner le titre tft.setCursor(10, 10); // définit le curseur tft.setTextColor(BLUE); // définit la couleur du texte tft.setTextSize(4); // définit la taille du texte tft.println(graphName); // dessine le contour tft.drawLine(originX, originY, (originX + sizeX), originY, graphColor); tft.drawLine(origineX, origineY, origineX, (origineY - tailleY), graphColor); // dessine des étiquettes pour (int i =0; i  

Cette partie du code tracera le contour du graphique, elle tracera les lignes des axes x et y, elle tracera également les marques et étiquettera l'axe y avec des valeurs.

  • Lire Température
chk =DHT.read11(22); temp =(DHT.temperature); 

Cette courte ligne de code lira la température du capteur DHT 11 et la stockera ensuite dans une variable.

  • Dessiner Graphique
if(blockPos <8) { // affiche l'heure tft.setCursor((mark[valuePos] - 5), (originY + 16)); tft.setTextColor(graphColor, WHITE); tft.setTextSize(1) ; tft.println(timeBlock[valuePos]); // mappe la valeur locationBlock[valuePos] =map(temp, 0, graphRange, originY, (originY - sizeY)); // dessine le point tft.fillRect((mark[valuePos] - 1), (locationBlock[valuePos] - 1), markSize, markSize, pointColor); // essayez de vous connecter au point précédent if(valuePos !=0) { tft.drawLine(mark[valuePos], locationBlock[valuePos], mark[(valuePos - 1)], locationBlock[(valuePos - 1)], lineColor); } blockPos++; } else { // efface le canevas du graphique tft.fillRect((originX + 2), (originY - sizeY), sizeX, sizeY, WHITE); // mappe la valeur - point actuel locationBlock[valuePos] =map(temp, 0, graphRange, originY, (originY - sizeY)); // point de dessin - point actuel tft.fillRect((mark[7]), (locationBlock[valuePos] - 1), markSize, markSize, pointColor); // dessine tous les points for(int i =0; i <8; i++) { tft.fillRect((mark[(blockPos - (i + 1))] - 1), (locationBlock[(valuePos - i)] - 1), markSize, markSize, pointColor); } // dessine toutes les lignes for(int i =0; i <7; i++) { tft.drawLine(mark[blockPos - (i + 1)], locationBlock[valuePos - i], mark[blockPos - (i + 2)], locationBlock[valuePos - (i + 1)], lineColor); } // changer les étiquettes de temps pour(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++; 

Cette longue partie de code dessinera les points du graphique à leurs valeurs puis les joindra par des lignes, le code vérifie si le canevas du graphique est rempli, si c'est le cas, il commencera à éjecter la première valeur du graphique et en déplaçant les autres vers le haut pour laisser de l'espace à la nouvelle valeur à insérer, s'il reste encore de l'espace, l'appareil continuera à ajouter des valeurs à intervalles.

Personnaliser le graphique

La chose amusante à propos de ce graphique est qu'il est 100% modifiable, donc l'utilisateur peut modifier la taille du graphique, son emplacement et sa couleur, l'utilisateur peut également afficher n'importe quelle donnée sur le graphique grâce à sa flexibilité. Sont toutes les variables dont vous devriez vous soucier.

bool proDebug =0 ; uint16_t graphColor =BLEU; uint16_t pointColor =NOIR; uint16_t lineColor =VERT; String graphName ="Time Graph" ; int graphRange =50 ; int markSize =3 ; 
  • proDebug est l'utilitaire de débogage intégré au projet, il est défini sur 0 par défaut, lorsqu'il est défini sur 1/vrai, il imprimera la température actuelle sur le moniteur série, il s'agit d'un utilitaire de débogage, notez que s'il est activé, le moniteur série est doit être ouvert pour que le code s'exécute.
  • graphColor définit la couleur du graphique, les lignes x et y et leurs étiquettes sont définies sur cette couleur.
  • pointCouleur représente la couleur du point illustrant la valeur sur le graphique.
  • lineCouleur définit la couleur de la ligne joignant les points sur le graphique à la couleur sélectionnée.
  • graphRange est l'épine dorsale du graphique, notez qu'il est vraiment important qu'il soit réglé correctement, il représente la valeur maximale qui peut être représentée graphiquement, j'utilise un capteur de température, je ne m'attendrais pas à ce que la valeur dépasse 50 ºC, j'ai donc réglé le valeur à 50, si vous souhaitez représenter graphiquement une entrée analogique brute, vous pouvez définir le graphRange sur 1024, la valeur maximale qu'une broche analogique peut afficher.
  • markSize représente la taille du point marquant la valeur du capteur sur le graphique, la valeur représente la longueur du carré.

Et c'est tout, c'est tout ce dont vous avez à vous soucier, le reste des variables sera calculé automatiquement par l'Arduino.

Changement le Valeur

C'est bien de représenter graphiquement la température dans votre pièce, mais c'est encore mieux si vous pouviez afficher n'importe quelle donnée de capteur sur le graphique, et vous pouvez, en éditant simplement quelques lignes de code, vous pouvez représenter graphiquement n'importe quelle donnée de l'humidité du sol à la lumière intensité. Voici un guide pour le faire.

En route Plus

Vous pouvez aller plus loin dans l'expérimentation du projet, essayez de modifier les constantes originX, originY, sizeX et sizeY pour donner à votre graphique une taille et une position différentes à l'écran. Il y a un fichier d'en-tête attaché au croquis principal, il contient les codes de couleur de certaines couleurs, essayez de changer la couleur du graphique et des barres. Et ça y est, votre graphique personnalisé est prêt.

Bibliothèques

  • Bibliothèques Elegoo - Copyright (c) 2012 Adafruit Industries sous licence BSD.
  • DHT - Auteur Rob Tillaart, cette bibliothèque est dans le domaine public

Contexte

J'ai récemment publié un projet qui représente graphiquement 1, 2, 3 ou 4 valeurs sur un graphique à barres. J'ai décidé de publier un autre modèle de graphique. Il n'y a pas de modèles pour les graphiques à barres qui n'ont pas de lignes partout menaçant de semer la confusion, j'ai donc décidé de refaire le calcul et de publier un projet simple qui permet à chacun de représenter graphiquement ses données sur un graphique historique, en direct.

Code

TFTHistoryGraph
L'ensemble du Code

Schémas

schemas_g5pey3GWqv.fzz

Processus de fabrication

  1. Animation bitmap sur le bouclier d'affichage à écran tactile TFT ILI9341
  2. Arduino Spybot
  3. FlickMote
  4. Téléviseur maison B-Gone
  5. horloge maîtresse
  6. Trouvez-moi
  7. Puissance Arduino
  8. Tech-TicTacToe
  9. Afficher une image sur un écran LCD TFT avec Arduino UNO !