Esempio n. 1
0
def t3():
   global t3_reset, t3_count, t3_on, t3_off

   pw=[500.0, 1500.0, 2500.0]
   dc=[0.2, 0.4, 0.6, 0.8]

   print("PWM/Servo pulse accuracy tests.")

   t3cb = pigpio.callback(GPIO, pigpio.EITHER_EDGE, t3cbf)

   t = 0
   for x in pw:
      t += 1
      pigpio.set_servo_pulsewidth(GPIO, x)
      time.sleep(1)
      t3_reset = True
      time.sleep(4)
      c = t3_count
      on = t3_on
      off = t3_off
      CHECK(3, t, int((1E3*(on+off))/on), int(2E7/x), 1, "set servo pulsewidth")


   pigpio.set_servo_pulsewidth(GPIO, 0)
   pigpio.set_PWM_frequency(GPIO, 1000)
   f = pigpio.get_PWM_frequency(GPIO)
   CHECK(3, 4, f, 1000, 0, "set/get PWM frequency")

   rr = pigpio.set_PWM_range(GPIO, 100)
   CHECK(3, 5, rr, 200, 0, "set PWM range")

   t = 5
   for x in dc:
      t += 1
      pigpio.set_PWM_dutycycle(GPIO, x*100)
      time.sleep(1)
      t3_reset = True
      time.sleep(2)
      c = t3_count
      on = t3_on
      off = t3_off
      CHECK(3, t, int((1E3*on)/(on+off)), int(1E3*x), 1, "set PWM dutycycle")

   pigpio.set_PWM_dutycycle(GPIO, 0)
Esempio n. 2
0
def t2():
    global t2_count

    print("PWM dutycycle/range/frequency tests.")

    pigpio.set_PWM_range(GPIO, 255)
    pigpio.set_PWM_frequency(GPIO, 0)
    f = pigpio.get_PWM_frequency(GPIO)
    CHECK(2, 1, f, 10, 0, "set PWM range, set/get PWM frequency")

    t2cb = pigpio.callback(GPIO, pigpio.EITHER_EDGE, t2cbf)

    pigpio.set_PWM_dutycycle(GPIO, 0)
    time.sleep(0.5)  # allow old notifications to flush
    oc = t2_count
    time.sleep(2)
    f = t2_count - oc
    CHECK(2, 2, f, 0, 0, "set PWM dutycycle, callback")

    pigpio.set_PWM_dutycycle(GPIO, 128)
    time.sleep(1)
    oc = t2_count
    time.sleep(2)
    f = t2_count - oc
    CHECK(2, 3, f, 40, 5, "set PWM dutycycle, callback")

    pigpio.set_PWM_frequency(GPIO, 100)
    f = pigpio.get_PWM_frequency(GPIO)
    CHECK(2, 4, f, 100, 0, "set/get PWM frequency")

    time.sleep(1)
    oc = t2_count
    time.sleep(2)
    f = t2_count - oc
    CHECK(2, 5, f, 400, 1, "callback")

    pigpio.set_PWM_frequency(GPIO, 1000)
    f = pigpio.get_PWM_frequency(GPIO)
    CHECK(2, 6, f, 1000, 0, "set/get PWM frequency")

    time.sleep(1)
    oc = t2_count
    time.sleep(2)
    f = t2_count - oc
    CHECK(2, 7, f, 4000, 1, "callback")

    r = pigpio.get_PWM_range(GPIO)
    CHECK(2, 8, r, 255, 0, "get PWM range")

    rr = pigpio.get_PWM_real_range(GPIO)
    CHECK(2, 9, rr, 200, 0, "get PWM real range")

    pigpio.set_PWM_range(GPIO, 2000)
    r = pigpio.get_PWM_range(GPIO)
    CHECK(2, 10, r, 2000, 0, "set/get PWM range")

    rr = pigpio.get_PWM_real_range(GPIO)
    CHECK(2, 11, rr, 200, 0, "get PWM real range")

    pigpio.set_PWM_dutycycle(GPIO, 0)
