Schupp icon

7digitready

Schupp | PRO | 02/05/21 03:28:12 PM UTC (Edited) | 0 ⭐ | 332 👁️ | Never ⏰ | []
C++ |

2.78 KB

|

None

|

0 👍

/

0 👎

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