ラズパイ5日目

 

昨日はうまくcsvの書き込みができなかったので、本日はその続きです。

 

 

昨日までのおさらいをすると、

 

 ・3日目 なぜか数値が1文字ずつ縦に表示されていた

 

 ・4日目 csvに記録されるのは1文字だけだった

 

 

冷静になって考えてみると、どう見ても1文字ずつデータが送られてきてるっぽい。

この辺りをクリアしないといけない。

 

 

今日はちょっとだけ本屋に行って、参考になりそうな本を買ってきました。

 

 

 

 

Pythonの本は機械学習などがメインの本ばかりでどれにしようか結構迷ったけど、電子工作関係のものを1冊と、Pythonの教科書的なものを1冊選びました。

機械学習とかは、またそのうちね。

 

ラズパイ関係の本は、中身はPythonで書かれていることが多いので見落としがちかもしれない。

 

 

で、さっそく本を読みながら色々と試しましたが、やっぱりうまくいきませんでした・・・。

 

 

改めて先人たちの知恵が詰まった記事を探すと、参考になりそうな記事が見つかりました。

@Acqua_Altaさん :PC-Arduino間 Python経由 シリアル通信備忘録

https://qiita.com/Acqua_Alta/items/9f19afddc6db1e4d4286

 

やっぱり、シリアル通信で1行単位で呼び出す命令文がありました。

 

ser.readline()

 

これを使えばいけそう。

 

あと、送られてきたデータは文字列なので、数字(float)に変換するプログラムを書いてくれていました。

ありがたい!!!

 

 

これらを参考にしつつ、自分のプログラムに合わせてなんとか完成しました!

 

途中でやたらとprintを入れていますが、どこで何が起きているのかを確認する為です。

あえて消さずにそのまま残しました。

 

各段階での文字列を記録しました。

A列 :ser.readlineで読み取ったもの。余計な符号がいっぱいついてる

B列 :数字の列だけ取り出した文字列

C列 :B列のものをfloatに変換したもの。

最後の列はちゃんと数字になっていて、グラフも描けました!

※グラフを描いたのは手動です。

 

 

記事にするとたったこれだけですが、実は数時間かかりました・・・。

 

けど、自分の決めた期限内に、なんとか目標は達成できました!

よくやった!!!

 

 

後半はラズパイ関係なく、Pythonでのシリアル通信のお勉強でしたね。

ラズパイのGPIO何も使ってないw

それはそれで、WindowsのPCを使って同じことができるという副産物が得られたので良し!

あとはLinuxの知識も付けないといけない気がしました。

ラズパイ程度のスペックで、これだけ動くLinuxは凄いと改めて思いました。

 

 

ようやく少し触り始めたラズパイ+Pythonなので、このまましばらく勉強していきます!