【花式玩轉(zhuǎn)小熊派 】 上位機(jī)顯示光強(qiáng)變化曲線
這一節(jié),我們?cè)俅螌?duì)這個(gè)項(xiàng)目升級(jí)下,配個(gè)帶可縮放曲線的上位機(jī)讀取光強(qiáng)進(jìn)行顯示吧!本節(jié),你將了解工作中上位機(jī)和MCU的是如何來配合使用的。在工作中,我們常常需要對(duì)一些傳感器的某些數(shù)值進(jìn)行長(zhǎng)時(shí)間的測(cè)試和觀察,以了解傳感器的性能,在電子工程里,我們經(jīng)常聽到的測(cè)試曲線莫過于電池充放電曲線了,通過電池充放電曲線,我們很容易可以知道電池在實(shí)際使用過程中滿電和饋電的狀態(tài)以及電池的使用周期等等,今晚,我們就讓光強(qiáng)通過曲線顯示出來,用QT QCustomPlot來實(shí)現(xiàn),最終效果如下視頻操作所示:
一、QCustomPlot簡(jiǎn)介
以下是QCustomPlot的官網(wǎng):https://www.qcustomplot.com/
QCustomPlot是一個(gè)小型的Qt畫圖標(biāo)類,支持繪制靜態(tài)曲線、動(dòng)態(tài)曲線、多重坐標(biāo)曲線,柱狀圖,蠟燭圖等。只需要在項(xiàng)目中加入頭文件qcustomplot.h和qcustomplot.cpp文件,然后使一個(gè)widget提升為QCustomPlot類,即可使用。
二、更改上節(jié)的MCU端程序
這次,我們選用串口和上位機(jī)進(jìn)行通信,所以我們需要設(shè)計(jì)一個(gè)傳感器和上位機(jī)通信的協(xié)議,協(xié)議如下:序號(hào) 光強(qiáng)值 \r\n
當(dāng)序號(hào)大于等于65535時(shí),自動(dòng)清0。修改上節(jié)的main函數(shù)為如下:/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/*流水號(hào)*/
int serial_number = 0;
char display_buf[20] = {0};
char procol_buf[20] = {0};
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
/*串口初始化后加這個(gè)延時(shí),防止后面的printf打印亂碼*/
HAL_Delay(200);
LCD_Init();
LCD_Clear(BLACK);//清屏為黑色
LCD_ShowString(5, 10, 240, 32, 32, "BearPi LuxTest");//顯示字符串,字體大小32*32
Init_BH750();
timer_init(