testtest
This commit is contained in:
174
test/andi/v1.py
Normal file
174
test/andi/v1.py
Normal file
@@ -0,0 +1,174 @@
|
||||
import wiringpi as wp
|
||||
from time import sleep
|
||||
|
||||
i2c_addr = 0x21
|
||||
base_addr = 81
|
||||
pins = range(base_addr, base_addr + 16)
|
||||
pins = [22, 27, 17, 19, 13, 6, 5, 20, 21, 26, 1, 12, 16, 4]
|
||||
|
||||
""" has to be inverted
|
||||
pins_segment_select = [81, 82, 83]"""
|
||||
pins_segment_select = [83, 82, 81]
|
||||
pins_segment_select = [22, 27, 17]
|
||||
|
||||
""" has to be inverted
|
||||
pins_digit_select = [84, 85, 86, 87] """
|
||||
#pins_digit_select = [87, 86, 85, 84]
|
||||
pins_digit_select = [19, 13, 6, 5]
|
||||
|
||||
#pins_display_select = [89, 90, 91, 92, 93]
|
||||
pins_display_select = [1, 20, 12, 16, 4]
|
||||
pin_run = 95
|
||||
pin_run = 21
|
||||
pin_lt = 88
|
||||
pin_lt = 26
|
||||
|
||||
high = False
|
||||
low = not high
|
||||
|
||||
"""
|
||||
def init():
|
||||
wp.mcp23017Setup(base_addr, i2c_addr)
|
||||
for pin in pins:
|
||||
wp.pinMode(pin, 1)
|
||||
init()
|
||||
"""
|
||||
def init():
|
||||
wp.wiringPiSetupGpio()
|
||||
for pin in pins:
|
||||
wp.pinMode(pin, 1)
|
||||
init()
|
||||
|
||||
def init_ones():
|
||||
for pin in pins:
|
||||
wp.digitalWrite(pin, 1)
|
||||
def init_zeros():
|
||||
for pin in pins:
|
||||
wp.digitalWrite(pin, 0)
|
||||
def init_high():
|
||||
for pin in pins:
|
||||
wp.digitalWrite(pin, high)
|
||||
def init_low():
|
||||
for pin in pins:
|
||||
wp.digitalWrite(pin, low)
|
||||
def dec2bin_high(dec, digits):
|
||||
bin_str = format(dec, '#0' + str(digits + 2) + 'b')[2:]
|
||||
return map(lambda x: high if x == '1' else low, bin_str)
|
||||
def dec2bin_low(dec, digits):
|
||||
bin_str = format(dec, '#0' + str(digits + 2) + 'b')[2:]
|
||||
return map(lambda x: low if x == '1' else high, bin_str)
|
||||
def toggle_run():
|
||||
if wp.digitalRead(pin_run) == 0:
|
||||
#print("enable RUN")
|
||||
wp.digitalWrite(pin_run, 1)
|
||||
else:
|
||||
#print("disable RUN")
|
||||
wp.digitalWrite(pin_run, 0)
|
||||
def toggle_lt():
|
||||
if wp.digitalRead(pin_lt) == 0:
|
||||
#print("enable LT")
|
||||
wp.digitalWrite(pin_lt, 1)
|
||||
else:
|
||||
#print("disable LT")
|
||||
wp.digitalWrite(pin_lt, 0)
|
||||
def check_decimal_for_validity(decimal, lower, upper):
|
||||
if type(decimal) is not type(1):
|
||||
print("input not a decimal")
|
||||
return False
|
||||
if decimal < lower or decimal > upper:
|
||||
print("decimal out of range")
|
||||
return False
|
||||
return True
|
||||
|
||||
def select_segment(decimal):
|
||||
#if not check_decimal_for_validity(decimal, 0, 7):
|
||||
# print("input error, no segment selected")
|
||||
# return
|
||||
values = dec2bin_high(decimal, 3)
|
||||
pss = pins_segment_select
|
||||
wp.digitalWrite(pss[0], values[0])
|
||||
wp.digitalWrite(pss[1], values[1])
|
||||
wp.digitalWrite(pss[2], values[2])
|
||||
|
||||
def select_digit(decimal):
|
||||
#if not check_decimal_for_validity(decimal, 0, 9):
|
||||
# print("input error, no digit selected")
|
||||
# return
|
||||
values = dec2bin_low(decimal, 4)
|
||||
pds = pins_digit_select
|
||||
wp.digitalWrite(pds[0], values[0])
|
||||
wp.digitalWrite(pds[1], values[1])
|
||||
wp.digitalWrite(pds[2], values[2])
|
||||
wp.digitalWrite(pds[3], values[3])
|
||||
|
||||
def select_display(decimal):
|
||||
#if not check_decimal_for_validity(decimal, 1, 5):
|
||||
# print("input error, no display selected")
|
||||
# return
|
||||
wp.digitalWrite(pins_display_select[int(decimal) - 1], high)
|
||||
|
||||
def unselect_display(decimal):
|
||||
#if not check_decimal_for_validity(decimal, 1, 5):
|
||||
# print("input error, no display unselected")
|
||||
# return
|
||||
wp.digitalWrite(pins_display_select[int(decimal) - 1], low)
|
||||
|
||||
def unselect_all_displays():
|
||||
for pin in pins_display_select:
|
||||
wp.digitalWrite(pin, low)
|
||||
|
||||
def select_all_displays():
|
||||
for pin in pins_display_select:
|
||||
wp.digitalWrite(pin, high)
|
||||
|
||||
def toggle_display(decimal):
|
||||
select_display(decimal)
|
||||
unselect_display(decimal)
|
||||
|
||||
def read_pins():
|
||||
for pin in pins:
|
||||
print(str(pin) + ' --> ' + str(wp.digitalRead(pin)))
|
||||
|
||||
def digit2display(disp, dig):
|
||||
select_display(disp)
|
||||
select_digit(dig)
|
||||
unselect_all_displays()
|
||||
|
||||
def num2seg(num, seg):
|
||||
select_segment(seg)
|
||||
select_digit(num)
|
||||
toggle_display(3)
|
||||
|
||||
def fancy(number,disp):
|
||||
num_arr = map(int, list(str(number)))
|
||||
num_arr = num_arr + [0] * max(0, (8 - len(num_arr)))
|
||||
if len(num_arr) > 8:
|
||||
num_arr = num_arr[:8]
|
||||
print(num_arr)
|
||||
num_arr = num_arr[-1::-1]
|
||||
|
||||
for j in range(5000):
|
||||
for i in range(8):
|
||||
select_segment(i)
|
||||
select_digit(num_arr[i])
|
||||
toggle_display(disp)
|
||||
sleep(0.001)
|
||||
|
||||
def al(number,s):
|
||||
num_arr = map(int, list(str(number)))[-1::-1]
|
||||
for i in range(5000):
|
||||
for segment in range(8):
|
||||
for disp in range(2,6):
|
||||
select_segment(segment)
|
||||
select_digit(num_arr[segment])
|
||||
num_arr = num_arr[-1::-1]
|
||||
toggle_display(disp)
|
||||
sleep(s)
|
||||
|
||||
def ini():
|
||||
init()
|
||||
init_low()
|
||||
toggle_run()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user