Seven segment display class.

I just got my Arduino this week and this was also my first library. Mine is a little lighter and may help other beginners seeing another implementation. One note is that I do not have a variable for common anode/cathode. I was assuming the user would wire that pin accordingly themselves. It does have a variable for right hand decimal point (RHDP).

Initialize the class by passing your pin numbers as arguments. The write function takes an integer argument 0-9 and prints out the readable version on the seven segment display.

SevenSegment.h

/*
 SevenSegment.h - Seven Segment Display Library
 
 These functions print readable numbers to seven segment display
 
 Created 1 August 2010
 By NanoDano
 nanodano@ph33d.us 
 */

#ifndef _SevenSegment_h
#define _SevenSegment_h
 
#include "WProgram.h"

/*************************************************
* Definitions
*************************************************/

class SevenSegment {
      public:
            SevenSegment(int anodeA, int anodeB, int anodeC, int anodeD, int anodeE, int anodeF, int anodeG, int RHDP); // Pass NULL for RHDP if unavailable
            void write(int input);
      private:
            int _anodeA;
            int _anodeB;
            int _anodeC;
            int _anodeD;
            int _anodeE;
            int _anodeF;
            int _anodeG;
            int _RHDP;
};
 
#endif

SevenSegment.cpp

/*
 SevenSegment.cpp - Seven Segment Display Library
 
 These functions print readable numbers to seven segment display
 
 The circuit:
 * Seven segment display hooked to Arduino

 Created 1 August 2010
 By NanoDano
 nanodano@ph33d.us 
 */
 
#include "SevenSegment.h"
 
 
SevenSegment::SevenSegment(int anodeA, int anodeB, int anodeC, int anodeD, int anodeE, int anodeF, int anodeG, int RHDP) {
       pinMode(anodeA, OUTPUT);
       pinMode(anodeB, OUTPUT);
       pinMode(anodeC, OUTPUT);
       pinMode(anodeD, OUTPUT);
       pinMode(anodeE, OUTPUT);
       pinMode(anodeF, OUTPUT);
       pinMode(anodeG, OUTPUT);
      _anodeA = anodeA;
      _anodeB = anodeB;
      _anodeC = anodeC;
      _anodeD = anodeD;
      _anodeE = anodeE;
      _anodeF = anodeF;
      _anodeG = anodeG;
      if (RHDP) {
            pinMode(RHDP, OUTPUT);
            _RHDP = RHDP;
      }
}

void SevenSegment::write(int input) {
      switch (input) {
            case 0:
                  digitalWrite(_anodeF, HIGH);
                  digitalWrite(_anodeG, LOW);
                  digitalWrite(_anodeE, HIGH);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 1:
                  digitalWrite(_anodeF, LOW);
                  digitalWrite(_anodeG, LOW);
                  digitalWrite(_anodeE, LOW);
                  digitalWrite(_anodeD, LOW);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, LOW);
                  break;
            case 2:
                  digitalWrite(_anodeF, LOW);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, HIGH);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, LOW);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 3:
                  digitalWrite(_anodeF, LOW);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, LOW);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 4:
                  digitalWrite(_anodeF, HIGH);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, LOW);
                  digitalWrite(_anodeD, LOW);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, LOW);
                  break;
            case 5:
                  digitalWrite(_anodeF, HIGH);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, LOW);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, LOW);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 6:
                  digitalWrite(_anodeF, HIGH);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, HIGH);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, LOW);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 7:
                  digitalWrite(_anodeF, LOW);
                  digitalWrite(_anodeG, LOW);
                  digitalWrite(_anodeE, LOW);
                  digitalWrite(_anodeD, LOW);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 8:
                  digitalWrite(_anodeF, HIGH);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, HIGH);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, HIGH);
                  break;
            case 9:
                  digitalWrite(_anodeF, HIGH);
                  digitalWrite(_anodeG, HIGH);
                  digitalWrite(_anodeE, LOW);
                  digitalWrite(_anodeD, HIGH);
                  digitalWrite(_anodeC, HIGH);
                  digitalWrite(_anodeB, HIGH);
                  digitalWrite(_anodeA, HIGH);
                  break;
      }
}

Sketch Example

/*
 SevenSegCount

 This sketch shows how to use the SevenSegment class to easily
 print readable numbers 0-9 on a seven segment display
 
 The circuit:
 * Seven Segment display hooked up to Arduino
 
 Created 1 August 2010
 By NanoDano
 nanadano@ph33d.us
 
 */

#include <SevenSegment.h>

void setup() {
}

void loop() {
  //Initialize a SevenSegment class named ss  
  SevenSegment ss(7, 8, 9, 10, 11, 13, 12, 6);
  
  // Print out each number from 0 to 9
  for (int i = 0; i < 10; i++) {
    ss.write(i);
    delay(250); 
  }
}

A couple final remarks: my code in this post is unrelated to the original posters code. I made this independently and they aren't meant to be used together. I felt it was unnecessary to create a new thread for the same topic though. This is my first library too so it is meant to be lightweight. (This is my first post, too!)