電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>TFT繪圖條形圖開源分享

TFT繪圖條形圖開源分享

2022-10-31 | zip | 0.35 MB | 次下載 | 2積分

資料介紹

描述

概述

每個人都從連接到他們的微控制器的傳感器讀取數(shù)據(jù)并使用數(shù)字顯示它,但是您是否曾經(jīng)想以一種新的方式顯示它們?圖形是解決方案。圖的想法很好,但是有一個問題;它涉及用大量計算破壞你的頭腦。在 TFT LCD 上創(chuàng)建圖形特別困難。

該項目將使您熟悉圖形的概念,并且您將能夠創(chuàng)建自己的條形圖并對其進行個性化。所有的硬計算都會為您完成,您所要做的就是編輯 5 個變量,然后您就有了圖表。

功能性

該項目旨在使繪圖變得有趣和通用,讓您能夠在幾秒鐘內(nèi)繪制數(shù)據(jù),圖表完全靈活,可以個性化以使其成為您的,用戶可以編輯圖表的顏色、標(biāo)題、顯示的數(shù)據(jù)和別的。該項目允許您在同一個圖表上繪制 1 到 4 個值,這是圖表的多功能性。

?
?
poYBAGNYtiCAPkpbABrxRObDY7c340.jpg
?
1 / 9 ?一根標(biāo)有標(biāo)簽
?

該項目具有三個功能,第一個顯示專業(yè)介紹,如果您愿意,可以排除。

?
poYBAGNYtiuAGlXCAA8PrCN4rD0668.jpg
專業(yè)介紹
?

第二個函數(shù)將繪制圖形,它還將標(biāo)記 x 和 y 軸。

?
poYBAGNYtj2Abw_xAB0K_StPH68963.jpg
第二個功能
?

最后一個函數(shù)將讀取所選傳感器的值,映射這些值,然后在圖表上繪制塊/條。

?
pYYBAGNYtkuAK3NsABtYq6DcYuU269.jpg
繪圖塊
?

下圖說明了該項目的功能概述。

?
pYYBAGNYtk2ARApCAABawKVZ-7I985.png
功能概述
?

該設(shè)備不斷讀取傳感器并在圖表上實時顯示數(shù)據(jù),因此用戶可以輕松地實時監(jiān)控他/她的房子和他/她的辦公室的溫度。這是代碼概述的圖像。

?
pYYBAGNYtlKAfLe5AAAv5K-5zGQ596.png
代碼概述
?
  • Read Sensors將讀取連接到 Arduino Mega 的傳感器的值。
  • Process Data將自動將傳感器值映射到圖形的大小。
  • Graph Data將在圖表上顯示映射值。

要想繼續(xù)這個項目,你所需要知道的只是對 TFT LCD 上的東西如何定位有一個廣泛的了解,這將在下面解釋。

我將整個 LCD 稱為畫布,這是繪制所有內(nèi)容的地方,所有 TFT LCD 庫的工作方式都非常相似,因此此代碼中的函數(shù)也應(yīng)該與其他庫一起使用。下面是在 TFT LCD 上繪制的四邊形(矩形)的草圖。

?
pYYBAGNYtlWAFLrRAAELLbQ0g1Y204.png
形狀草圖
?

在這個草圖中,繪制了一個矩形,每個點都被標(biāo)記,用于繪制矩形的代碼行是這樣的,

tft.fillRect(originX, originY,  sizeX, sizeY, Colour);
  • originX在上圖中用'z'表示,這是從屏幕右側(cè)到形狀的距離。
  • originY在草圖上用“x”表示,這是從屏幕頂部到形狀的距離。
  • sizeX是形狀在 x 軸上的大小,這是形狀的長度。
  • sizeY是形狀在 y 軸上的大小,這是形狀的高度。

好處

運營項目用戶受益于:

  • 在 TFT LCD 上繪制條形圖
  • 在幾秒鐘內(nèi)完成

建設(shè)項目

1 步:所需設(shè)備

我使用兩個電位器設(shè)計了這個例子,盡管一個可以使用任何傳感器來繪制圖形。這是材料清單。

  • 1、面包板
  • 2、電位器
  • 跳線
?
poYBAGNYtlyAEGZlAA9d_-d-n1g791.jpg
所有組件
?

第2連接電路

