<Python>Raspberry Pi でLCDを使う 秋月AE-AQM0802+PCA9515
Raspberry PiでLCDを使うサンプルです。
秋月電子通商さんで下記のものを購入しました。
Raspberry Pi のGPIO端子に合わせたピン配置となってますので、
直接GPIOにさすこともできます。
これだと配線図もいらないですね。
参考にしたコードはここです。
- LCD表示
WiringPi-Pythonを使ってAQM0802A / ST7032i LCD表示 - Qiita
- カタカナへの変換
I2C 16×2 LCDで日本語(カタカナ)を表示する(pythonプログラムあり) | 空飛ぶラズベリーパイ
こんなに便利な情報がいつでも手に入るなんてありがたいです。
素人でも使えました。
本当にありがとうございます。
参考にしたコードをちょこっと変更しました。
内容はさっぱりわかりませんけどね~😅
lcd_aqm0802a.py # -*- coding:utf-8 -*- import wiringpi as wp import time class LCD_AQM0802A: def __init__(self, i2c_addr): self.i2c = wp.I2C() self.fd = self.i2c.setup(i2c_addr) self._init() def _init(self): self.i2c.writeReg8(self.fd, 0x00, 0x38) # function set: 8 bit, 2 line self.i2c.writeReg8(self.fd, 0x00, 0x39) # function set: 8 bit, 2 line, IS=1 self.i2c.writeReg8(self.fd, 0x00, 0x14) # internal OSC freq self.i2c.writeReg8(self.fd, 0x00, 0x70) # contrast set self.i2c.writeReg8(self.fd, 0x00, 0x56) # Power/ICON/Constrast self.i2c.writeReg8(self.fd, 0x00, 0x6c) # Follower control time.sleep(0.2) # wait time > 200 ms self.i2c.writeReg8(self.fd, 0x00, 0x38) # function set: 8 bit, 2 line, IS=0 self.i2c.writeReg8(self.fd, 0x00, 0x06) # Entry mode set self.i2c.writeReg8(self.fd, 0x00, 0x0c) # Display on/off self.clear() # Clear display def set_contrast(self, contrast): """ Set contrast (0 - 15). """ if contrast < 0: contrast = 0 if contrast > 0x0f: contrast = 0x0f self.i2c.writeReg8(self.fd, 0x00, 0x39) self.i2c.writeReg8(self.fd, 0x00, 0x70 + contrast) def clear(self): """ Clear display and return to home position. """ self.i2c.writeReg8(self.fd, 0x00, 0x01) # clear display time.sleep(0.01) # wait time > 1.08 ms self.i2c.writeReg8(self.fd, 0x00, 0x02) # return home time.sleep(0.01) def set_entry_mode(self, increment, shift): mode = 0x04 if (increment): mode = mode + 2 if (shift): mode = mode + 1 self.i2c.writeReg8(self.fd, 0x00, mode) def set_cursor(self, y, x): """ set cursor location (address counter).""" if x < 0: x = 0 if y < 0: y = 0 ddram_addr = y * 0x40 + x self.i2c.writeReg8(self.fd, 0x00, 0x80 + ddram_addr) # set DDRAM address def print(self, str, wait = 0): for c in str: self.i2c.writeReg8(self.fd, 0x40, ord(c)) if (wait > 0): time.sleep(wait) def katakana(self, text): list1a = u"「。、」ヲ・ィァェゥォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜" list1b = u"アァイィウゥエェオォカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ" list2a = u"ガギグゲゴザジズゼゾダヂヅデドバビブベボ" list2b = u"ザシジスズセゼソゾタダチヂッツナニヌネノ" list3a = u"パピプペポ" list3b = u"ナニヌネノ" text_changed = "" for l in text: if list1a.find(l) >= 0:#カタカナを変換 text_changed += list1b[list1a.find(l)] elif list2a.find(l) >= 0:#濁音を清音+濁点に text_changed += list2b[list2a.find(l)] text_changed += u"マ" elif list3a.find(l) >= 0:#半濁音を清音+半濁点に text_changed += list3b[list3a.find(l)] text_changed += u"ミ" else:#その他の文字はそのままにする text_changed += l return text_changed
上のコードをlcd_aqm0802a.pyに保存して、下のコードを適当な名前で保存すればLCDが使えます。
GPIOやI2Cを初めて使う方はインストールが必要です。
バックライトも点けてみました。
import RPi.GPIO as GPIO import time from lcd_aqm0802a import LCD_AQM0802A if __name__ == '__main__': lcd = LCD_AQM0802A(0x3e) #addr GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.OUT) #Backlight # show characters in 2 lines lcd.set_cursor(0, 0) lcd.print(lcd.katakana("ナルシーNote")) lcd.set_cursor(1, 0) lcd.print('Sample') time.sleep(2) GPIO.output(4,GPIO.HIGH) #Backlight #set contract contracts = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0] for num in contracts: lcd.set_contrast(num) time.sleep(0.05) time.sleep(2) # LCD clear lcd.clear() # ticker lcd.set_entry_mode(True, True) lcd.set_cursor(0, 8) lcd.print('cars-narcy.hatenablog.com', 0.3) lcd.clear() GPIO.output(4,GPIO.LOW) #Backlight GPIO.cleanup()
ご使用に関しては自己責任でよろしくお願い申し上げます。
2021年2月にpaizaラーニングでPythonを受講しました。
コメントでアドバイスをいただけると幸いです。
↓ほしい物リスト↓