Skip to content

Instantly share code, notes, and snippets.

@cengiz-io
Created March 5, 2015 23:32
Show Gist options
  • Save cengiz-io/7429900c4929f84b7674 to your computer and use it in GitHub Desktop.
Save cengiz-io/7429900c4929f84b7674 to your computer and use it in GitHub Desktop.
Messing with a Common Anode Seven Segment Display on Arduino Uno
#define _A 7
#define _B 6
#define _C 4
#define _D 2
#define _E 1
#define _F 9
#define _G 10
#define _DP 5
#define LED_OFF 1
#define LED_ON 0
#define STEP_DELAY 100
#define PIN_COUNT 8
#define ELEMENT_COUNT 10
#define MAX_PINS_PER_ELEMENT 7
int iterator = 0;
unsigned int pins[PIN_COUNT] = {_A, _B, _C, _D, _E, _F, _G, _DP};
unsigned int pin_combinations[ELEMENT_COUNT][MAX_PINS_PER_ELEMENT] = {
{_A, _B, _C, _D, _E, _F},
{_B, _C},
{_A, _B, _G, _E, _D},
{_A, _B, _G, _C, _D},
{_F, _B, _G, _C},
{_A, _F, _G, _C, _D},
{_A, _F, _G, _C, _D, _E},
{_A, _B, _C},
{_A, _B, _C, _D, _E, _F, _G},
{_A, _B, _C, _D, _F, _G}
};
void clear_leds() {
for (int i = 0; i < PIN_COUNT; i++) {
digitalWrite(pins[i], LED_OFF);
}
}
void setup() {
for (int i = 0; i < PIN_COUNT; i++) {
pinMode(pins[i], OUTPUT);
}
}
void loop() {
clear_leds();
digitalWrite(_DP, !(iterator == 0));
int combination_size = sizeof(pin_combinations[iterator]) / sizeof(pin_combinations[iterator][0]);
for (int i = 0; i < combination_size; i++) {
digitalWrite(pin_combinations[iterator][i], LED_ON);
}
iterator = (iterator + 1) % ELEMENT_COUNT;
delay(STEP_DELAY);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment