Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.18 KB | None | 0 0
  1. # 1) Testapplicatie
  2. class ShiftRegister:
  3.     def __init__(self, ds_pin=DS, shcp_pin=SHCP, stcp_pin=STCP, mr_pin=MR, oe_pin=OE):
  4.         self.ds_pin = ds_pin
  5.         self.shcp_pin = shcp_pin
  6.         self.stcp_pin = stcp_pin
  7.         self.mr_pin = mr_pin
  8.         self.oe_pin = oe_pin
  9.         self.pins = [self.ds_pin, self.shcp_pin, self.stcp_pin, self.mr_pin, self.oe_pin]
  10.         for i in range(len(self.pins)):
  11.             GPIO.setup(self.pins[i], GPIO.OUT)
  12.             GPIO.output(self.pins[i], GPIO.LOW)
  13.         GPIO.output(self.pins[3], GPIO.HIGH)
  14.  
  15.     def write_bit(self, value):
  16.         if isinstance(value, int) and 0 <= value <= 1:
  17.             if value == 1:
  18.                 GPIO.output(self.ds_pin, GPIO.HIGH)
  19.             else:
  20.                 GPIO.output(self.ds_pin, GPIO.LOW)
  21.             GPIO.output(self.shcp_pin, GPIO.LOW)
  22.             time.sleep(1 / FREQ / 2)
  23.             GPIO.output(self.shcp_pin, GPIO.HIGH)
  24.             time.sleep(1 / FREQ / 2)
  25.         else:
  26.             log.error("Een verkeerde waarde werd opgegeven!")
  27.             raise ValueError('Een verkeerde waarde werd doorgegeven.')
  28.  
  29.  
  30.     def copy_to_storage_register(self):
  31.         GPIO.output(self.stcp_pin, GPIO.LOW)
  32.         time.sleep(1 / FREQ / 2)
  33.         GPIO.output(self.stcp_pin, GPIO.HIGH)
  34.         time.sleep(1 / FREQ / 2)
  35.  
  36.     def write_byte(self, value):
  37.         prefix = ''
  38.         for i in range(8-len(str(value))):
  39.             prefix += '0'
  40.         finbyte = prefix + value
  41.         for i in range(len(finbyte)):
  42.             self.write_bit(int(finbyte[i]))
  43.         self.copy_to_storage_register()
  44.  
  45.     def reset_shift_register(self):
  46.         GPIO.output(self.pins[3], GPIO.LOW)
  47.         GPIO.output(self.pins[3], GPIO.HIGH)
  48.  
  49.     def reset_storage_register(self):
  50.         GPIO.output(self.pins[3], GPIO.LOW)
  51.         GPIO.output(self.pins[2], GPIO.HIGH)
  52.         GPIO.output(self.pins[3], GPIO.HIGH)
  53.         GPIO.output(self.pins[2], GPIO.LOW)
  54.  
  55.  
  56. def shiftreg_demo():
  57.     ss = ShiftRegister()
  58.     value = 1
  59.     while value < 0xff:
  60.         ss.write_byte(bin(value)[2:])
  61.         ss.copy_to_storage_register()
  62.         time.sleep(1)
  63.         value <<= 1
  64.  
  65. class SevenSegment:
  66.     def __init__(self):
  67.         self.shreg = ShiftRegister()
  68.         for i in range(0,len(PIN_DISPLAY_CATHODES)):
  69.             GPIO.setup(PIN_DISPLAY_CATHODES[i], GPIO.OUT)
  70.             GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  71.  
  72.  
  73.     def show_segments(self):
  74.         for i in range(10):
  75.             self.shreg.write_byte(bin(SEGMENTS[i])[2:])
  76.             time.sleep(1)
  77.  
  78.  
  79.     def set_raw_data(self, value):
  80.         if type == 0:
  81.             value = str(value)[11:16]
  82.             print(value)
  83.             UenM = value.replace(":", "")
  84.             teller = 0
  85.             while teller <= 2500:
  86.                 for i in range(4):
  87.                     if i == 1:
  88.                         GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  89.                         time.sleep(0.001)
  90.                         self.show_number(int(UenM[i]), True)
  91.                         GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  92.                     else:
  93.                         GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  94.                         time.sleep(0.001)
  95.                         self.show_number(int(UenM[i]))
  96.                         GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  97.                     teller += 1
  98.         elif type == 1:
  99.             value = str(value)[-2:]
  100.             print(value)
  101.             S = value.replace(":", "")
  102.             teller = 0
  103.             while teller <= 5000:
  104.                 for i in range(2):
  105.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  106.                     time.sleep(0.001)
  107.                     self.show_number(int(S[i]))
  108.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  109.                     teller += 1
  110.         elif type == 2:
  111.             value = str(value)[5:10]
  112.             print(value)
  113.             MenD = value.replace("-", "")
  114.             teller = 0
  115.             while teller <= 2500:
  116.                 for i in range(4):
  117.                     if i == 1:
  118.                         self.show_number(int(MenD[i]), True)
  119.                     else:
  120.                         GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  121.                         time.sleep(0.001)
  122.                         self.show_number(int(MenD[i]))
  123.                         GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  124.                     teller += 1
  125.         elif type == 3:
  126.             Y = str(value)[:5]
  127.             print(Y)
  128.             teller = 0
  129.             while teller <= 2500:
  130.                 for i in range(4):
  131.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  132.                     time.sleep(0.001)
  133.                     self.show_number(int(Y[i]))
  134.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  135.                     teller += 1
  136.         else:
  137.             log.error("Een verkeerde type value werd doorgegeven!")
  138.             raise ValueError("Een verkeerde type werd doorgegeven.")
  139.  
  140.  
  141.     def set_value(self, value=random.randint(0,10000), with_dp=False):
  142.         list_value = list(str(value))
  143.         for i in range(0, len(list_value)):
  144.             if len(list_value) == 4:
  145.                 if i == 0:
  146.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  147.                     time.sleep(0.001)
  148.                     self.show_number(int(list_value[i]), True)
  149.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  150.                 else:
  151.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  152.                     time.sleep(0.001)
  153.                     self.show_number(int(list_value[i]))
  154.                     GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  155.             else:
  156.                 GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.LOW)
  157.                 time.sleep(0.001)
  158.                 self.show_number(int(list_value[i]))
  159.                 GPIO.output(PIN_DISPLAY_CATHODES[i], GPIO.HIGH)
  160.  
  161.  
  162.     def show_number(self, value, with_dp=False):
  163.         if with_dp == True:
  164.             byte = SEGMENTS[value] | DP
  165.         else:
  166.             byte = SEGMENTS[value]
  167.         self.shreg.write_byte(bin(byte)[2:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement