import smbus
import time
import RPi.GPIO as GPIO

#IO 
PWM_PIN  = 14
PWM_FREQ = 50

SENSOR_PIN = 21

MAX = 1000000

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(PWM_PIN, GPIO.OUT)
GPIO.setup(SENSOR_PIN, GPIO.IN)

pwm = GPIO.PWM(PWM_PIN, PWM_FREQ)
pwm.start(0)

bus = smbus.SMBus(1)
data_log = open("data_log.csv","w") 

try:
  for dc in range(0, 100, 1):
    pwm.ChangeDutyCycle(dc)

    timeoutA=0
    while (GPIO.input(SENSOR_PIN)==0) and (timeoutA < MAX):
      timeoutA = timeoutA +1
      
    #pulse_start = time.time() 

    timeoutB=0
    while (GPIO.input(SENSOR_PIN)==1) and (timeoutB < MAX):
      timeoutB = timeoutB +1
      
    timeoutC=0
    while (GPIO.input(SENSOR_PIN)==0) and (timeoutC < MAX):
      timeoutC = timeoutC +1

    if timeoutA < MAX and timeoutB < MAX and timeoutC < MAX:
      #pulse_end = time.time() 
      #pulse_width = pulse_end - pulse_start

      pulse_width = timeoutB + timeoutC  

    else:
      pulse_width = 0
      
    outputString = str(dc) + "," + str(pulse_width) + "\n"
    print outputString

    data_log.write( outputString )

    time.sleep(1)

  data_log.close()

except KeyboardInterrupt:
	pass
pwm.stop()
GPIO.cleanup()






