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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

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

Q&A

1回答

2961閲覧

ラズパイにて、MCP3208を用いたADCについて

BluePi85

総合スコア22

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

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

0グッド

1クリップ

投稿2018/09/17 11:16

ラズパイGPIO,MCP3208を用いてADコンバータの作成に取り組んでいます。

GUIで、MCP3208より読み込んだ値を表示させたく
Qt Designerを用いて以下のコードを作成致しました。

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ADC.ui' # # Created by: PyQt5 UI code generator 5.10.1 # # WARNING! All changes made in this file will be lost! import time import sys #from datetime import datetime # 現在時刻 import spidev from PyQt5 import QtCore, QtGui, QtWidgets ############################################################################# VrefAD = 5.0 # 基準電圧入力 Sampling = 10 class Ui_Dialog(object): # ================================================================ # def __init__(self): self._timer = QtCore.QTimer() self._timer.timeout.connect(self.run) spi = spidev.SpiDev() spi.open(0,0) spi.max_speed_hz = 1000000 # ================================================================ # def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400, 337) self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) self.buttonBox.setGeometry(QtCore.QRect(30, 290, 341, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayoutWidget = QtWidgets.QWidget(Dialog) self.gridLayoutWidget.setGeometry(QtCore.QRect(30, 10, 231, 191)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.lcdNumber_2 = QtWidgets.QLCDNumber(self.gridLayoutWidget) self.lcdNumber_2.setObjectName("lcdNumber_2") self.gridLayout.addWidget(self.lcdNumber_2, 1, 1, 1, 1) self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) self.lcdNumber_1 = QtWidgets.QLCDNumber(self.gridLayoutWidget) self.lcdNumber_1.setObjectName("lcdNumber_1") self.gridLayout.addWidget(self.lcdNumber_1, 0, 1, 1, 1) self.label_3 = QtWidgets.QLabel(self.gridLayoutWidget) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) self.lcdNumber_4 = QtWidgets.QLCDNumber(self.gridLayoutWidget) self.lcdNumber_4.setObjectName("lcdNumber_4") self.gridLayout.addWidget(self.lcdNumber_4, 3, 1, 1, 1) self.lcdNumber_3 = QtWidgets.QLCDNumber(self.gridLayoutWidget) self.lcdNumber_3.setObjectName("lcdNumber_3") self.gridLayout.addWidget(self.lcdNumber_3, 2, 1, 1, 1) self.label = QtWidgets.QLabel(self.gridLayoutWidget) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.btnStart = QtWidgets.QPushButton(Dialog) self.btnStart.setGeometry(QtCore.QRect(50, 220, 101, 31)) self.btnStart.setObjectName("btnStart") self.btnStop = QtWidgets.QPushButton(Dialog) self.btnStop.setGeometry(QtCore.QRect(180, 220, 101, 31)) self.btnStop.setObjectName("btnStop") self.actionOnStart = QtWidgets.QAction(Dialog) self.actionOnStart.setObjectName("actionOnStart") self.actionOnStop = QtWidgets.QAction(Dialog) self.actionOnStop.setObjectName("actionOnStop") self.retranslateUi(Dialog) self.buttonBox.accepted.connect(Dialog.accept) self.buttonBox.rejected.connect(Dialog.reject) self.btnStart.clicked.connect(self.OnStart) self.btnStop.clicked.connect(self.OnStop) QtCore.QMetaObject.connectSlotsByName(Dialog) # ================================================================ # def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label_2.setText(_translate("Dialog", "AD2")) self.label_3.setText(_translate("Dialog", "AD3")) self.label_4.setText(_translate("Dialog", "AD4")) self.label.setText(_translate("Dialog", "AD1")) self.btnStart.setText(_translate("Dialog", "S t a r t")) self.btnStop.setText(_translate("Dialog", "S t o p")) self.actionOnStart.setText(_translate("Dialog", "OnStart")) self.actionOnStop.setText(_translate("Dialog", "OnStop")) # ================================================================ # # START def OnStart(self): # **************************************************************** # # タイマー開始 self._timer.start(Sampling) # ================================================================ # # def run(self): # **************************************************************** # # AD ADC = MCP3208_Class(ref_volts = VrefAD) # AD1 ReadVoltAD1 = ADC.GetVoltage(ch=0) # AD2 ReadVoltAD2 = ADC.GetVoltage(ch=1) # AD3 ReadVoltAD3 = ADC.GetVoltage(ch=2) # AD4 ReadVoltAD4 = ADC.GetVoltage(ch=3) # **************************************************************** # # 値を読み取った値を表示する # AD1 self.lcdNumber_1.display('{:.3f}'.format(ReadVoltAD1)) # AD2 self.lcdNumber_2.display('{:.3f}'.format(ReadVoltAD2)) # AD3 self.lcdNumber_3.display('{:.3f}'.format(ReadVoltAD3)) # AD4 self.lcdNumber_4.display('{:.3f}'.format(ReadVoltAD4)) # print("") # print(datetime.now().strftime("%Y/%m/%d %H:%M:%S") + ", AlphaAD1 = " + str('{:.3f}'.format(AlphaAD1)) + ", AlphaAD2 = " + str('{:.3f}'.format(AlphaAD2)) + ", AlphaAD3 = " + str('{:.3f}'.format(AlphaAD3)) + ", AlphaAD4 = " + str('{:.3f}'.format(AlphaAD4))) # print(datetime.now().strftime("%Y/%m/%d %H:%M:%S") + ", BeatAD1 = " + str('{:.3f}'.format(BeatAD1)) + ", BeatAD2 = " + str('{:.3f}'.format(BeatAD2)) + ", BeatAD3 = " + str('{:.3f}'.format(BeatAD3)) + ", BeatAD4 = " + str('{:.3f}'.format(BeatAD4))) # print(datetime.now().strftime("%Y/%m/%d %H:%M:%S") + ", AD1 = " + str('{:.3f}'.format(ReadVoltAD1)) + "[V], AD2 = " + str('{:.3f}'.format(ReadVoltAD2)) + "[V], AD3 = " + str('{:.3f}'.format(ReadVoltAD3)) + "[V], AD4 = " + str('{:.3f}'.format(ReadVoltAD4)) + "[V]") # **************************************************************** # # self._timer.start(Sampling) # ================================================================ # # STOP def OnStop(self): ADC.Cleanup() self._timer.stop() ############################################################################# #MCP3208から値を取得するクラス class MCP3208_Class: """コンストラクタ""" def __init__(self, ref_volts): self.ref_volts = ref_volts self.spi = spidev.SpiDev() self.spi.open(0,0) """電圧取得""" def GetVoltage(self,ch): raw = self.spi.xfer2([1,(8+ch)<<4,0]) raw2 = ((raw[1]&3) << 8) + raw[2] volts = (raw2 * self.ref_volts ) / float(1023) volts = round(volts,4) return volts """終了処理""" def Cleanup(self): self.spi.close() ############################################################################# if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_())

