Schupp

7digitready

Sep 26th, 2020 (edited)
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.78 KB | None | 0 0
  1. int seven_segment_digits[10][7] = {
  2.   { 1, 1, 1, 1, 1, 1, 0 }, // display '0'
  3.   { 0, 1, 1, 0, 0, 0, 0 }, // display '1'
  4.   { 1, 1, 0, 1, 1, 0, 1 }, // display '2'
  5.   { 1, 1, 1, 1, 0, 0, 1 }, // display '3'
  6.   { 0, 1, 1, 0, 0, 1, 1 }, // display '4'
  7.   { 1, 0, 1, 1, 0, 1, 1 }, // display '5'
  8.   { 1, 0, 1, 1, 1, 1, 1 }, // display '6'
  9.   { 1, 1, 1, 0, 0, 0, 0 }, // display '7'
  10.   { 1, 1, 1, 1, 1, 1, 1 }, // display '8'
  11.   { 1, 1, 1, 0, 0, 1, 1 } // display '9'
  12. };
  13.  
  14. byte seg_code[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
  15. byte seg_codeB[10];
  16. byte seg_codeC[10];
  17. byte seg_codeD[10];
  18. 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
  19. 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
  20. uint8_t BMask = 0;
  21. uint8_t CMask = 0;
  22. uint8_t DMask = 0;
  23. void setup() {
  24.   Serial.begin(57600);
  25.   // put your setup code here, to run once:
  26.   for (int i = 0; i < 10; i++)
  27.     for (int c = 0; c < 7; c++) {
  28.       if (seven_segment_digits[i][c] == 1)
  29.         digitalWrite2(i, c);
  30.     }
  31.   Serial.println(BMask, BIN);
  32.   Serial.println(CMask, BIN);
  33.   Serial.println(DMask, BIN);
  34.       Serial.println("c");
  35.   for (int i = 0; i < 10; i++)
  36.     Serial.println(seg_codeC[i], BIN);
  37.     Serial.println("b");
  38.   for (int i = 0; i < 10; i++)
  39.     Serial.println(seg_codeB[i], BIN);
  40.      Serial.println("c");
  41.   for (int i = 0; i < 10; i++)
  42.     Serial.println(seg_codeD[i], BIN);
  43. }
  44.  
  45.  
  46. void loop() {
  47.   // put your main code here, to run repeatedly:
  48.  
  49. }
  50. void digitalWrite2mask(uint8_t pin, uint8_t val)
  51. { uint8_t bit = 0;
  52.   bit = digitalPinToBitMask(pin);
  53.   if (pin < 8)
  54.     DMask |= bit;
  55.   else if (pin < 14)
  56.     BMask |= bit;
  57.   else if (pin > 13)
  58.     CMask |= bit;
  59. }
  60. boolean getsegstate(uint8_t seg) {
  61.   if (seven_segment_digits[seg] == 1)
  62.     return true;
  63.  
  64. }
  65. void digitalWrite2( uint8_t seg, uint8_t order)
  66. { uint8_t bit = 0;
  67. uint8_t pin= segmentPins[order];
  68.   bit = digitalPinToBitMask(segmentPins[order]);
  69.   if (pin < 8)
  70.   { DMask |= bit;
  71.     if (seven_segment_digits[seg][order] == 1)
  72.       seg_codeD[seg] |= bit;
  73.   } else if (pin < 14)
  74.   { BMask |= bit;
  75.        Serial.println("test");
  76.     if (seven_segment_digits[seg][order] == 1)
  77.       seg_codeB[seg] |= bit;
  78.  
  79.   } else if (pin > 13)
  80.   {
  81.     CMask |= bit;
  82.     if (seven_segment_digits[seg][order] == 1)
  83.       seg_codeC[seg] |= bit;
  84.   }
  85.  
  86. //
  87. //
  88. //  uint8_t port = digitalPinToPort(pin);
  89. //  volatile uint8_t *out;
  90. //
  91. //  out = portOutputRegister(port);
  92. //
  93. //  uint8_t oldSREG = SREG;
  94. //  cli();
  95. //  uint8_t val = 0;
  96. //  if (val == LOW) {
  97. //    *out &= ~bit;
  98. //  } else {
  99. //    *out |= bit;
  100. //  }
  101. //
  102. //  SREG = oldSREG;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment