|
"""
ePy-Lite_Charlieplexing.py
Reference:
http://razzpisampler.oreilly.com/ch04.html
------------------------------------------
ePy-Lite LED
Pin Pin
----------------------------------------
P6
P8
P7
"""
from
machine import Switch #Get button KEY
library
from
machine import Pin
from
utime import sleep_ms
pin_led_states
= [
[-1, -1, -1], #
0
[ 1, 0, -1], #
1
[ 0, 1, -1], #
2
[-1, 1, 0], #
3
[-1, 0, 1], #
4
[ 1, -1, 0], #
5
[ 0, -1, 1] # 6
]
class Charlieplexing:
def __init__(self,
LEDPin1,LEDPin2,LEDPin3):
self.LEDPin1=LEDPin1
self.LEDPin2=LEDPin2
self.LEDPin3=LEDPin3
def light_led(self,
led_number):
pin_state=pin_led_states[led_number][0]
if
pin_state == -1:
self.LEDPin1.init(Pin.IN,
Pin.PULL_NONE)
else:
self.LEDPin1.init(Pin.OUT,
value=pin_state)
pin_state=pin_led_states[led_number][1]
if
pin_state == -1:
self.LEDPin2.init(Pin.IN,
Pin.PULL_NONE)
else:
self.LEDPin2.init(Pin.OUT,
value=pin_state)
pin_state=pin_led_states[led_number][2]
if
pin_state == -1:
self.LEDPin3.init(Pin.IN,
Pin.PULL_NONE)
else:
self.LEDPin3.init(Pin.OUT,
value=pin_state)
def key_int():
global
KeyDone
KeyDone = True
#
Start Function
if
__name__ == '__main__':
KeyA =
Switch('keya') #Create button A
KeyA.
(key_int)
KeyDone = False
LDP1=Pin.board.P6
LDP2=Pin.board.P7
LDP3=Pin.board.P8
LEDx6 =
Charlieplexing(LDP1,LDP2,LDP3)
while True:
for
x in range(7):
LEDx6.light_led(x)
sleep_ms(100)
if
KeyDone == True: #Press
A Key
break
LEDx6.light_led(0)
KeyA.callback(None)
|