引言
前一段時間寫了一篇關於樹莓派自制智能時鐘的文章,後來有熱心網友評論說顯示器費用較高、耗電量較大。為了解決這一問題,這兩天我又研究了一下,用LCD1602做顯示器,通過樹莓派I2C的模塊製作了智能時鐘,希望對大家有所幫助。
一、前期準備
● LCD1602顯示器
LCD1602顯示器如上圖所示,LCD1602中16表示每行可以顯示16個字符,顯示器中一共有2行。LCD1602反面上圓形所標註的地方是亮度調節旋鈕,新拿到的LCD1602可能會因為亮度過高看不到顯示器上的字符,此時調節該旋鈕即可。LCD1602一共有四個引腳,分別是GND、VCC、SDA與SCL。與樹莓派接線時,GND接0V引腳,VCC接5V引腳,SDA與SCL分別接樹莓派上SDA與SCL引腳。
● DHT11溫溼度傳感器
● 樹莓派
● Python3環境
● RPi.GPIO庫
● Adafruit DHT11庫
二、樹莓派實現方法
2.1 打開樹莓派的I2C通信
由於本文所使用的LCD1602背面焊接了I2C接口,因此需要開啟樹莓派的I2C模塊。首先在終端輸入sudo raspi-config命令,隨後點擊“5 Interfacing Options”,選擇“P5 I2C”,再點擊確定即可開啟I2C模塊。
2.2 查找I2C設備地址
將LCD1602與樹莓派連接後,需要查找其地址,也就是I2C通信地址。首先安裝I2C-tools,安裝命令為sudo apt-get install i2c-tools。完成安裝後使用命令sudo i2cdetect -y 1查找I2C通信地址,本文的查找結果如下:
從上圖可以看出,I2C通信地址為0x27。注意,本文使用的樹莓派是3B版,如果樹莓派版本較早,輸入的命令為sudo i2cdetect -y 0。
2.2 代碼實現說明
本文所使用的代碼我會在本文的評論中給出下載鏈接,歡迎大家批評指正。
本文提供的代碼包括兩個文件,一個是I2C_LCD_driver.py文件,一個是smart_lcd_screen.py文件,其中I2C_LCD_driver.py是我從網上下載的python包,這裡面將複雜的二進制為操作封裝成類,方便用戶使用,smart_lcd_screen.py是智能時鐘的實現代碼。由於本文的實現代碼與之前文章中的代碼邏輯類似,這裡不做過多解釋,下面本文簡要說明如何使用I2C_LCD_driver.py文件。
1. 在使用I2C_LCD_driver.py文件控制LCD1602顯示器時,首先要查看I2C_LCD_driver.py文件中ADDRESS是否與I2C通信地址一致,不一致需要修改。隨後需要在python代碼中實例化lcd類,python語句為:mylcd = I2C_LCD_driver.lcd()。隨後即可通過mylcd對象使用其中的方法。
2. 在該文件中lcd_strobe()方法與lcd_write_four_bits()方法均為位處理函數,主要作用被lcd類中的其他方法調用,我們變成很少會用到,這裡不做過多解釋。
3. lcd_write(cmd)函數是給LCD1602顯示器寫入命令函數。
4. lcd_write_char(char)函數是給LCD1602顯示器寫入八位字節。
5. lcd_display_string(string, line, pos)函數是給LCD1602顯示器寫入字符串,string是字符串內容,line記錄字符串顯示的行號,pos記錄了字符串在每一行從第幾位開始顯示。
6. lcd_clear()函數功能是清空顯示屏。
7. backlight(state)函數功能是打開或關閉背光,state=1時是打開背光,state=0時是關閉背光。
8. lcd_load_custom_chars()函數用於自定義字符。
閱讀更多 樹莓派對RasParty 的文章