def test_alreadyinuse(self): """Test 'already in use' warning""" GPIO.setwarnings(False) with open('/sys/class/gpio/export','wb') as f: f.write(str(LED_PIN_BCM).encode()) with open('/sys/class/gpio/gpio%s/direction'%LED_PIN_BCM,'wb') as f: f.write(b'out') with open('/sys/class/gpio/gpio%s/value'%LED_PIN_BCM,'wb') as f: f.write(b'1') with warnings.catch_warnings(record=True) as w: GPIO.setup(LED_PIN, GPIO.OUT) # generate 'already in use' warning self.assertEqual(len(w),0) # should be no warnings with open('/sys/class/gpio/unexport','wb') as f: f.write(str(LED_PIN_BCM).encode()) GPIO.cleanup() GPIO.setwarnings(True) with open('/sys/class/gpio/export','wb') as f: f.write(str(LED_PIN_BCM).encode()) with open('/sys/class/gpio/gpio%s/direction'%LED_PIN_BCM,'wb') as f: f.write(b'out') with open('/sys/class/gpio/gpio%s/value'%LED_PIN_BCM,'wb') as f: f.write(b'1') with warnings.catch_warnings(record=True) as w: GPIO.setup(LED_PIN, GPIO.OUT) # generate 'already in use' warning self.assertEqual(w[0].category, RuntimeWarning) with open('/sys/class/gpio/unexport','wb') as f: f.write(str(LED_PIN_BCM).encode()) GPIO.cleanup()
def test_cleanall(self): GPIO.setup(LOOP_OUT, GPIO.OUT) GPIO.setup(LED_PIN, GPIO.OUT) self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT) self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT) GPIO.cleanup() self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN) self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
def test_outputread(self): """Test that an output() can be input()""" GPIO.setup(LED_PIN, GPIO.OUT) GPIO.output(LED_PIN, GPIO.HIGH) self.assertEqual(GPIO.input(LED_PIN), GPIO.HIGH) GPIO.output(LED_PIN, GPIO.LOW) self.assertEqual(GPIO.input(LED_PIN), GPIO.LOW) GPIO.cleanup()
def test_loopback(self): """Test output loops back to another input""" GPIO.setup(LOOP_IN, GPIO.IN, pull_up_down=GPIO.PUD_OFF) GPIO.setup(LOOP_OUT, GPIO.OUT, initial=GPIO.LOW) self.assertEqual(GPIO.input(LOOP_IN), GPIO.LOW) GPIO.output(LOOP_OUT, GPIO.HIGH) self.assertEqual(GPIO.input(LOOP_IN), GPIO.HIGH) GPIO.cleanup()
def test_cleanupwarning(self): """Test initial GPIO.cleanup() produces warning""" GPIO.setwarnings(False) GPIO.setup(SWITCH_PIN, GPIO.IN) with warnings.catch_warnings(record=True) as w: GPIO.cleanup() self.assertEqual(len(w),0) # no warnings GPIO.cleanup() self.assertEqual(len(w),0) # no warnings GPIO.setwarnings(True) GPIO.setup(SWITCH_PIN, GPIO.IN) with warnings.catch_warnings(record=True) as w: GPIO.cleanup() self.assertEqual(len(w),0) # no warnings GPIO.cleanup() self.assertEqual(w[0].category, RuntimeWarning) # a warning
def runTest(self): GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN_BCM, GPIO.IN) self.assertEqual(GPIO.gpio_function(LED_PIN_BCM), GPIO.IN) GPIO.setup(LED_PIN_BCM, GPIO.OUT) self.assertEqual(GPIO.gpio_function(LED_PIN_BCM), GPIO.OUT) GPIO.setmode(GPIO.BOARD) GPIO.setup(LED_PIN, GPIO.IN) self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN) GPIO.setup(LED_PIN, GPIO.OUT) self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
def runTest(self): GPIO.setup(LED_PIN, GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 50) pwm.start(100) print "\nPWM tests" response = raw_input('Is the LED on (y/n) ? ').upper() self.assertEqual(response,'Y') pwm.start(0) response = raw_input('Is the LED off (y/n) ? ').upper() self.assertEqual(response,'Y') print "LED Brighten/fade test..." for i in range(0,3): for x in range(0,101,5): pwm.ChangeDutyCycle(x) time.sleep(0.1) for x in range(100,-1,-5): pwm.ChangeDutyCycle(x) time.sleep(0.1) pwm.stop() response = raw_input('Did it work (y/n) ? ').upper() self.assertEqual(response,'Y') GPIO.cleanup()
import RaPi.GPIO as GPIO import time PIN_NUM = 12 GPIO.setmode(GPIO.BOARD) GPIO.setup(PIN_NUM,GPIO.OUT) frequency = 50 p = GPIO.PWM(PIN_NUM,frequency) p.start(0) try: while True: for dutyCycle in range(0,100,5): p.ChangeDutyCycle(dutyCycle) time.sleep(0.1) for dutyCycle in range(100,0,-5): p.ChangeDutyCycle(dutyCycle) time.sleep(0.1) except KeyboardInterrupt: pass p.stop() GPIO.cleanup()
import RaPi.GPIO as GPIO import time channel = 7 GPIO.setmode(GPIO.BOARD) GPIO.setup(channel, GPIO.IN, GPIO.PUD_DOWN) print " Now input is Low\n Our task is performed when it becomes High" while True: if GPIO.input(channel): print "Input was High,begin to perform" print "Count Down" for i in range(7, 0, -1): print "%d" % i time.sleep(1) print "Performed!" exit()
import RaPi.GPIO as GPIO import time #channel = 15 GPIO.setmode(GPIO.RAW) GPIO.setup(GPIO.PI+17,GPIO.IN,GPIO.PUD_DOWN) print " Now input is Low\n Our task is performed when it becomes High" while True: if GPIO.input(GPIO.PI+17): print "Input was High,begin to perform" print "Count Down" for i in range(7,0,-1): print "%d" %i time.sleep(1) print "Performed!" exit() GPIO.cleanup(GPIO.PI+17)
#!/usr/bin/env python import RaPi.GPIO as GPIO import time from threading import Timer PIN_NUM = 12 channel = 7 GPIO.setmode(GPIO.BOARD) GPIO.setup(PIN_NUM,GPIO.OUT) GPIO.output(PIN_NUM,True) print "\n value_%d = %d\n" %(PIN_NUM,GPIO.input(PIN_NUM)) GPIO.setup(channel,GPIO.IN,GPIO.PUD_DOWN) print "\n value_%d = %d\n" %(channel,GPIO.input(channel)) def makehigh(): print "\n value_%d = %d\n" %(channel,GPIO.input(channel)) GPIO.output(PIN_NUM,False) print "\n value_%d = %d\n" %(PIN_NUM,GPIO.input(PIN_NUM)) GPIO.wait_for_edge(channel, GPIO.RISING) t = Timer(1,makehigh) t.start()
#!/usr/bin/env python import RaPi.GPIO as GPIO import time from threading import Timer SWITCH_PIN = 18 GPIO.setmode(GPIO.BOARD) GPIO.setup(SWITCH_PIN,GPIO.IN,GPIO.PUD_UP) print "\n value_%d = %d\n" %(SWITCH_PIN,GPIO.input(SWITCH_PIN)) GPIO.add_event_detect(SWITCH_PIN, GPIO.RISING,bouncetime=200) # add rising edge detection on a channel switchcount = 0 while switchcount < 2: if GPIO.event_detected(SWITCH_PIN): switchcount += 1 print 'Button pressed',switchcount print "\n value_%d = %d\n" %(SWITCH_PIN,GPIO.input(SWITCH_PIN)) GPIO.remove_event_detect(SWITCH_PIN)
def test_output_on_input(self): """Test output() can not be done on input""" GPIO.setup(SWITCH_PIN, GPIO.IN) with self.assertRaises(RuntimeError): GPIO.output(SWITCH_PIN, GPIO.LOW) GPIO.cleanup()
import RaPi.GPIO as GPIO validPins = [11,12,13,15] GPIO.setmode(GPIO.BOARD) GPIO.setup(11,GPIO.IN) GPIO.setup(12,GPIO.OUT) GPIO.setup(13,GPIO.IN) GPIO.setup(15,GPIO.OUT) for pin in validPins: fun = GPIO.gpio_function(pin) print fun
#!/usr/bin/env python import RaPi.GPIO as GPIO import time #LED Mode BCM #PINs = [2,3,4,14,15,17,18,27,22,23,24,10,9,25,11,8,7,0,1,5,6,12,13,19,16,26,20,21] #[2,3,4,14,18,23,24,10,9,11,8,7,0,1,5,6,12,13,19,16,26,20,21] #[15,17,27,22,25] #GPIO.setmode(GPIO.BCM) #LED Mode BOARD #PINs = [3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,27,28,29,31,32,33,35,36,37,38,40] #[3,5,7,8,12,16,18,19,21,23,24,26,27,28,29,31,32,33,35,36,37,38,40] #[10,11,13,15,22] PINs = [10] GPIO.setmode(GPIO.BOARD) while True: for PIN_NUM in range(len(PINs)): try: GPIO.setup(PINs[PIN_NUM], GPIO.OUT) except: print("Failed to setup GPIO %d", PIN_NUM) GPIO.output(PINs[PIN_NUM], True) time.sleep(0.5) GPIO.output(PINs[PIN_NUM], False) time.sleep(0.5)
def setUp(self): GPIO.setup(LOOP_IN, GPIO.IN) GPIO.setup(LOOP_OUT, GPIO.OUT)
def runTest(self): # Test mode not set (BOARD or BCM) exception with self.assertRaises(RuntimeError) as e: GPIO.setup(LED_PIN, GPIO.OUT) self.assertEqual(str(e.exception), 'Please set pin numbering mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)') GPIO.setmode(GPIO.BOARD) # Test not set as OUTPUT message with self.assertRaises(RuntimeError) as e: GPIO.output(LED_PIN, GPIO.HIGH) self.assertEqual(str(e.exception), 'The GPIO channel has not been set up as an OUTPUT') GPIO.setup(LED_PIN, GPIO.IN) # Test setup(..., pull_up_down=GPIO.HIGH) raises exception with self.assertRaises(ValueError): GPIO.setup(LED_PIN, GPIO.IN, pull_up_down=GPIO.HIGH) # Test 'already in use' warning GPIO.cleanup() with open('/sys/class/gpio/export','wb') as f: f.write(str(LED_PIN_BCM).encode()) with open('/sys/class/gpio/gpio%s/direction'%LED_PIN_BCM,'wb') as f: f.write(b'out') with open('/sys/class/gpio/gpio%s/value'%LED_PIN_BCM,'wb') as f: f.write(b'1') with warnings.catch_warnings(record=True) as w: GPIO.setup(LED_PIN, GPIO.OUT) # generate 'already in use' warning self.assertEqual(w[0].category, RuntimeWarning) with open('/sys/class/gpio/unexport','wb') as f: f.write(str(LED_PIN_BCM).encode()) GPIO.cleanup() # test initial value of high reads back as high GPIO.setup(LED_PIN, GPIO.OUT, initial=GPIO.HIGH) self.assertEqual(GPIO.input(LED_PIN), GPIO.HIGH) GPIO.cleanup() # test initial value of low reads back as low GPIO.setup(LED_PIN, GPIO.OUT, initial=GPIO.LOW) self.assertEqual(GPIO.input(LED_PIN), GPIO.LOW) GPIO.cleanup()
def setUp(self): GPIO.setup(SWITCH_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
import RaPi.GPIO as GPIO import time #PIN_NUM = 15 #GPIO.setmode(GPIO.BOARD) #GPIO.setup(PIN_NUM,GPIO.OUT) GPIO.setmode(GPIO.RAW) GPIO.setup(GPIO.PI+17,GPIO.OUT) frequency = 50 #p = GPIO.PWM(PIN_NUM,frequency) p = GPIO.PWM(GPIO.PI+17,frequency) p.start(0) try: while True: for dutyCycle in range(0,100,5): p.ChangeDutyCycle(dutyCycle) time.sleep(0.1) for dutyCycle in range(100,0,-5): p.ChangeDutyCycle(dutyCycle) time.sleep(0.1) except KeyboardInterrupt: pass p.stop() GPIO.cleanup()
#!/usr/bin/env python import RaPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_UP) print "\n value_7 = %d\n" %(GPIO.input(7)) GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) print "\n value_8 = %d\n" %(GPIO.input(8)) GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP) print "\n value_12 = %d\n" %(GPIO.input(12)) GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) print "\n value_12 = %d\n" %(GPIO.input(12)) #GPIO.cleanup()
#!/usr/bin/env python import RaPi.GPIO as GPIO import time PIN_0 = 3 PIN_1 = 5 #GPIO.setmode(GPIO.BCM) GPIO.setmode(GPIO.BOARD) GPIO.setup(PIN_0,GPIO.OUT) GPIO.setup(PIN_1,GPIO.IN) while True: GPIO.output(PIN_0,True) print "\n value = %d\n" %(GPIO.input(PIN_1)) time.sleep(1) GPIO.output(PIN_0,False) print "\n value = %d\n" %(GPIO.input(PIN_1)) time.sleep(1) GPIO.cleanup()