Raspberry Pi PicoでPythonのお勉強 ~4~
BME280モジュールの続きですが、I2Cのリードでは123行目に前回とは別の記述がありました。
self.i2c.readfrom_mem_into(self.address, 0xF7, self._l8_barray)
これをMicroPython librariesで調べると
となっていて、前回調べた"i2c.readfrom_mem"とはちょっと違っています。i2c.readfrom_memはリターンがbytes型でしたが、I2C.readfrom_mem_intoではリターンが無くbufで指定した変数にI2Cで読み出したデータが格納されるようです。また読み出されるbyte数はbufで指定した変数の長さになるのでわざわざ指定する必要はないようです。BME280モジュールではbufにself._l8_barrayというbytearray型の変数を指定してそこにI2Cで読み出したデータを格納しています。
bytes型とbytearray型の違いですが、bytes型はimmutable(変更不可)でbytearray型は mutable(変更可)だそうです。なので、あとで書き換える必要がある場合はbytearray型を使えるI2C.readfrom_mem_intoを使った方が良いということになりますか。
array関連だとソース内に下記の記述がありました。
return array("i", (temp, pressure, humidity))
配列を作成するためにarray.array()というクラスがあるようです。配列要素の型を指定してから、それに続けて配列の初期化ができるみたいです。この辺も組み込み要素ではよく使うことになるのかな?