라즈베리파이, LED와 초음파센서 DB저장

Posted by PeEn
2019. 9. 7. 00:21 Programing/Raspberry Pi)

라즈베리파이, 초음파 센서를 이용해 초음파센서에 물체가 다가오면 LED 작동하고 그 시간을 DB에 저장한다

LED와 초음파센서 작동 게시물 이동 링크

이하 DB저장까지 코드

import RPi.GPIO as gpio
import time
import sys
import warnings
import  sqlite3
from datetime import datetime
warnings.filterwarnings('ignore')

#sql
table = "inout_"
sqlselect = "select * from "+table
con = sqlite3.connect("INOUT_DATA.db")
cur = con.cursor()
#____

LED = 4
TRIGER = 24
ECHO = 23

gpio.setmode(gpio.BCM)
gpio.setup(TRIGER, gpio.OUT)
gpio.setup(ECHO,gpio.IN)
gpio.setup(LED, gpio.OUT)
startTime = time.time()

try:
    while True:
        gpio.output(TRIGER,gpio.LOW)
        time.sleep(0.1)
        gpio.output(TRIGER,gpio.HIGH)
        time.sleep(0.00002)
        gpio.output(TRIGER,gpio.LOW)

        while gpio.input(ECHO) == gpio.LOW:
            startTime = time.time()

        while gpio.input(ECHO) == gpio.HIGH:
            endTime = time.time()

        period = endTime - startTime
        dist1 = round(period * 1000000 / 58, 2)
        dist2 = round(period * 17241, 2)
        try:
            if dist2 <= 20:
                print('error124')
                gpio.output(LED, gpio.HIGH)
                time.sleep(1)
                gpio.output(LED, gpio.LOW)
                time.sleep(1)
                cur.execute("insert into " + table + " (Date) VALUES(\""+str(datetime.now())+"\")")
                con.commit()

                cur.execute(sqlselect)
                print("1\t2")
                print("______")

                while (True):
                    row = cur.fetchone()
                    if row == None:
                        break;
                    print(row[0], row[1])


        except KeyboardInterrupt:
            print("error")
        print('Dist1', dist1, 'cm', ', Dist2', dist2, 'cm')

    con.close()
except KeyboardInterrupt:
    gpio.cleanup()
    sys.exit()