Created
March 5, 2015 23:32
-
-
Save cengiz-io/7429900c4929f84b7674 to your computer and use it in GitHub Desktop.
Messing with a Common Anode Seven Segment Display on Arduino Uno
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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