逗比學樹莓派之lcd1602顯示
通過樹莓派GPIO連線LCD1602,使用wiringPi庫和其附帶的LCD庫進行顯示樹莓派的CPU溫度和記憶體使用情況。
1.首先按下圖連線好硬體電路圖:
2.然後在終端使用命令 sudo apt-get install git 安裝版本管理軟體Git 。
3.繼續在終端上使用命令 git clone https://github.com/qtsharp/pi-screen 將此小專案的倉庫克隆下來
根據pi-screen/README.md的描述,我們需要先將庫wiringPi 編譯好後,才能編譯此專案中的1602.c。因為1602.c使用了wiringPi 庫檔案提供的樹莓派1602 操控函式。
4. 分別在終端使用命令 git clone git://git.drogon.net/wiringPi
cd wiringPi
克隆好wiringPi 的git 倉庫後,我們需要的不是直接 “ ./build ”。因為此庫經過不斷改進,已經到了v2 版本,而pi-screen 的作者一直沒有更新。所以需要使用命令 : git reset --hard 98bcb20d9391ebde24f9eb1244f0d238fb1a1dab " 回到2月7日這個版本就可以了。
然後使用 " sudo ./build" 編譯這個庫就可以了。
6. 至此, wiringPi 庫編譯完後,我們就“ cd ../pi-screen ”回到pi-screen 目錄:
使用 “ gcc 1602.c -o 1602 -L lib -l wiringPi ” 編譯好這個列印檔案即可。
7. 然後使用 "sudo ./1602 便可以看到LCD1602顯示的資訊了。
1602.c的應用程式如下:
************************************/ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <wiringPi.h> #include <lcd.h> int main (int args, char *argv[]) { if (wiringPiSetup () == -1) exit (1) ; int fd = lcdInit (2, 16, 8, 11,10 , 0,1,2,3,4,5,6,7) ; if (fd == -1) { printf ("lcdInit 1 failed\n") ; return 1 ; } <span style="white-space:pre"> </span>sleep (1) ; //顯示屏初始化 lcdPosition (fd, 0, 0); lcdPuts (fd, " Raspberry Pi!"); //啟動資訊 sleep(1); if(argv[1]) { lcdPosition (fd, 0, 0) ; lcdPuts (fd, " ") ; //清空第一行 lcdPosition (fd, 0, 0) ; lcdPuts (fd, argv[1]) ; //命令列引數顯示至> 第一行 } FILE *fp; char temp_char[15]; //樹莓派溫度 char Total[20]; //總記憶體量 char Free[20]; //空閒記憶體量 while(1) { fp=fopen("/sys/class/thermal/thermal_zone0/temp","r"); //讀取樹莓派溫度 fgets(temp_char,9,fp); float Temp; Temp=atof(temp_char)/1000; lcdPosition (fd, 0, 1);lcdPrintf (fd, "%3.1fC", Temp) ; fclose(fp); fp=fopen("/proc/meminfo","r"); //讀取記憶體資訊 fgets(Total,19,fp); fgets(Total,4,fp); fgets(Free,9,fp); fgets(Free,19,fp); fgets(Free,4,fp); lcdPosition (fd, 7, 1); lcdPrintf (fd, "%3d/%3dMB", atoi(Free),atoi(Total)) ; fclose(fp); sleep(1); } return 0; }