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)
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)
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)
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")
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)
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))
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") pigpio.set_servo_pulsewidth(servPin1, servMin)
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=.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()
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)
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")
self.speed = speed 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()
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)