ステッピングモーターでやった事例の続き。
今度は、いわゆるJOG機能……的なものを実装してみます。
JOG機能は機構の組付けチェックなどに便利です。
本来はボタン押しっぱなしで動いているべきなんですが、今回は私のtkに対する知識不足で一回押すと固定値動くだけです。
GUIはpython標準ライブラリtkinter。
GUI界の古参、TKのpython実装になります。
……本当はWEBでやりたかったのだけどね。
僕のスキルセットではjavascriptのアクションとpythonスクリプトを紐づけすることが難しいんだ!(半ギレ
実際のところ
XYZの3軸
#! /usr/bin/python3 from RpiMotorLib import RpiMotorLib import RPi.GPIO as GPIO import tkinter as tk def init(): print("init pins") GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.HIGH) def setBase(dir,step,dist): GPIO_pins=(9,10,11) mymotor = RpiMotorLib.A4988Nema(dir, step, GPIO_pins, "A4988") mymotor.motor_go(dist, "Full", 100, .005, False, .05) ## JOG機能本体。 def setXp(): print("setXp") setBase(5,12,True) def setXn(): print("setXp") setBase(5,12,False) def setYp(): print("setYp") setBase(6,13,True) def setYn(): print("setYn") setBase(6,13,False) def setZp(): print("setZp") setBase(26,18,True) def setZn(): print("setZn") setBase(26,18,False) try: init() root = tk.Tk() root.geometry("640x480") ## tkのgrid設定 root.columnconfigure(0,weight=1) root.columnconfigure(1,weight=1) root.columnconfigure(2,weight=1) root.rowconfigure(0,weight=1) root.rowconfigure(1,weight=1) root.rowconfigure(2,weight=1) ## ステッピングモーターのボタンレイアウト。 ## どうにも美しくないので、あとで綺麗にしたい……。 # x axis button = tk.Button(root, text="X +", command=setXp, height=5,width=30).grid(row=0, column=0,padx=10,pady=10) button = tk.Button(root, text="X -", command=setXn, height=5,width=30).grid(row=0, column=1,padx=10,pady=10) # y axis button = tk.Button(root, text="Y +", command=setYp, height=5,width=30).grid(row=1, column=0,padx=10,pady=10) button = tk.Button(root, text="Y -", command=setYn, height=5,width=30).grid(row=1, column=1,padx=10,pady=10) # z axis button = tk.Button(root, text="Z +", command=setZp, height=5,width=30).grid(row=2, column=0,padx=10,pady=10) button = tk.Button(root, text="Z -", command=setZn, height=5,width=30).grid(row=2, column=1,padx=10,pady=10) # tkの画面を root.mainloop() finally: # 最後にGPIOのお片づけ。 GPIO.cleanup()
次の動き
悔しいので、近いうちにWEB版に再挑戦します。
chirimen.org
のような事例もあるから、できないわけじゃない筈……!!
あと、「JOG的なもの」で、ボタン押しっぱなしに未対応なので
そこも何とかしたいですね……。