Esempio n. 3
0
def t2():
   global t2_count

   print("PWM dutycycle/range/frequency tests.")

   pigpio.set_PWM_range(GPIO, 255)
   pigpio.set_PWM_frequency(GPIO,0)
   f = pigpio.get_PWM_frequency(GPIO)
   CHECK(2, 1, f, 10, 0, "set PWM range, set/get PWM frequency")

   t2cb = pigpio.callback(GPIO, pigpio.EITHER_EDGE, t2cbf)

   pigpio.set_PWM_dutycycle(GPIO, 0)
   time.sleep(0.5) # allow old notifications to flush
   oc = t2_count
   time.sleep(2)
   f = t2_count - oc
   CHECK(2, 2, f, 0, 0, "set PWM dutycycle, callback")

   pigpio.set_PWM_dutycycle(GPIO, 128)
   time.sleep(1)
   oc = t2_count
   time.sleep(2)
   f = t2_count - oc
   CHECK(2, 3, f, 40, 5, "set PWM dutycycle, callback")

   pigpio.set_PWM_frequency(GPIO,100)
   f = pigpio.get_PWM_frequency(GPIO)
   CHECK(2, 4, f, 100, 0, "set/get PWM frequency")

   time.sleep(1)
   oc = t2_count
   time.sleep(2)
   f = t2_count - oc
   CHECK(2, 5, f, 400, 1, "callback")

   pigpio.set_PWM_frequency(GPIO,1000)
   f = pigpio.get_PWM_frequency(GPIO)
   CHECK(2, 6, f, 1000, 0, "set/get PWM frequency")

   time.sleep(1)
   oc = t2_count
   time.sleep(2)
   f = t2_count - oc
   CHECK(2, 7, f, 4000, 1, "callback")

   r = pigpio.get_PWM_range(GPIO)
   CHECK(2, 8, r, 255, 0, "get PWM range")

   rr = pigpio.get_PWM_real_range(GPIO)
   CHECK(2, 9, rr, 200, 0, "get PWM real range")

   pigpio.set_PWM_range(GPIO, 2000)
   r = pigpio.get_PWM_range(GPIO)
   CHECK(2, 10, r, 2000, 0, "set/get PWM range")

   rr = pigpio.get_PWM_real_range(GPIO)
   CHECK(2, 11, rr, 200, 0, "get PWM real range")

   pigpio.set_PWM_dutycycle(GPIO, 0)
Esempio n. 4
0
def t4():

    print("Pipe notification tests.")

    pigpio.set_PWM_frequency(GPIO, 0)
    pigpio.set_PWM_dutycycle(GPIO, 0)
    pigpio.set_PWM_range(GPIO, 100)

    h = pigpio.notify_open()
    e = pigpio.notify_begin(h, (1 << 4))
    CHECK(4, 1, e, 0, 0, "notify open/begin")

    time.sleep(1)

    with open("/dev/pigpio" + str(h), "rb") as f:

        pigpio.set_PWM_dutycycle(GPIO, 50)
        time.sleep(4)
        pigpio.set_PWM_dutycycle(GPIO, 0)

        e = pigpio.notify_pause(h)
        CHECK(4, 2, e, 0, 0, "notify pause")

        e = pigpio.notify_close(h)
        CHECK(4, 3, e, 0, 0, "notify close")

        n = 0
        s = 0

        seq_ok = 1
        toggle_ok = 1

        while True:

            chunk = f.read(12)

            if len(chunk) == 12:

                S, fl, t, v = struct.unpack("HHII", chunk)
                if s != S:
                    seq_ok = 0

                L = v & (1 << 4)

                if n:
                    if l != L:
                        toggle_ok = 0

                if L:
                    l = 0
                else:
                    l = 1 << 4

                s += 1
                n += 1

                # print(S, fl, t, hex(v))

            else:
                break

        f.close()

        CHECK(4, 4, seq_ok, 1, 0, "sequence numbers ok")

        CHECK(4, 5, toggle_ok, 1, 0, "gpio toggled ok")

        CHECK(4, 6, n, 80, 10, "number of notifications")
