###実現したいこと
Raspberry Pi 3 Model B+のpython3でL6470というステッピングモータードライバーを使いたいと思っています。
L6470制御用の関数をL6470.pyというモジュールにまとめておいて
main.pyでL6470.pyをインポートして使おうと考えています。
###発生している問題・エラーメッセージ
main.pyからL6470.pyの関数を使おうとすると下記のエラーが発生します。
main.pyでwiringpiの準備をしてL6470.pyでwiringpiを使おうとしていることが原因ではないかと思うのですが
修正方法が分からず途方にくれています。
どのように修正すればよいでしょうか?
よろしくお願いいたします。
Traceback (most recent call last): File "/home/pi/Python/main.py", line 21, in <module> L6470_init() File "/home/pi/Python/main.py", line 12, in L6470_init L6470_setparam_acc(0xFFE) File "/home/pi/Python/L6470.py", line 4, in L6470_setparam_acc L6470_transfer(0x05, 2, val) File "/home/pi/Python/L6470.py", line 8, in L6470_transfer L6470_send(add) File "/home/pi/Python/L6470.py", line 20, in L6470_send while wp.digitalRead(PIN_BUSY) == 0: NameError: name 'wp' is not defined
#使用言語
python3
該当のソースコード
#main.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import wiringpi as wp import struct from L6470 import * L6470_SPI_CHANNEL = 0 L6470_SPI_SPEED = 1000000 PIN_BUSY = 25 def L6470_init(): L6470_setparam_acc(0xFFE) if __name__=="__main__": speed = 0 wp.wiringPiSetupGpio() #SPI channel 0 を 1MHz で開始。 wp.wiringPiSPISetup (L6470_SPI_CHANNEL, L6470_SPI_SPEED) wp.pinMode(PIN_BUSY, 0) #PIN_BUSYを入力モードに設定 L6470_init() #L6470の初期化。
#L6470.py
def L6470_setparam_acc(val: int): L6470_transfer(0x05, 2, val) def L6470_transfer(add: int, bytes: int, val: int): data = [] * 3 L6470_send(add) for i in range(bytes): data.append(val & 0xFF) val = val >> 8 if bytes == 3: L6470_send(data[2]) if bytes >= 2: L6470_send(data[1]) if bytes >= 1: L6470_send(data[0]) def L6470_send(add_or_val: int): while wp.digitalRead(PIN_BUSY) == 0: pass data = struct.pack("B", add_or_val) #16進数のadd_or_valを2進数のdataに変換 wp.wiringPiSPIDataRW(L6470_SPI_CHANNEL, data) #アドレスもしくはデータ送信
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/08 06:45