時間が経過すると以下のエラーメッセージが表示され終了してしまいます。
backend.pyの部分がエラー該当部だと思うのですが、
場所がライブラリの場所だと思い、
知識なく手を出してしまうと、今後どのような影響が出るか分からず、
何も行うことが出来ません。

大変申し訳ありませんが、
アドバイスを頂けないでしょうか?

Backend terminated (returncode: -6)
Fatal Python error: Aborted

Current thread 0x76fbc010 (most recent call first):
File "/home/pi/Python/Check20180917/ADC_qt5_rpi_20180917.py", line 185 in <module>
File "/usr/lib/python3/dist-packages/thonny/shared/thonny/backend.py", line 588 in execute_source
File "/usr/lib/python3/dist-packages/thonny/shared/thonny/backend.py", line 427 in _execute_source_ex
File "/usr/lib/python3/dist-packages/thonny/shared/thonny/backend.py", line 374 in _execute_file
File "/usr/lib/python3/dist-packages/thonny/shared/thonny/backend.py", line 155 in _cmd_Run
File "/usr/lib/python3/dist-packages/thonny/shared/thonny/backend.py", line 119 in handle_command
File "/usr/lib/python3/dist-packages/thonny/shared/thonny/backend.py", line 97 in mainloop
File "/usr/lib/python3/dist-packages/thonny/shared/backend_launcher.py", line 41 in <module>
Resetting ...

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

状況はよくわかりませんが、thonnyがエラーを出しているなら単純にthonnyを使うのをやめたらどうですか?

投稿2018/09/17 13:30

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BluePi85

2018/09/18 14:01

ご回答ありがとうございます。 アドバイス頂いたように、 IDLEにて実行したところ、エラーなどのメッセージなく落ちてしまいました。 他に何かアドバイスを頂けたら幸いです。
hayataka2049

2018/09/18 14:35

IDLEではなく直接ターミナルからpythonコマンドで実行できませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問