Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* by xerpi */
- byte numbers[11] =
- {
- /*
- PORTD - digital 0-7
- PORTB - digital 8-13
- PORTC - analog 0-5
- a
- ---
- f | g | b
- ---
- e | | c
- --- .
- d DOT
- 7
- ---
- 6 | 5 | 8
- ---
- 1 | | 3
- --- .
- 2 4
- */
- 0b11100111, // 0
- 0b10000100, // 1
- 0b11010011, // 2
- 0b11010110, // 3
- 0b10110100, // 4
- 0b01110110, // 5
- 0b01110111, // 6
- 0b11000100, // 7
- 0b11110111, // 8
- 0b11110100, // 9
- 0b00001000, // DOT
- };
- #define DOT 10
- #define COMMON_CATHODE 1
- #define COMMON_ANODE 0
- void configOutputs(int initial_pin);
- void showNum(int initial_pin, int common, int num, bool showDot);
- int initPin = 2;
- void setup()
- {
- Serial.begin(9600);
- configOutputs(initPin);
- }
- void loop()
- {
- for(int i = 0; i < 10; i++)
- {
- Serial.println(i);
- showNum(initPin, COMMON_ANODE, i, true);
- delay(1000);
- }
- }
- void configOutputs(int initial_pin)
- {
- if(initial_pin > 0)
- {
- DDRD = 0xFF<<initial_pin;
- DDRB = (0xFF<<initial_pin) ^ 0xFF;
- }
- else
- {
- DDRD = 0xFF;
- }
- }
- void showNum(int initial_pin, int common, int num, bool showDot)
- {
- if(num < 0 || num > 10)
- {
- return;
- }
- byte pins = showDot ? numbers[num] | 0b1000 : numbers[num];
- if(common == COMMON_ANODE)
- {
- pins ^= 0xFF;
- }
- if(initial_pin > 0)
- {
- PORTD = pins<<initial_pin;
- PORTB = (pins>>(8 - initial_pin));
- }
- else
- {
- PORTD = pins;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement