Esempio n. 1
0
 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()
Esempio n. 2
0
 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()
Esempio n. 3
0
    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()
Esempio n. 4
0
def testEventDetect(pin, trigger):
	switchCnt = 0	
	GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP)

	GPIO.add_event_detect(pin, trigger)

	while switchCnt < 2:   
		if GPIO.event_detected(pin):
			switchCnt += 1
			print 'The event has been detected'
			print "\n value_%d = %d\n" %(pin,GPIO.input(pin))

	GPIO.remove_event_detect(pin)
Esempio n. 5
0
def calDistance(trigger, echo):
    stop = start = 0
    GPIO.setup(trigger, GPIO.OUT)
    GPIO.setup(echo, GPIO.IN)
    GPIO.output(trigger, 0)
    time.sleep(0.5)
    
    GPIO.output(trigger, 1)
    time.sleep(0.00001)
    GPIO.output(trigger, 0)
    start = time.time()
    while GPIO.input(echo) == 0:
        start = time.time()

    while GPIO.input(echo) == 1:
        stop = time.time()

    delta = stop - start
    print("UltraSonic time %.8f" % (delta))
    distance = delta * 34300
    distance = distance / 2.0
    GPIO.cleanup()
    return distance
Esempio n. 6
0
def SPIread(opcode, addr):
    GPIO.setup(SPI_MISO, GPIO.IN)
    GPIO.output(SPI_CS0, GPIO.LOW)
    SPIsendValue(opcode | SPI_SLAVE_READ)
    SPIsendValue(addr)
    value = 0
    for i in range(8):
        value <<= 1
        if(GPIO.input(SPI_MISO)):
            value |= 0x01
        GPIO.output(SPI_SCLK, GPIO.HIGH)
        GPIO.output(SPI_SCLK, GPIO.LOW)
    GPIO.output(SPI_CS0, GPIO.HIGH)
    return value
Esempio n. 7
0
#!/usr/bin/env python
import LMK.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()
def my_callback(channel):
	print "Callback trigger %d" %channel
	print "Now value of the Pin is %d" %(GPIO.input(GPIO.PI+10))
	print "Click Ctr + C to exit"
import LMK.GPIO as GPIO 
import time

#PIN_NUM = 24
#GPIO.setmode(GPIO.BOARD)
#GPIO.setup(PIN_NUM,GPIO.IN,GPIO.PUD_DOWN)

GPIO.setmode(GPIO.RAW)
GPIO.setup(GPIO.PI+10,GPIO.IN,GPIO.PUD_DOWN)

print "The value of Pin %d is %d" %(GPIO.PI+10,GPIO.input(GPIO.PI+10))


def my_callback(channel):
	print "Callback trigger %d" %channel
	print "Now value of the Pin is %d" %(GPIO.input(GPIO.PI+10))
	print "Click Ctr + C to exit"

GPIO.add_event_detect(GPIO.PI+10,GPIO.RISING,callback = my_callback,bouncetime = 300)

try:
    while True:
	time.sleep(0.1)
except KeyboardInterrupt:
    pass

GPIO.cleanup()

Esempio n. 10
0
#!/usr/bin/env python
import LMK.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)
Esempio n. 11
0
def soundDetect(channel):
    print("Sound detect on GPIO %d is %d" %(soundPin, GPIO.input(soundPin)))
    sendCmd("sensor-update soundDetect %d" % (GPIO.input(soundPin)))
