KRSサーボモータの操作パネルを作る
- 2021.05.23
- Python Raspberry Pi
以前、PCとArduinoをつないでサーボモータを制御するコントロールパネルを作成しましたが、今回はRaspberry Piに近藤科学のサーボモータをつないだ時のコントロールパネルを作成してみました。
プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
import Tkinter as tk from Tkinter import * import ttk import serial class PanelItem(): val=0 myval= 0 def __init__(self, val): self.val=val print ("MOTOR ID:"+str(self.val)) def SetItem(self): self.pos = DoubleVar(value=135) self.pos.trace("w", self.value_changed) # Label label = tk.Label(frame, text="MOTOR"+str(self.val)) label.pack(side="top") # Scale sc = tk.Scale( frame, variable=self.pos, orient=HORIZONTAL, length=200, from_=0, to=270) sc.pack(side="top") def value_changed(self, *args): print("ID:" + str(self.val) + ", value = %d" % self.pos.get()) m_id=int(self.val) pos_cnt=int(self.pos.get()/270*8000+3500) print (pos_cnt) cmd=0x80 | m_id pos_h=pos_cnt>>7 & 0x07f pos_l=pos_cnt & 0x07f data=[cmd, pos_h, pos_l] ser.write(data) if __name__ == '__main__': ser=serial.Serial("/dev/ttyUSB0", 115200, serial.EIGHTBITS, parity=serial.PARITY_EVEN) root = tk.Tk() root.title("CONTROL PANEL") root.columnconfigure(0, weight=1); root.rowconfigure(0, weight=1); frame = ttk.Frame(root, padding=10) frame.pack() frame.columnconfigure(0, weight=1); frame.rowconfigure(0, weight=1); motor_id=[1,4,5] items=[] for i in range(len(motor_id)): items.append(PanelItem(motor_id[i])) items[i].SetItem() root.mainloop() |
Raspberry PiでKRSサーボモータを動かす方法は下記の記事に記載しています。そのプログラムを元に作成しました。
GUIのスライダの値が変わる度に、サーボがその角度に動くようになっています。モータのIDは予めmotor_idという変数で指定しています。上記の場合は、IDが5と13であるモータを動かすことができます。
動作
実際にプログラムを動かすと、以下のようになります。Raspberry Pi Zeroで動かしているので、スライダの動きが若干追従できていませんが、モータは動かすことができています。
ラズパイzeroでKRSサーボモータ動かすコントロールパネル作った pic.twitter.com/aVVyrtaE7Y
— Ken@エンジニア投資家(婚活中) (@Ken_okinawan) May 23, 2021
-
前の記事
styleGANで独自データを学習する 2021.05.16
-
次の記事
Raspberry PiのカメラモジュールをUbuntuで使う 2021.06.13