thanks for the configurations but your library mayby only works for 4xsevensegment displays like that from sparkfun
This library work from 2 digits to 8 digits, and is suitable for common cathode and common anode.
yesterday i modify the library to add the choice of drive common by transistor or directly by arduino pin.
http://laurent.le.goff.free.fr/blog/IMG/zip/sevenseg.zip
example for 2 digit:
#include <SevenSeg.h>
/* SevenSeg (Anode or Cathode, Direct or Transistor,a,b,c,d,e,f,g,dp,com1,com2) [com2 -> com8] */
SevenSeg display2x7(Anode,Transistor,0,1,2,3,4,5,6,7,8,9);
void setup()
{
}
void loop()
{
display2x7.println(millis()/1000);
display2x7.multiplex(); //digit 1 on
delay(10); //10ms*2=20ms -> 50hz multiplex
display2x7.multiplex(); //digit 2 on
delay(10);
}
example with library MsTimer2
/*
7 segments Libraries
Demonstrates the use a 7 segments display.
This sketch prints " OK." and count 0.1ms.
The circuit:
* Segment a pin to Resistor 680 to digital pin 0
* Segment b pin to Resistor 680 to digital pin 1
* Segment c pin to Resistor 680 to digital pin 2
* Segment d pin to Resistor 680 to digital pin 3
* Segment e pin to Resistor 680 to digital pin 4
* Segment f pin to Resistor 680 to digital pin 5
* Segment g pin to Resistor 680 to digital pin 6
* Segment dp pin to Resistor 680 to digital pin 7
* Common Anode 1 pin to digital pin 8
* Common Anode 2 pin to digital pin 9
* Common Anode 3 pin to digital pin 10
* Common Anode 4 pin to digital pin 11
Library originally write 1 Sep 2012 by Laurent LE GOFF
This example code is in the public domain.
*/
#include <SevenSeg.h>
#include <MsTimer2.h>
/* SevenSeg (Anode or Cathode, Direct or Transistor,a,b,c,d,e,f,g,dp,com1,com2,com3,com4) [com2 -> com8] */
SevenSeg afficheur(Anode,Direct,0,1,2,3,4,5,6,7,8,9,10,11);
void setup()
{
MsTimer2::set(5, interrupt); // 50Hz
MsTimer2::start();
afficheur.cursor();
delay(5000);
afficheur.setCursor(2);
afficheur.print('O');
delay(1000);
afficheur.print('K');
delay(1000);
afficheur.print('.');
delay(3000);
afficheur.home();
delay(3000);
afficheur.noDisplay();
delay(1000);
afficheur.display();
afficheur.noCursor();
afficheur.clear();
}
void interrupt()
{
afficheur.multiplex();
}
void loop()
{
afficheur.println(millis()/100);
}