Esempio n. 5
0
def init_servo(pin):
    pigpio.set_PWM_frequency(pin, 50)  # 50Hz pulses
    pigpio.set_PWM_range(
        pin, 20000)  # 1,000,000 / 50 = 20,000us for 100% duty cycle
    move_servo(pin, CENTER, 5)
Esempio n. 6
0
    if sum < -50:
        sum = -50
    #print("actualTemp %4.2f TempDiff %4.2f pDiff %4.2f iDiff %4.2f fanSpeed %5d" % (actualTemp,diff,pDiff,iDiff,fanSpeed))
    pigpio.set_PWM_dutycycle(gpiochan, fanSpeed)
    return ()


def fanOFF():
    pigpio.set_PWM_dutycycle(gpiochan, 0)  # switch fan off
    return ()


def signalHandler(_signo, _stack_frame):
    fanOFF()
    sys.exit(0)


try:
    signal.signal(signal.SIGTERM, signalHandler)
    pigpio = pigpio.pi()
    pigpio.set_PWM_frequency(gpiochan, 23000)
    print(pigpio.get_PWM_frequency(gpiochan))
    pigpio.set_PWM_range(gpiochan, 100)
    fanOFF()
    while True:
        handleFan()
        sleep(3)  # Read the temperature every 3 sec
except KeyboardInterrupt:  # trap a CTRL+C keyboard interrupt
    fanOFF()
#    GPIO.cleanup() # resets all GPIO ports used by this program
 def pigpio_init_pwm(self):
     pigpio.set_PWM_frequency(self.pin, 50) # 50Hz pulses
     pigpio.set_PWM_range(self.pin, 20000) # 1,000,000 / 50 = 20,000us for 100% duty cycle
     self.logger.info("PWM cycle frequency: %dHz" % pigpio.get_PWM_frequency(self.pin))
Esempio n. 8
0
# For TS-51: 600, 1400, 2200
servMax = 2200
servMid = 1400
servMin = 600

delayTime1 = 0.01
servStep = 20
servPin1 = 18 #GPIO 18

#Reset pigpio
pigpio.stop()
time.sleep(.5)
pigpio.start()

#Initialize PWM values
pigpio.set_PWM_frequency(servPin1, 50)  
pigpio.set_PWM_range(servPin1, servMax)
pigpio.set_servo_pulsewidth(servPin1, servMin) #pulsewidth sets position - start at minimum


### END SERVO SETUP


### MAIN LOOP ###
try:
    
    while True:
        print "Play sound"
        os.system('mpg321 "./sounds/Sci Fi Beep 02.mp3" &')
        
        setDir("fwd")
Esempio n. 9
0
               1210)  #front motor speed initialised at 1210 ms pulse width
motor2 = motor(pin2,
               1230)  #back motor speed initialised at 1230 ms pulse width
motors = []  #array of motors to be controlled
motors.append(motor1)
motors.append(motor2)

if pigpio.start(''):  # must run notification test on localhost
    print("Connected to pigpio daemon.")

    #initialisation
    pigpio.set_mode(pin1, pigpio.OUTPUT)
    pigpio.set_mode(pin2, pigpio.OUTPUT)
    pigpio.set_PWM_range(pin1, 255)
    pigpio.set_PWM_range(pin2, 255)
    pigpio.set_PWM_frequency(pin1, 50)
    pigpio.set_PWM_frequency(pin2, 50)
    pigpio.set_servo_pulsewidth(pin1, 0)
    pigpio.set_servo_pulsewidth(pin2, 0)

    #open the serial port rfcomm1 defined in rfcomm.conf file
    ser = serial.Serial('/dev/rfcomm1', 38400, timeout=.08)

    print("\nConnected\n")
    ser.write('Connected')  #send message to the smartphone
    raw = ser.readline()

    while (raw != 'stop'):  #message 'stop' terminates the program
        raw = ser.readline()
        if (raw != ''):  #ignore empty messages
            print(raw + '\n')
