2012年12月4日 星期二

A beginner guide to Raspberry Pi driving 5x7 LED Matrix










Code:


#include GPIO and Timer Library
import RPi.GPIO as GPIO
import time


class led57_object(object):
  def __init__(self):
    #define Raspberry Pi GPIO number
    self.sleeptime=0.001
    self.ROW1=23
    self.ROW2=18
    self.ROW3=25
    self.ROW4=22
    self.ROW5=17
    self.COL1=7
    self.COL2=8
    self.COL3=4
    self.COL4=24
    self.COL5=10
    self.COL6=9
    self.COL7=11

    #Raspberry Pi GPIO initalization
    GPIO.setmode( GPIO.BCM )
    GPIO.setup(self.COL1, GPIO.OUT)
    GPIO.setup(self.COL2, GPIO.OUT)
    GPIO.setup(self.COL3, GPIO.OUT)
    GPIO.setup(self.COL4, GPIO.OUT)
    GPIO.setup(self.COL5, GPIO.OUT)
    GPIO.setup(self.COL6, GPIO.OUT)
    GPIO.setup(self.COL7, GPIO.OUT)
    GPIO.setup(self.ROW1, GPIO.OUT)
    GPIO.setup(self.ROW2, GPIO.OUT)
    GPIO.setup(self.ROW3, GPIO.OUT)
    GPIO.setup(self.ROW4, GPIO.OUT)
    GPIO.setup(self.ROW5, GPIO.OUT)



  def clear(self):
    #set all GPIO output to LOW
    GPIO.output(self.COL1, GPIO.LOW)
    GPIO.output(self.COL2, GPIO.LOW)
    GPIO.output(self.COL3, GPIO.LOW)
    GPIO.output(self.COL4, GPIO.LOW)
    GPIO.output(self.COL5, GPIO.LOW)
    GPIO.output(self.COL6, GPIO.LOW)
    GPIO.output(self.COL7, GPIO.LOW)
    GPIO.output(self.ROW1, GPIO.LOW)
    GPIO.output(self.ROW2, GPIO.LOW)
    GPIO.output(self.ROW3, GPIO.LOW)
    GPIO.output(self.ROW4, GPIO.LOW)
    GPIO.output(self.ROW5, GPIO.LOW)


  def demo(self):
    #Code sample of showing 'Pi'
    while 1:
      self.clear()
      GPIO.output(self.ROW1, GPIO.HIGH)
      GPIO.output(self.COL1, GPIO.LOW)
      GPIO.output(self.COL2, GPIO.LOW)
      GPIO.output(self.COL3, GPIO.LOW)
      GPIO.output(self.COL4, GPIO.HIGH)
      GPIO.output(self.COL5, GPIO.HIGH)
      GPIO.output(self.COL6, GPIO.LOW)
      GPIO.output(self.COL7, GPIO.HIGH)
      time.sleep(self.sleeptime)

      self.clear()
      GPIO.output(self.ROW2, GPIO.HIGH)
      GPIO.output(self.COL1, GPIO.LOW)
      GPIO.output(self.COL2, GPIO.HIGH)
      GPIO.output(self.COL3, GPIO.HIGH)
      GPIO.output(self.COL4, GPIO.LOW)
      GPIO.output(self.COL5, GPIO.HIGH)
      GPIO.output(self.COL6, GPIO.HIGH)
      GPIO.output(self.COL7, GPIO.HIGH)
      time.sleep(self.sleeptime)

      self.clear()
      GPIO.output(self.ROW3, GPIO.HIGH)
      GPIO.output(self.COL1, GPIO.LOW)
      GPIO.output(self.COL2, GPIO.LOW)
      GPIO.output(self.COL3, GPIO.LOW)
      GPIO.output(self.COL4, GPIO.HIGH)
      GPIO.output(self.COL5, GPIO.HIGH)
      GPIO.output(self.COL6, GPIO.LOW)
      GPIO.output(self.COL7, GPIO.HIGH)
      time.sleep(self.sleeptime)

      self.clear()
      GPIO.output(self.ROW4, GPIO.HIGH)
      GPIO.output(self.COL1, GPIO.LOW)
      GPIO.output(self.COL2, GPIO.HIGH)
      GPIO.output(self.COL3, GPIO.HIGH)
      GPIO.output(self.COL4, GPIO.HIGH)
      GPIO.output(self.COL5, GPIO.HIGH)
      GPIO.output(self.COL6, GPIO.LOW)
      GPIO.output(self.COL7, GPIO.HIGH)
      time.sleep(self.sleeptime)

      self.clear()
      GPIO.output(self.ROW5, GPIO.HIGH)
      GPIO.output(self.COL1, GPIO.LOW)
      GPIO.output(self.COL2, GPIO.HIGH)
      GPIO.output(self.COL3, GPIO.HIGH)
      GPIO.output(self.COL4, GPIO.HIGH)
      GPIO.output(self.COL5, GPIO.HIGH)
      GPIO.output(self.COL6, GPIO.LOW)
      GPIO.output(self.COL7, GPIO.HIGH)
      time.sleep(self.sleeptime)


def main():
    ledobj=led57_object()
    ledobj.demo()

if __name__ == "__main__":
    main()