質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

ラズパイでi2c通信ができません

kankan_1111
kankan_1111

総合スコア8

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

1クリップ

18461閲覧

投稿2018/01/17 13:06

###前提・実現したいこと
raspberry piを使って、LCDのacm1602niを動かしたいのですが、エラーが出てしまいます。

###発生している問題・エラーメッセージ
Traceback (most recent call last):
/home/pi
acm1602(line6)
self.i2c.write_byte_data(self.ad, 0x00, 0x01)
IOError: [Errno 121] Remote I/O error

###該当のソースコード
#LCDの制御関数acm1602.py
import smbus, time
import RPi.GPIO as GPIO

class acm1602:
def init(self,ch,ad,blpin):
self.ch = ch
self.ad = ad
self.blpin = blpin
self.cursol = 1
self.blink = 1
self.display = 1
self.x = 0
self.y = 0

self.i2c = smbus.SMBus(ch) self.i2c.write_byte_data(self.ad, 0x00, 0x01) time.sleep(0.15) self.i2c.write_byte_data(self.ad, 0x00, 0x38) time.sleep(0.1) self.i2c.write_byte_data(self.ad, 0x00, 0x0f) time.sleep(0.1) self.i2c.write_byte_data(self.ad, 0x00, 0x06) time.sleep(0.1) GPIO.setmode(GPIO.BCM) GPIO.setup(self.blpin,GPIO.OUT) def clear(self): self.i2c.write_byte_data(self.ad, 0x00, 0x01) time.sleep(0.1) def set_display(self): buf = 0x08 + 0x04 * self.display + 0x02 * self.cursol + self.blink self.i2c.write_byte_data(self.ad, 0x00, buf) time.sleep(0.1) def set_cursol(self,buf): if buf != 0: buf = 1 self.cursol = buf self.set_display() def set_blink(self,buf): if buf != 0: buf = 1 self.blink = buf self.set_display() def move_home(self): self.x = 0 self.y = 0 self.i2c.write_byte_data(self.ad, 0x00, 0x02) time.sleep(0.1) def move(self,mx,my): self.x = mx self.y = my if self.x < 0: self.x=0 if self.x > 0x0f: self.x=0x0f if self.y < 0: self.y=0 if self.y > 1: self.y=1 oy=self.y*0x40 out=self.x+oy+0x80 self.i2c.write_byte_data(self.ad, 0x00, out) time.sleep(0.1) def write(self,buf): length = len(buf) i = 0 while i < length: if self.x > 0x0f: if self.y == 0: self.move(0x00,0x01) else: break out=int(buf[i].encode("hex_codec"),16) self.i2c.write_byte_data(self.ad,0x80,out) self.x = self.x + 1 i = i + 1 def backlight(self,buf): if buf != 0: GPIO.output(self.blpin, GPIO.HIGH) else: GPIO.output(self.blpin, GPIO.LOW)

#LCDに文字を出力する関数lcd.py
import smbus, time
from acm1602 import acm1602

lcd = acm1602( 1, 0x50, 4 )
lcd.move_home()
lcd.set_cursol( 0 )
lcd.set_blink( 0 )

lcd.backlight(1)

lcd.write( "Raspberry Pi" )

###試したこと
1.raspi-configでi2cを有効に設定
2./boot/config.txtにdtparam=i2c_baudrate=50000 と書き込んだ
3./etc/modprobe.d/i2c.confを作成し、options i2c_bcm2708 baudrate=50000と書き込んだ
4.$ sudo apt-get install i2c-tools python-smbus
$ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev の後
$ dmesg | grep i2cを実行すると、i2c-devの行だけが出てきてi2c-bcm2708のロードが確認できませんでした。
5./etc/modprobe.d/raspi-blacklist.confは存在しませんでした

###補足情報(言語/FW/ツール等のバージョンなど)
おそらくbcm2708がロードできていないのだと思いますが、ロード方法が分からないので困っています。調べうる限りの方法を試してみたが駄目でした。どなたか解答お願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

解決済

回答1

クリップ0

更新

2022/01/05

Python I2C

同じタグがついた質問を見る

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。