前提・実現したいこと
ラズベリーパイ初心者です。初めて投稿させて頂きます。
ラズパイマガジン2019年6月号の付録ボードとアマゾンで購入した付録専用キットを組み立て、Raspberry Pi 4のGPIOピンへ直接接続し、マガジンサイトから得たコード(oled_weather.py)を用いて、
温湿度気圧センサー(BME280)の値をOLEDグラフィックディスプレイ(SSD1306、128*64、0.96inch)に1秒おきに取得、表示させたい。
発生している問題・エラーメッセージ
プログラム実行中に、5回目あたりから表示が消えたり、 少しずつ表示開始位置が右へずれて反転した後、消えます。 表示フォントサイズを14から13にすると開始位置のずれは起きませんが、 やはり5回前後で表示が消え真っ黒になります。 エラーメッセージは出ません。
該当のソースコード(oled_weather.py)
Python
1 2import Adafruit_GPIO.SPI as SPI 3import Adafruit_SSD1306 4import pigpio 5import time 6import bme280 7 8from PIL import Image 9from PIL import ImageDraw 10from PIL import ImageFont 11 12BME280_ADDR = 0x76 13I2C_CH = 1 14 15RST = 23 16DC = 4 17SPI_CH = 0 18SPI_CS = 1 19 20font_path = "/usr/share/fonts/truetype/fonts-japanese-gothic.ttf" 21font_size = 14 22 23pi = pigpio.pi() 24 25sensor = bme280.bme280( pi, I2C_CH, BME280_ADDR ) 26sensor.setup() 27 28disp = Adafruit_SSD1306.SSD1306_128_64( rst=RST, dc=DC, spi=SPI.SpiDev( SPI_CH, SPI_CS, max_speed_hz=8000000)) 29 30disp.begin() 31disp.clear() 32disp.display() 33 34width = disp.width 35height = disp.height 36image = Image.new( '1', ( width, height ) ) 37 38jpfont = ImageFont.truetype(font_path, font_size, encoding='unic') 39 40draw = ImageDraw.Draw( image ) 41 42while True: 43 draw.rectangle( ( 0, 0, width, height ), outline=0, fill=0) 44 45 ( temp, humi, press ) = sensor.get_value() 46 47 draw.text( ( 2, 0 ), "温度:" + str( round( temp, 2 ) ) + "度", font=jpfont, fill=255 ) 48 draw.text( ( 2, 20 ), "湿度:" + str( round( humi, 2 ) ) + "%", font=jpfont, fill=255 ) 49 draw.text( ( 2, 40 ), "気圧:" + str( round( press, 2 ) ) + "hPa", font=jpfont, fill=255 ) 50 51 disp.image(image) 52 disp.display() 53 54 time.sleep(1) 55
試したこと
Thonny python IDEにて、センサーの値を取得するだけのプログラムを実行すると、
外付けモニターのShell上において、
温度、湿度、気圧の値が正しく1秒おきに無限に取得できます。
補足情報(FW/ツールのバージョンなど)
環境は以下の通りです。
お手数おかけしますが、よろしくお願いいたします。
Python 3.7.3
pi@raspberrypi:~ $ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Vendor ID: ARM
Model: 3
Model name: Cortex-A72
Stepping: r0p3
CPU max MHz: 1500.0000
CPU min MHz: 600.0000
BogoMIPS: 108.00
Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
pi@raspberrypi:~ $ ls
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
2019-11-13-181758_1920x1080_scrot.png
2019-11-13-181814_1920x1080_scrot.png
2019-11-13-181817_1920x1080_scrot.png
2019-11-13-181818_1920x1080_scrot.png
2019-11-13-181819_1920x1080_scrot.png
2019-11-13-181826_1920x1080_scrot.png
2019-11-13-181834_1920x1080_scrot.png
2019.6
3.py
4inch.py
Adafruit_Python_ILI9340
Adafruit_Python_ILI9341
Adafruit_Python_SSD1306
Desktop
Documents
Downloads
LCD1602.py
MagPi
Music
Pictures
Public
SwiftyGPIO.swift
Templates
Videos
pycache
accel.py
accel1.py
bcm2835-1.60
bcm2835-1.60.tar.gz
bluebacks
bme280.py
bmx055.py
bmx055HP.py
hello.swift
ili9340spi_rpi
image.png
inch.py
init_board.py
kazue.py
key.py
lcd_i2c.py
length.py
lis3dh.py
main.swift
motion.py
motor_foward.py
motor_pwm.py
motor_reverse.py
motor_stop.py
mu_code
oled_image.py
oled_text.py
oled_weather.py
over.py
raspi1-sample.zip
source.zip
sw_led.py
sw_read.py
swift-5.1.1-armv6-RPi01234-RaspbianBuster.tgz
taijuu.py
test.swift
usr
weather.py
ラズ.py
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/03 00:00