1

I was facing a problem to break counter variable after every 1 second. This counter variable will keep tract of vehicle wheel revolution per seond which will help to calculate speed.

Also how we can pass a parameter in a function callback inside GPIO.add_event_detect() method.

My code for calculating vehicle speed is as follows :

import time
import datetime
import RPi.GPIO as GPIO

def sensorCallback(channel,cir=1.884):
   #Called if sensor output changes

  ts = datetime.datetime.now()
  s=ts.second
  count=0
  if s%59==0:
     count=0

  else:
     #Magnet
     count=count+1
     speed = count*cir*3600/1000
     print(speed)


def main():

  count=0
  r=30
  cir = (2*3.14*r)/100
  s=0
  last=0
  speed=0


  try:
    while True :
      time.sleep(0.1)

  except KeyboardInterrupt:
    GPIO.cleanup()


GPIO.setmode(GPIO.BCM)

GPIO.setup(17 , GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(17, GPIO.BOTH, callback=sensorCallback(count), bouncetime=200)

0 Answers0