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;
}
Comments