def init_channel(pin):
    pigpio.set_PWM_frequency(pin, 50)
    println("PWM cycle frequency: %dHz" % pigpio.get_PWM_frequency(pin))
    pigpio.set_PWM_range(pin, RANGE)
Esempio n. 11
0
def t4():

   print("Pipe notification tests.")

   pigpio.set_PWM_frequency(GPIO, 0)
   pigpio.set_PWM_dutycycle(GPIO, 0)
   pigpio.set_PWM_range(GPIO, 100)

   h = pigpio.notify_open()
   e = pigpio.notify_begin(h, (1<<4))
   CHECK(4, 1, e, 0, 0, "notify open/begin")

   time.sleep(1)

   with open("/dev/pigpio"+ str(h), "rb") as f:

      pigpio.set_PWM_dutycycle(GPIO, 50)
      time.sleep(4)
      pigpio.set_PWM_dutycycle(GPIO, 0)

      e = pigpio.notify_pause(h)
      CHECK(4, 2, e, 0, 0, "notify pause")

      e = pigpio.notify_close(h)
      CHECK(4, 3, e, 0, 0, "notify close")

      n = 0
      s = 0

      seq_ok = 1
      toggle_ok = 1

      while True:

         chunk = f.read(12)

         if len(chunk) == 12:

            S, fl, t, v = struct.unpack('HHII', chunk)
            if s != S:
               seq_ok = 0


            L = v & (1<<4)

            if n:
               if l != L:
                  toggle_ok = 0

            if L:
               l = 0
            else:
               l = (1<<4)
           
            s += 1
            n += 1

            # print(S, fl, t, hex(v))

         else:
            break

      f.close()

      CHECK(4, 4, seq_ok, 1, 0, "sequence numbers ok")

      CHECK(4, 5, toggle_ok, 1, 0, "gpio toggled ok")

      CHECK(4, 6, n, 80, 10, "number of notifications")
Esempio n. 12
0
motor1 = motor(pin1, 1210)  # front motor speed initialised at 1210 ms pulse width
motor2 = motor(pin2, 1230)  # back motor speed initialised at 1230 ms pulse width
motors = []  # array of motors to be controlled
motors.append(motor1)
motors.append(motor2)

if pigpio.start(""):  # must run notification test on localhost
    print("Connected to pigpio daemon.")

    # initialisation
    pigpio.set_mode(pin1, pigpio.OUTPUT)
    pigpio.set_mode(pin2, pigpio.OUTPUT)
    pigpio.set_PWM_range(pin1, 255)
    pigpio.set_PWM_range(pin2, 255)
    pigpio.set_PWM_frequency(pin1, 50)
    pigpio.set_PWM_frequency(pin2, 50)
    pigpio.set_servo_pulsewidth(pin1, 0)
    pigpio.set_servo_pulsewidth(pin2, 0)

    # open the serial port rfcomm1 defined in rfcomm.conf file
    ser = serial.Serial("/dev/rfcomm1", 38400, timeout=0.08)

    print("\nConnected\n")
    ser.write("Connected")  # send message to the smartphone
    raw = ser.readline()

    while raw != "stop":  # message 'stop' terminates the program
        raw = ser.readline()
        if raw != "":  # ignore empty messages
            print(raw + "\n")
Esempio n. 13
0
File: gong.py Progetto: wr/gongpi
def init_servo():
    pigpio.set_PWM_frequency(PIN, 50)  # 50Hz pulses
    pigpio.set_PWM_range(
        PIN, 20000)  # 1,000,000 / 50 = 20,000us for 100% duty cycle
    print 'Initializing...'
    move_servo(CENTER)