下面的示意圖顯示了電路的接線方式,只需卡在 TFT LCD 上并連接電位器。

?
pYYBAGNYtmGAMmGCAAKTrHNu6Hw423.png
原理圖
?

第 3 步:確認代碼

代碼主要分為三個部分:

  • 設(shè)置圖表
  • 讀取傳感器值
  • 繪制圖形

下面對這些部分進行說明。

  • 設(shè)置圖表_
// draw title
 tft.setCursor(10, 10);
 tft.setTextColor(BLUE);
 tft.setTextSize(4);
 tft.println(graphName);
 // draw outline
 tft.drawLine(originX, originY, (originX + sizeX), originY, graphColor);
 tft.drawLine(originX, originY, originX, (originY - sizeY), graphColor);
 // draw lables
 for(int i = 0; i < numberOfMarks; i++)
 {
   tft.drawLine(mark[i], originY, mark[i], minorSizeY, graphColor);
 }
 // draw lable names
 for(int i = 0; i < numberOfMarks; i += 2)
 {
   tft.setCursor((mark[i] + 6), (originY + 10));
   tft.setTextColor(graphColor);
   tft.setTextSize(2);
   tft.println(graphBlock[i / 2]);
 }
 // draw numbers
 for(int i = 0; i < 6; i++)
 {
   tft.drawLine(originX, (originY - number[i]), minorSizeX, (originY - number[i]), graphColor);
 }

這部分代碼將使用給定的參數(shù)以及自動計算的參數(shù)繪制圖形的每個特征,繪制圖形的標(biāo)題,然后標(biāo)記輪廓,然后標(biāo)記 x 和 y 軸。

  • 讀取傳感器
// get the values of the sensors
 valueBlock[0] = analogRead(A14);
 valueBlock[1] = analogRead(A15);
 if(proDebug)
 {
   Serial.println(valueBlock[0]);
   Serial.println(valueBlock[1]);
   Serial.println("");
 }
 // map the sensor values to the graph size
 for(int i = 0; i < numberOfBlocks; i++)
 {
   posBlock[i] = map(valueBlock[i], 0, graphRange, originY, (originY - sizeY));
 }

此代碼將讀取連接到引腳 A14 和 A15 的傳感器,然后將根據(jù)圖形的大小映射結(jié)果。

  • 繪制圖形
// draw the blocks - draw only if value differs
 for(int i = 0; i < numberOfBlocks; i++)
 {
   if(posBlock[i] > (prevPosBlock[i] + 2) || posBlock[i] < (prevPosBlock[i] - 2))
   {
     prevPosBlock[i] = posBlock[i];
     tft.fillRect((mark[i * 2] + 1), (originY - sizeY), (boxSize - 1), sizeY, WHITE);
     delay(10);
     tft.fillRect((mark[i * 2] + 1), posBlock[i], (boxSize - 1), (originY - posBlock[i]), blockColor);
   }
 }

代碼的最后一部分將繪制圖表的塊/條,整個部分和其他部分一樣靈活,可以適應(yīng)用戶的喜好,在下一部分中學(xué)習(xí)設(shè)置它們。

個性圖表

有一個顯示兩個電位器值的圖表很好,但我相信每個人都想在圖表上顯示他們自己的值,從溫度到太陽輻射,使用 1 塊或 4 塊,這就像編輯一樣簡單一個變量。閑置變量是您必須編輯的所有內(nèi)容。

bool proDebug = 0;       
bool displayValues = true;
uint16_t graphColor = BLUE;
uint16_t blockColor = GREEN;
String graphName = "Bar Chart";
String graphBlock[] = {"Pot1", "Pot2"};
int graphRange = 1024;
int numberOfBlocks = 2;
  • proDebug啟用打印到串口監(jiān)視器,其默認位置為 0(關(guān)閉),打開時(1/true),設(shè)備需要打開串口監(jiān)視器,然后將值打印到串口監(jiān)視器,非常適合故障排除。
  • displayValues調(diào)節(jié)是否應(yīng)為每個條顯示值,打開時,每個傳感器的值顯示在每個塊的底部,默認為 true。
  • graphColor設(shè)置圖表的顏色,x 和 y 軸上的線條和數(shù)字將以所選顏色顯示。
  • blockColour設(shè)置圖表的塊/條顯示的顏色。
  • graphName設(shè)置圖表的名稱,它以藍色顯示在圖表的頂部。
  • graphBlocks保存圖表上每個塊/條的名稱。
  • graphRange是傳感器可以輸出的最高數(shù)字,此數(shù)字對于繪圖至關(guān)重要,必須正確設(shè)置,如果要顯示原始模擬引腳的值,如電位器,請將其設(shè)置為 1024,模擬引腳的最大值. 如果您使用的是輸出手勢值的傳感器,例如溫度傳感器,則可以將該值設(shè)置為 50 之類的高數(shù)字。(請注意,該圖表尚未使用負數(shù)進行測試)
  • numberOfBlocks表示圖表中需要的塊數(shù),確保該數(shù)等于字符串中的元素數(shù)graphBlock[]

