Two Digits Led display with PICO and LB-402-MD
This is a Raspberry Pico project, with a micropython app to manage the LB-402-Dn series two-digits led display. In the example LB-402-MD.
Components and supplies
Male/Female Jumper Wires
Breadboard (generic)
Raspberry Pi Pico
LB-402-DN
Resistor 221 ohm
Project description
Code
lb402md.py
python
Micropython code for display LB-402-MD. In the example set datetime from pc in rtc of pico, display hh - mm - ss in sequence in the display.
1#diamond2016 - richardg - 25.04.2022 2# lb402md 3from machine import Pin 4import utime 5from machine import RTC 6 7# assigns segments of pl402md to pico pins value 1 (high is led off) 8display_dict = { 9 'e1':Pin(1, Pin.OUT, pull=None, value=1), 10 'd1':Pin(2, Pin.OUT, pull=None, value=1), 11 'c1':Pin(3, Pin.OUT, pull=None, value=1), 12 'dp1':Pin(4, Pin.OUT, pull=None, value=1), 13 'e2':Pin(5, Pin.OUT, pull=None, value=1), 14 'd2':Pin(6, Pin.OUT, pull=None, value=1), 15 'g2':Pin(7, Pin.OUT, pull=None, value=1), 16 'c2':Pin(8, Pin.OUT, pull=None, value=1), 17 'dp2':Pin(9, Pin.OUT, pull=None, value=1), 18 'b2':Pin(10, Pin.OUT, pull=None, value=1), 19 'a2':Pin(11, Pin.OUT, pull=None, value=1), 20 'f2':Pin(12, Pin.OUT, pull=None, value=1), 21 'b1':Pin(13, Pin.OUT, pull=None, value=1), 22 'a1':Pin(14, Pin.OUT, pull=None, value=1), 23 'g1':Pin(15, Pin.OUT, pull=None, value=1), 24 'f1':Pin(16, Pin.OUT, pull=None, value=1) 25} 26 27all_dig1 = {'e1','d1','c1','b1','a1','g1','f1'} 28all_dig2 = {'e2','d2','g2','c2','b2','a2','f2'} 29zero_dig1 = {'e1','d1','c1','b1','a1','f1'} 30zero_dig2 = {'e2','d2','c2','b2','a2','f2'} 31digits_dict = { 32 ('L',0): zero_dig1, 33 ('L',1): {'b1', 'c1'}, 34 ('L',2): all_dig1 - {'f1', 'c1'}, 35 ('L',3): all_dig1 - {'f1', 'e1'}, 36 ('L',4): all_dig1 - {'a1', 'd1', 'e1'}, 37 ('L',5): all_dig1 - {'b1', 'e1'}, 38 ('L',6): all_dig1 - {'a1', 'b1'}, 39 ('L',7): {'a1', 'b1', 'c1'}, 40 ('L',8): all_dig1, 41 ('L',9): all_dig1 - {'e1'}, 42 ('L','p'): {'dp1'}, 43 ('R',0): zero_dig2, 44 ('R',1): {'b2', 'c2'}, 45 ('R',2): all_dig2 - {'f2', 'c2'}, 46 ('R',3): all_dig2 - {'f2', 'e2'}, 47 ('R',4): all_dig2 - {'a2', 'd2', 'e2'}, 48 ('R',5): all_dig2 - {'b2', 'e2'}, 49 ('R',6): all_dig2 - {'a2', 'b2'}, 50 ('R',7): {'a2', 'b2', 'c2'}, 51 ('R',8): all_dig2, 52 ('R',9): all_dig2 - {'e2'}, 53 ('R','p'): {'dp2'} 54} 55 56def go(cmd): 57 if cmd == "L": 58 for k in display_dict.keys(): 59 if (k[-1] == '1'): 60 led = display_dict[k] 61 print ("led: " + k) 62 led.toggle() 63 utime.sleep(1.0) 64 led.toggle() 65 elif cmd == "R": 66 for k in display_dict.keys(): 67 if (k[-1] == '2'): 68 led = display_dict[k] 69 print ("led: " + k) 70 led.toggle() 71 utime.sleep(1.0) 72 led.toggle() 73 74 else: 75 led = display_dict[cmd] 76 print ("led: " + cmd) 77 led.toggle() 78 utime.sleep(2.0) 79 led.toggle() 80 81def reset (digit): 82 if digit == 'L': 83 for k in all_dig1: 84 led = display_dict[k] 85 led.value(1) 86 led = display_dict['dp1'] 87 led.value(1) 88 elif digit == 'R': 89 for k in all_dig2: 90 led = display_dict[k] 91 led.value(1) #high is led off 92 led = display_dict['dp2'] 93 led.value(1) 94 else: 95 reset('L') 96 reset('R') 97 98def display(): 99 for k in digits_dict.keys(): 100 set = digits_dict[k] 101 reset() 102 for segment in set: 103 print (segment) 104 led = display_dict[segment] 105 led.value(0) #low is led on 106 utime.sleep(1.0) 107 108def show(digit, number): 109 set = digits_dict[(digit, number)] 110 reset(digit) 111 for segment in set: 112 print (segment) 113 led = display_dict[segment] 114 led.value(0) #low is led on 115 116def show2Digits(number): 117 if (number > 99): 118 return 119 reset(0) 120 l = number // 10 121 show('L',l) 122 r = (number - l * 10) % 10 123 show('R',r) 124 125def hhmm (): 126 rtc = machine.RTC() 127 # (year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]) 128 rtc.datetime() 129 print(rtc.datetime()[4]) 130 show2Digits(rtc.datetime()[4]) 131 utime.sleep (2.0) 132 show2Digits(rtc.datetime()[5]) 133 utime.sleep (2.0) 134 show2Digits(rtc.datetime()[6]) 135 utime.sleep (2.0) 136 137while True: 138 hhmm() 139
lb402md.py
python
Micropython code for display LB-402-MD. In the example set datetime from pc in rtc of pico, display hh - mm - ss in sequence in the display.
1#diamond2016 - richardg - 25.04.2022 2# lb402md 3from machine import Pin 4import utime 5from machine import RTC 6 7# assigns segments of pl402md to pico pins value 1 (high is led off) 8display_dict = { 9 'e1':Pin(1, Pin.OUT, pull=None, value=1), 10 'd1':Pin(2, Pin.OUT, pull=None, value=1), 11 'c1':Pin(3, Pin.OUT, pull=None, value=1), 12 'dp1':Pin(4, Pin.OUT, pull=None, value=1), 13 'e2':Pin(5, Pin.OUT, pull=None, value=1), 14 'd2':Pin(6, Pin.OUT, pull=None, value=1), 15 'g2':Pin(7, Pin.OUT, pull=None, value=1), 16 'c2':Pin(8, Pin.OUT, pull=None, value=1), 17 'dp2':Pin(9, Pin.OUT, pull=None, value=1), 18 'b2':Pin(10, Pin.OUT, pull=None, value=1), 19 'a2':Pin(11, Pin.OUT, pull=None, value=1), 20 'f2':Pin(12, Pin.OUT, pull=None, value=1), 21 'b1':Pin(13, Pin.OUT, pull=None, value=1), 22 'a1':Pin(14, Pin.OUT, pull=None, value=1), 23 'g1':Pin(15, Pin.OUT, pull=None, value=1), 24 'f1':Pin(16, Pin.OUT, pull=None, value=1) 25} 26 27all_dig1 = {'e1','d1','c1','b1','a1','g1','f1'} 28all_dig2 = {'e2','d2','g2','c2','b2','a2','f2'} 29zero_dig1 = {'e1','d1','c1','b1','a1','f1'} 30zero_dig2 = {'e2','d2','c2','b2','a2','f2'} 31digits_dict = { 32 ('L',0): zero_dig1, 33 ('L',1): {'b1', 'c1'}, 34 ('L',2): all_dig1 - {'f1', 'c1'}, 35 ('L',3): all_dig1 - {'f1', 'e1'}, 36 ('L',4): all_dig1 - {'a1', 'd1', 'e1'}, 37 ('L',5): all_dig1 - {'b1', 'e1'}, 38 ('L',6): all_dig1 - {'a1', 'b1'}, 39 ('L',7): {'a1', 'b1', 'c1'}, 40 ('L',8): all_dig1, 41 ('L',9): all_dig1 - {'e1'}, 42 ('L','p'): {'dp1'}, 43 ('R',0): zero_dig2, 44 ('R',1): {'b2', 'c2'}, 45 ('R',2): all_dig2 - {'f2', 'c2'}, 46 ('R',3): all_dig2 - {'f2', 'e2'}, 47 ('R',4): all_dig2 - {'a2', 'd2', 'e2'}, 48 ('R',5): all_dig2 - {'b2', 'e2'}, 49 ('R',6): all_dig2 - {'a2', 'b2'}, 50 ('R',7): {'a2', 'b2', 'c2'}, 51 ('R',8): all_dig2, 52 ('R',9): all_dig2 - {'e2'}, 53 ('R','p'): {'dp2'} 54} 55 56def go(cmd): 57 if cmd == "L": 58 for k in display_dict.keys(): 59 if (k[-1] == '1'): 60 led = display_dict[k] 61 print ("led: " + k) 62 led.toggle() 63 utime.sleep(1.0) 64 led.toggle() 65 elif cmd == "R": 66 for k in display_dict.keys(): 67 if (k[-1] == '2'): 68 led = display_dict[k] 69 print ("led: " + k) 70 led.toggle() 71 utime.sleep(1.0) 72 led.toggle() 73 74 else: 75 led = display_dict[cmd] 76 print ("led: " + cmd) 77 led.toggle() 78 utime.sleep(2.0) 79 led.toggle() 80 81def reset (digit): 82 if digit == 'L': 83 for k in all_dig1: 84 led = display_dict[k] 85 led.value(1) 86 led = display_dict['dp1'] 87 led.value(1) 88 elif digit == 'R': 89 for k in all_dig2: 90 led = display_dict[k] 91 led.value(1) #high is led off 92 led = display_dict['dp2'] 93 led.value(1) 94 else: 95 reset('L') 96 reset('R') 97 98def display(): 99 for k in digits_dict.keys(): 100 set = digits_dict[k] 101 reset() 102 for segment in set: 103 print (segment) 104 led = display_dict[segment] 105 led.value(0) #low is led on 106 utime.sleep(1.0) 107 108def show(digit, number): 109 set = digits_dict[(digit, number)] 110 reset(digit) 111 for segment in set: 112 print (segment) 113 led = display_dict[segment] 114 led.value(0) #low is led on 115 116def show2Digits(number): 117 if (number > 99): 118 return 119 reset(0) 120 l = number // 10 121 show('L',l) 122 r = (number - l * 10) % 10 123 show('R',r) 124 125def hhmm (): 126 rtc = machine.RTC() 127 # (year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]) 128 rtc.datetime() 129 print(rtc.datetime()[4]) 130 show2Digits(rtc.datetime()[4]) 131 utime.sleep (2.0) 132 show2Digits(rtc.datetime()[5]) 133 utime.sleep (2.0) 134 show2Digits(rtc.datetime()[6]) 135 utime.sleep (2.0) 136 137while True: 138 hhmm() 139
Downloadable files
PICo pins
PICO datasheet
PICo pins
Breadboard with display and connections from PICo
foto
Breadboard with display and connections from PICo

pin assignements
connections PICO - display module
pin assignements
PICo pins
PICO datasheet
PICo pins
pin assignements
connections PICO - display module
pin assignements
Comments
Only logged in users can leave comments