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

Javascriptで画像を動的に切り替え

JavaScriptです

 

やること

・ボタンを押されたら画像を切り替える

 

要件

・フロントで動かす

・画像の情報が変わっても対応が簡単になるように

・ボタンをクリックしたことをトリガーにして

 

っていうのを作りました。

 

使用したソースコード


            <img id="img" style="height: 300px; width: 300px;" alt="hoge" >
            <a name="yasai.jpg" class="samp" onclick="changeimg(0)">hoge<a>
            <a name="hoge.png" class="samp" onclick="changeimg(1)">hoge<a>
            <script type="text/javascript">
var changeimg=function(hoge) { //ボタン上の要素を全て取得 var a = document.getElementsByClassName('samp'); //imgの状態を取得 var img = document.getElementById('img'); //imgの画像を指定(変更) img.setAttribute("src", a[hoge].name); }
</script>

//はてな記法使ってハイライトしようと思ったら編集画面の切り替えができなくて断念しました

 

このコードでやってることの説明

var a = document.getElementsByClassName('samp');

 aにsampクラスのelementの内容を全て格納 

var img = document.getElementById('img');

imgにidがimgのelementの内容を全て格納

img.setAttribute("src", a[hoge].name);

imgタグのsrc情報を書き換える(この時はaタグのhoge番目のname要素に)

 

以上 メモ 

学ぶことについて

普段人のブログ見てあれやこれや言ったりなんとかすることないのですが、自分の中でモヤモヤしたことがあった気がするので書きます。

あんまり長く公開しないかもしれないです。

 

blog.jnito.com

を読みました。

その中で、学生として、感じるものが色々あったので書きます。

直接講演を受けたわけではないので、内容についてのあれこれより自分がどう学ぶ必要があるのかを考えて思ったことを書くつもりです。

 

危険=使っちゃいけない??

伊藤さんのブログを拝見したなかで、危険性を強調した講演になっていた印象を受けました

確かにインターネットは危険な側面を持っているかもしれません。

でも、それはインターネットだけなんでしょうか?

直接人の命を奪う力を持つ、危険なものが世の中には溢れているのではないでしょうか?

 

比較論になってしまう気がするのですが、危険な側面を持ったものは世の中に溢れているように感じます。

インターネット→危険だからダメ、火→危険だけどいい??

っていうのが頭の中に思いました。(日本語として崩壊してる気がする)

世の中には危険なものがたくさんあると思っています。

火、刃物、、、人の命を奪うようなものがそこら中にあるなかで、そのようなもので失う命を減らすために教育というものがされるのだと思っています。

危険なものを使うなと言って制限することは簡単かもしれません。

でも、それじゃあ教育と言えないのではないかなと思います。

恐怖心を煽って、安全なところを大人の都合で調整してみえるようにして、そのような環境で育った子供は大人になって危険な側面を目にした時にどうなるのだろうかと思うことがあります。

危険な部分に触れないようにするのが理想かもしれません。

ただ、全く触れないまま、突然危険に直面したときその人がどうなるのだろうかと思ってしまいます。

自分が危険な状態に直面したときに、そのまま危険を回避できない状態にならないようにするのが教育なのではないでしょうか?

そう思っています。

 

また、危険についての講演しかしていないように感じましたが、それ以外にも伝えなければならないものがあったのではないかと思います。

無料の危険性

漫○村の話が記憶に新しいですが、無料の意味、危険性について教える必要があるのではないかなと思います。

 

作った人がいて、コンテンツは手に入る

漫画村や、無料で音楽が聴けるアプリが人気になるような状態なのが異常なのではないかと個人的に思っています。

作った人にお金が届くことでコンテンツは生きていくのではないかと思っています。

音楽が好きなので音源が欲しい時はCDを購入したりしていますが、音楽やまんがなど人の作ったものに対価を払うことが当たり前であることを教育する必要があるのではないかなと思います。

ブロッキングや広告が表示されないようにする対策がここ数ヶ月で行われるようになりましたが、それだけじゃ意味はないと思っています。

使う人がいるから発生している以上、そういった海賊版サイトを使うユーザが現れないようにする対策が必要じゃないかと思っています。

 

 

 

いつにも増して言いたいことがまとまってません。

それでは