I am trying to make a Tachometer with hc-sr04 proximity sensor. It is working normal for 3-4 hours and then it freezes. No error, no run, nothing, just standing still.
Here is my code,
Code: Select all
import RPi.GPIO as GPIO
import time
import pymssql
#GPIO.cleanup()
GPIO.setmode(GPIO.BOARD)
TRIG = 18
ECHO = 16
relay = 22
sonzaman = time.time()
minute = 0
mesafe = 0
kontrol = 1
cnxn = pymssql.connect(server='**',user='**', password='**', database='**')
baslama = 1
def olcum(szaman):
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.output(TRIG, False)
time.sleep(1)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
# pulse_start = time.time()
# pulse_stop = time.time()
while GPIO.input(ECHO) == 0:
pulse_start = time.time()
while GPIO.input(ECHO) == 1:
pulse_stop = time.time()
pulse_duration = pulse_stop - pulse_start
distance = pulse_duration * 17000
distance = round(distance, 2)
devir = pulse_stop - szaman
return (distance, pulse_stop)
try:
while 1:
if baslama == 1:
cursor3 = cnxn.cursor()
cursor3.execute("***")
baslama = 0
tmpmesafe,zaman = olcum(sonzaman)
if mesafe > 1.8 and mesafe < 5 and tmpmesafe > 5: # + 1.5 and tmpmesafe > mesafe - 1.5:
timediff = round(zaman - sonzaman,2)
minute = 60 / timediff
sonzaman = zaman
kontrol = 1
cursor = cnxn.cursor()
cursor.execute("******")
cnxn.commit()
mesafe = tmpmesafe
# GPIO.setup(relay, GPIO.OUT)
# GPIO.output(relay, True)
tmp = round(time.time() - sonzaman,2)
if tmp > 50 and kontrol == 1:
# GPIO.output(relay,False)
time.sleep(1)
# GPIO.output(relay,True)
kontrol = 0
cursor2 = cnxn.cursor()
cursor2.execute("*****")
cnxn.commit()
baslama = 1
#print tmp
print "Mesafe:",mesafe,"cm, Devir:",minute,"tur/dk"
except KeyboardInterrupt:
GPIO.cleanup()
except Exception as e:
logging.error('Hata :' + str(e))
GPIO.cleanup()
