Wednesday, December 18, 2013

My 7-Segment Display

I ordered the device from Adafruit. The main reason was to check out getting a second I2C device to work. Here's how I wired it from the Pi:

To get that far I followed the directions at--

I found soldering the 24 tiny pins to connect the display to the "backpack" a trial, but surprise, surprise -- it worked with their example 24-hour clock program first try. I had previously downloaded --


(Do you think they could make the directory names any longer?)

I wanted my clock to display 12-hour/AM/PM time. Here's my rework of the software:

import time
import datetime
import signal
import sys
from Adafruit_7Segment import SevenSegment

def signal_handler(signal, frame): # to stop the clock
    print 'You pressed Ctrl+C!'
    SevenSegment(address=0x70) #clear display
signal.signal(signal.SIGINT, signal_handler)

segment = SevenSegment(address=0x70)

lastHour = -1

print "Press CTRL+C to exit"

# Continually update the time on a 4 char, 7-segment display
  now = # get 24-hour time values
  hour = now.hour
  pm = False
  # Set hours
  if hour != lastHour:   # don't change display
    lastHour = hour
    if hour > 11: # change to 12 hour clock
      hour -= 12
      pm = True
      if hour == 0: # just after midnight
        hour = 12
      if int(hour / 10) == 0:  # turn off leading zero
        segment = SevenSegment(address=0x70)  # turns all digits off
    if int(hour / 10) != 0:    
      segment.writeDigit(0, int(hour / 10))     # Tens
    segment.writeDigit(1, hour % 10)          # Ones
  # Set minutes
  minute = now.minute
  segment.writeDigit(3, int(minute / 10))   # Tens
  segment.writeDigit(4, minute % 10, pm)        # Ones + PM dot
  # turn on colon

  time.sleep(60)    # update in 1 minute -- may be 1 minute slow 

One of the irritations of Python is that a program like this can only be executed from the directory its local "import" file is in. There are ways around this but it's enough to make C language attractive. 

Most importantly, both of my I2C-connected devices still work. And I can add more. From two GPIO pins (3=SLA, 5=SCL), many devices!

No comments:

Post a Comment