<ptyhon>pythonでarduinoをいじくる

ここ二日間唐突にpython熱が上がってきています

今回はpythonを使ってデスクトップアプリケーションを実装してarduinoをシリアル通信を用いて操作するとこまでやりました。


arduino,pythonどちらもコードを書いたのですが、arduinoに関しては特になんの変哲も無いしシリアル通信をするだけのコードなので省略します

pythonでデスクトップアプリケーションを実装するためには色々ライブラリがあるみたいなのですが、今回はデフォルトで利用可能なtkinterを使用しました
理由としては今回の作成でのメインになるのはそっちではなくarduinoとの通信だからっていうのが大きいです。
ということで、作成したコードの流れは以下の通りです

import tkinter
import sys
sys.path.append('/Library/Python/2.7/site-packages')
import serial

#シリアル設定
ser=serial.Serial("/dev/cu.usbmodem1421",9600)

#ウィンドウ生成
top=tkinter.Tk()
top.title("serial sample")
top.geometry("400x300")

#アプリケーションクラスの作成
class Application(tkinter.Frame):
    def __init__(self,master=None):
        super().__init__(master)
        self.pack()
        self.create_widgets()

    #ボタンの作成
    def create_widgets(self):
        #LED点灯用ボタン
        self.hi_there=tkinter.Button(self)
        self.hi_there["text"]="LED ON"
        self.hi_there["command"]=self.tx_on
        self.hi_there.pack(side="top")

        #LED消灯用ボタン
        self.hi_there=tkinter.Button(self)
        self.hi_there["text"]="LED OFF"
        self.hi_there["command"]=self.tx_off
        self.hi_there.pack(side="top")

        #シリアル通信終了用ボタン
        self.hi_there=tkinter.Button(self)
        self.hi_there["text"]="close connection"
        self.hi_there["command"]=self.close
        self.hi_there.pack(side="top")

        #アプリケーション終了ボタン
        self.quit=tkinter.Button(self,text="Exit",command=self.master.destroy)
        self.quit.pack(side="bottom")

    #点灯用ボタンの動作の定義
    def tx_on(self):
        ser.write(bytes("n",'utf-8'))

    #消灯用ボタンの動作の定義
    def tx_off(self):
        ser.write(bytes("f",'utf-8'))

    #シリアル通信終了用ボタンの動作の定義
    def close(self):
        ser.close()


app=Application(master=top)
#ウィンドウの生成
app.mainloop()

大体はコメントに書いたので特に追記することはないかなと思っています
#今回ははてな記法使えた
強いていいえば、シリアル通信するときに文字をバイト文字列に変形するためにbytesを使っています(on,offの頭文字を使うとどっちもoなのでnとfで信号を変えています)

実際に実行するとこんな画面になります
f:id:poolbooyer:20180616022821p:plain

pythonコードに加えてarduinoのスケッチを以下のリンクを参考にして作成しました
そうするとarduinoにつないだLEDの制御ができました

参考資料
qiita.com