Esempio n. 12
0
#!/usr/bin/env python
import LMK.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()
Esempio n. 13
0
                                        print("Data XOR", Led)
                                    Led = '{:08b}'.format(Led)[::-1]
                                    if Debug:
                                        print("Led send", Led)
                                    Input = int(Led[B])
                                    print ("LNDI-in-{0} -> {1}".format(B, Input))
                                    sendCmd("sensor-update LNDI-in-{0} {1}".format(B, Input))
                        except:
                            print("Can't update LNinput")

                        try:
                            for i in range(len(GPIOset)):
                                if GPIOset[i]:
                                    Dir = GPIOdir[i]
                                    if Dir == "IN":
                                        Input = GPIO.input(i)
                                        print ("Pin: {0} -> {1}".format(i, Input))
                                        sendCmd("sensor-update GPIO-{0} {1}".format(i, Input))
                        except:
                            print("Failed")

                        if Addons["RTC"]:
                            DS1307 = RTC_DS1307.RTC_DS1307(2, 0x68)
                            DS1307.write_now()
                            currenttime = datetime.datetime.utcnow()
                            print("DS1307 = \t\t%s" % DS1307.read_datetime())
                            print("System Time = \t" + time.strftime("%Y-%m-%d %H:%M:%S"))
    
                            sendCmd("sensor-update Day " + str(DS1307._read_day()))
                            sendCmd("sensor-update Date " + str(DS1307._read_date()))
                            sendCmd("sensor-update Month " + str(DS1307._read_month()))
Esempio n. 14
0
#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]
#GPIO.setmode(GPIO.BOARD)

#Switch BCM [4,14,23,24,10,9,11,8,7]
#Switch BOARD [7,8,16,18,19,21,23,24,26]   18,19,26
PIN_NUM = 24
GPIO.setmode(GPIO.BCM)
#GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_NUM,GPIO.IN,GPIO.PUD_UP)


print "The value of Pin %d is %d" %(PIN_NUM,GPIO.input(PIN_NUM))


def my_callback(channel):
	print "The value of Pin %d is %d" %(PIN_NUM,GPIO.input(PIN_NUM))

	print "Callback trigger %d" %channel
	print "Now value of the Pin is %d" %(GPIO.input(PIN_NUM))
	print "Click Ctr + C to exit"

GPIO.add_event_detect(PIN_NUM,GPIO.RISING,callback = my_callback,bouncetime = 300)


print "The value of Pin %d is %d" %(PIN_NUM,GPIO.input(PIN_NUM))

Esempio n. 15
0
def my_callback(channel):
	print "The value of Pin %d is %d" %(PIN_NUM,GPIO.input(PIN_NUM))

	print "Callback trigger %d" %channel
	print "Now value of the Pin is %d" %(GPIO.input(PIN_NUM))
	print "Click Ctr + C to exit"
Esempio n. 16
0
#!/usr/bin/env python
import LMK.GPIO as GPIO
import time
PIN_NUM = 7
PIN_IN = 10
val = 0
GPIO.setmode(GPIO.BOARD)
while 1:
    try:
        GPIO.setup(PIN_NUM, GPIO.OUT)
        GPIO.setup(PIN_IN, GPIO.IN)
    except:
        print("fail to setup GPIO %d", PIN_NUM)
    val = GPIO.input(PIN_IN)
    if val:
        GPIO.output(PIN_NUM, True)
    else:
        GPIO.output(PIN_NUM, False)
Esempio n. 17
0
import LMK.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)
Esempio n. 18
0
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))
Esempio n. 19
0
#!/usr/bin/env python
import LMK.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()
Esempio n. 20
0
import LMK.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()
Esempio n. 21
0
'''
We use the program to test input of the pins
'''
import LMK.GPIO as GPIO
import time

#----------P3  P5  P7  P8  P10  P11  P12  P13  P15  P16  P18  P19 P21  P22  P23  P24 P26 P27 P28 P29  P31  P32  P33  P35  P36  P37  P38  P40-----------#
phyPins = (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)
bcmPins = (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)

pinOut = 3
pinIn  = 5

GPIO.setmode(GPIO.BOARD)
GPIO.setup(pinOut,GPIO.OUT)
GPIO.setup(pinIn,GPIO.IN)

while True:
	GPIO.output(pinOut,True)
	print "value = %d\n" %(GPIO.input(pinIn)) 
	time.sleep(1)
	GPIO.output(pinOut,False)
	print "value = %d\n" %(GPIO.input(pinIn))
	time.sleep(1)

GPIO.cleanup()