所有其他值都是自動計算的,這樣您就可以減少擔(dān)心代碼的時間,而有更多時間享受圖表。

增加價值

請按照以下指南深入了解如何添加或減去塊并編輯塊顯示的值。

?
pYYBAGNYtmSAf2BFAAIGaD-0s5g895.png
?
1 / 7 ?打開項目
?

走得更遠_

您可以進一步試驗該項目,嘗試編輯 originX、originY、sizeX 和 sizeY 常量,以使您的圖形在屏幕上具有不同的大小和位置。主草圖附有一個頭文件,它包含一些顏色的顏色代碼,嘗試更改圖表和條形的顏色。就是這樣,您的個性化圖表已準(zhǔn)備就緒。

圖書館

  • Elegoo 庫 - 版權(quán)所有 (c) 2012 Adafruit Industries 在BSD 許可下

背景

我在網(wǎng)上瀏覽了一些靈感,發(fā)現(xiàn)沒有在 TFT LCD 上繪圖的項目,反正我正在使用的那個也沒有。所以我開始從頭開始構(gòu)建一個,然后決定我應(yīng)該給它一個界面,允許整個圖表通過只編輯少量變量來適應(yīng)任意數(shù)量的傳感器,所以我忙于數(shù)學(xué)并得到了這個項目完成。這樣一來,如果想要繪制其他數(shù)據(jù)圖表,就不必一遍又一遍地重寫代碼(節(jié)省 iCloud 空間)。

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1GBT1094.11-2022電力變壓器第11部分:干式變壓器
  2. 14.12 MB   |  3次下載  |  免費
  3. 2PT500齒輪傳動動力學(xué)綜合測試實驗臺
  4. 0.16 MB   |  3次下載  |  免費
  5. 3FT-7800R對講機維修手冊附原理圖
  6. 3.35 MB   |  2次下載  |  免費
  7. 4串口工具UartAssist5.0.exe
  8. 0.60 MB   |  2次下載  |  免費
  9. 5爬電距離和電氣間隙計算
  10. 0.75 MB   |  2次下載  |  1 積分
  11. 6UC3584DW次級側(cè)后置穩(wěn)壓器EVM板原理圖
  12. 38.97KB   |  2次下載  |  免費
  13. 7UCC38C42 25瓦自諧振復(fù)位正激變換器
  14. 320.6KB   |  1次下載  |  免費
  15. 8使用15個時鐘周期的ADS7841和ADS7844
  16. 188.55KB   |  1次下載  |  免費

本月

  1. 1ACDC變換器的原理圖免費下載
  2. 0.26 MB   |  65次下載  |  免費
  3. 2無刷電機控制方案設(shè)計合作
  4. 1.05 MB   |  22次下載  |  免費
  5. 3美的超薄電磁爐TM-S1-09B主板原理圖
  6. 0.08 MB   |  20次下載  |  免費
  7. 4純電動汽?的主要部件及?作原理
  8. 5.76 MB   |  12次下載  |  5 積分
  9. 5GP328和GP88S對講機的維修實列資料合集免費下載
  10. 0.03 MB   |  10次下載  |  10 積分
  11. 6舒爾SLX4無線話筒接收機原理圖:二次變頻超外差部分
  12. 0.27 MB   |  8次下載  |  免費
  13. 7i.MX Linux開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板
  14. 17.86 MB   |  7次下載  |  免費
  15. 8Type-C VL160數(shù)據(jù)手冊
  16. 0.92 MB   |  7次下載  |  3 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191363次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分