Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int seven_segment_digits[10][7] = {
- { 1, 1, 1, 1, 1, 1, 0 }, // display '0'
- { 0, 1, 1, 0, 0, 0, 0 }, // display '1'
- { 1, 1, 0, 1, 1, 0, 1 }, // display '2'
- { 1, 1, 1, 1, 0, 0, 1 }, // display '3'
- { 0, 1, 1, 0, 0, 1, 1 }, // display '4'
- { 1, 0, 1, 1, 0, 1, 1 }, // display '5'
- { 1, 0, 1, 1, 1, 1, 1 }, // display '6'
- { 1, 1, 1, 0, 0, 0, 0 }, // display '7'
- { 1, 1, 1, 1, 1, 1, 1 }, // display '8'
- { 1, 1, 1, 0, 0, 1, 1 } // display '9'
- };
- byte seg_code[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
- byte seg_codeB[10];
- byte seg_codeC[10];
- byte seg_codeD[10];
- int digitPins[] = {5, 6, 4, 3}; //Digits: 1,2,3,4 <--put one resistor (ex: 220 Ohms, or 330 Ohms, etc, on each digit pin) //PD3-6
- int segmentPins[] = {A0, 7 , A3, A4, A5 , A1 , A2}; //12,11,A5, A4, A3, A2, A1, PD7}; //Segments: A,B,C,D,E,F,G, PC0-5 PD7
- uint8_t BMask = 0;
- uint8_t CMask = 0;
- uint8_t DMask = 0;
- void setup() {
- Serial.begin(57600);
- // put your setup code here, to run once:
- for (int i = 0; i < 10; i++)
- for (int c = 0; c < 7; c++) {
- if (seven_segment_digits[i][c] == 1)
- digitalWrite2(i, c);
- }
- Serial.println(BMask, BIN);
- Serial.println(CMask, BIN);
- Serial.println(DMask, BIN);
- Serial.println("c");
- for (int i = 0; i < 10; i++)
- Serial.println(seg_codeC[i], BIN);
- Serial.println("b");
- for (int i = 0; i < 10; i++)
- Serial.println(seg_codeB[i], BIN);
- Serial.println("c");
- for (int i = 0; i < 10; i++)
- Serial.println(seg_codeD[i], BIN);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- }
- void digitalWrite2mask(uint8_t pin, uint8_t val)
- { uint8_t bit = 0;
- bit = digitalPinToBitMask(pin);
- if (pin < 8)
- DMask |= bit;
- else if (pin < 14)
- BMask |= bit;
- else if (pin > 13)
- CMask |= bit;
- }
- boolean getsegstate(uint8_t seg) {
- if (seven_segment_digits[seg] == 1)
- return true;
- }
- void digitalWrite2( uint8_t seg, uint8_t order)
- { uint8_t bit = 0;
- uint8_t pin= segmentPins[order];
- bit = digitalPinToBitMask(segmentPins[order]);
- if (pin < 8)
- { DMask |= bit;
- if (seven_segment_digits[seg][order] == 1)
- seg_codeD[seg] |= bit;
- } else if (pin < 14)
- { BMask |= bit;
- Serial.println("test");
- if (seven_segment_digits[seg][order] == 1)
- seg_codeB[seg] |= bit;
- } else if (pin > 13)
- {
- CMask |= bit;
- if (seven_segment_digits[seg][order] == 1)
- seg_codeC[seg] |= bit;
- }
- //
- //
- // uint8_t port = digitalPinToPort(pin);
- // volatile uint8_t *out;
- //
- // out = portOutputRegister(port);
- //
- // uint8_t oldSREG = SREG;
- // cli();
- // uint8_t val = 0;
- // if (val == LOW) {
- // *out &= ~bit;
- // } else {
- // *out |= bit;
- // }
- //
- // SREG = oldSREG;
- }
Advertisement
Add Comment
Please, Sign In to add comment