2021年8月11日水曜日

超音波距離センサー

 DFRobotから超音波センサーを購入したので、早速使ってみました。シリアル通信モードで、コマンドを送ると、温度や距離を送り返してきます。 

DFRobotのWebページにに載っていたサンプルプログラムはCで書かれていましたので、それを参考にPythonで書いてみました。普通に動いています。

import serial
import struct
import time
import datetime

ser = serial.Serial( 'COM11', 9600, timeout=None )

def sendCommand():
    txx = [0x22, 0x00, 0x00, 0x22]
    for b in txx:
        a = struct.pack( "B", b )
        ser.write(a)
    ser.flush()
    
def recData():
    while ser.in_waiting <= 0:
        pass
    r0 = ser.read(1)
    while ser.in_waiting <= 0:
        pass
    r1 = ser.read(1)
    while ser.in_waiting <= 0:
        pass
    r2 = ser.read(1)
    while ser.in_waiting <= 0:
        pass
    r3 = ser.read(1)
    rc = int.from_bytes( r1+r2, 'big' )
    return rc
    
fn = 'data.txt'
fp = open( fn, "w", encoding="utf_8" )
for i in range(15):
    for j in range(60):
        for k in range(60):
            sendCommand()
            dist = recData()
            dt_now = datetime.datetime.now()
            print( dt_now, dist )
            fp.write( str(dt_now) + " " + str(dist)+'\n' )
            time.sleep(1)

ser.close()
fp.close()
 


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

WSJT-X 2.7.0-rc3 公開

 WSJT-X 2.7.0-rc3 リリースノート 2024年1月1日 WSJT-X 2.7.0-rc3では、いくつかの新しい機能、たくさんの強化改善、バグの修正を行いました。 「Hamlib更新」機能追加。Windows版では、WSJT-Xから直接Hamlibを更新することがで...