fork download
  1. #include <iostream>
  2.  
  3. uint8_t format = 0; // format of the values in the generated array : 0 = bin, 1 = hex, 2 = dec
  4.  
  5. uint8_t digits[10][35] = {
  6.  
  7. { 14, 26, 38, 50, 3, 15, 51, 63, 4, 40, 64, 5, 29, 41, 65, 6, 42, 66, 7, 31, 67, 8, 32, 44, 68, 9, 33, 69, 10, 70, 23, 35, 47, 59 },
  8.  
  9. { 26, 38, 50, 15, 51, 4, 52, 5, 17, 29, 53, 18, 54, 19, 55, 20, 56, 9, 21, 57, 69, 10, 70, 11, 23, 35, 47, 59, 71 },
  10.  
  11. { 14, 26, 38, 50, 3, 63, 4, 16, 28, 64, 29, 65, 18, 54, 7, 43, 8, 32, 44, 56, 68, 9, 69, 10, 70, 11, 23, 35, 47, 59 },
  12.  
  13. { 14, 26, 38, 50, 3, 63, 4, 16, 28, 64, 29, 65, 18, 54, 19, 55, 8, 20, 32, 68, 9, 69, 10, 70, 23, 35, 47, 59 },
  14.  
  15. { 26, 38, 50, 27, 51, 16, 52, 17, 53, 6, 42, 66, 7, 67, 8, 20, 32, 44, 68, 45, 69, 46, 70, 47, 59, 71 },
  16.  
  17. { 2, 14, 26, 38, 50, 62, 3, 63, 4, 64, 5, 29, 41, 53, 6, 42, 19, 55, 32, 68, 9, 21, 33, 69, 10, 70, 23, 35, 47, 59 },
  18.  
  19. { 26, 38, 50, 62, 15, 63, 16, 52, 64, 5, 41, 6, 42, 54, 7, 67, 8, 32, 68, 9, 33, 45, 69, 10, 70, 23, 35, 47, 59 },
  20.  
  21. { 2, 14, 26, 38, 50, 62, 3, 63, 4, 16, 28, 40, 64, 41, 65, 42, 66, 31, 67, 32, 56, 21, 57, 22, 46, 23, 35, 47 },
  22.  
  23. { 14, 26, 38, 50, 3, 63, 4, 28, 40, 64, 5, 41, 65, 18, 54, 7, 67, 8, 32, 44, 68, 9, 45, 69, 10, 70, 23, 35, 47, 59 },
  24.  
  25. { 14, 26, 38, 50, 3, 63, 4, 28, 40, 64, 5, 41, 65, 6, 66, 19, 31, 67, 32, 68, 9, 21, 57, 10, 58, 11, 23, 35, 47 }
  26.  
  27. };
  28.  
  29. uint8_t digits_optimized[10][9];
  30.  
  31.  
  32. int main()
  33. {
  34. // generate digits_optimized
  35. for ( uint8_t i = 0; i < 10; i++ )
  36. {
  37. // sort array, just for a better visualization
  38. for ( uint8_t j = 0; j < 34; j++ )
  39. {
  40. for ( uint8_t k = j + 1; k < 35; k++ )
  41. {
  42. if ( digits[i][j] > digits[i][k] )
  43. {
  44. uint8_t temp = digits[i][j];
  45. digits[i][j] = digits[i][k];
  46. digits[i][k] = temp;
  47. }
  48. }
  49. }
  50.  
  51. printf( "digit %hhu :\n", i );
  52.  
  53. for ( uint8_t j = 0; j < 35; j++ )
  54. {
  55. uint8_t ledId = digits[i][j];
  56.  
  57. if ( ledId != 0 )
  58. {
  59. uint8_t byteId = ledId / 8;
  60. uint8_t bitId = ledId % 8;
  61. printf( "ledId = %2hhu -> byteId = %hhu, bitId = %hhu\n", ledId, byteId, bitId );
  62. digits_optimized[i][byteId] |= 1 << bitId;
  63. }
  64. }
  65.  
  66. printf( "\n" );
  67. }
  68.  
  69. // print array
  70. printf( "const uint8_t digits[][9] PROGMEM =\n{\n" );
  71.  
  72. for ( uint8_t i = 0; i < 10; i++ )
  73. {
  74. printf( "\t{ " );
  75.  
  76. for ( uint8_t j = 0; j < 9; j++ )
  77. {
  78. if ( format == 0 )
  79. {
  80. printf( "0b" );
  81.  
  82. for ( int8_t k = 7; k >= 0; k-- )
  83. {
  84. printf( "%hhu", ( digits_optimized[i][j] >> k ) & 1 );
  85. }
  86. }
  87. else
  88. {
  89. printf( format == 1 ? "0x%02X" : "%3hhu", digits_optimized[i][j] );
  90. }
  91.  
  92. if ( j != 8 )
  93. {
  94. printf( ", " );
  95. }
  96. }
  97.  
  98. printf( " }" );
  99.  
  100. if ( i != 9 )
  101. {
  102. printf( "," );
  103. }
  104.  
  105. printf( "\n" );
  106. }
  107.  
  108. printf( "};" );
  109.  
  110. return 0;
  111. }
Success #stdin #stdout 0s 5488KB
stdin
Standard input is empty
stdout
digit 0 :
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId =  5 -> byteId = 0, bitId = 5
ledId =  6 -> byteId = 0, bitId = 6
ledId =  7 -> byteId = 0, bitId = 7
ledId =  8 -> byteId = 1, bitId = 0
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 14 -> byteId = 1, bitId = 6
ledId = 15 -> byteId = 1, bitId = 7
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 29 -> byteId = 3, bitId = 5
ledId = 31 -> byteId = 3, bitId = 7
ledId = 32 -> byteId = 4, bitId = 0
ledId = 33 -> byteId = 4, bitId = 1
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 40 -> byteId = 5, bitId = 0
ledId = 41 -> byteId = 5, bitId = 1
ledId = 42 -> byteId = 5, bitId = 2
ledId = 44 -> byteId = 5, bitId = 4
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 51 -> byteId = 6, bitId = 3
ledId = 59 -> byteId = 7, bitId = 3
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 65 -> byteId = 8, bitId = 1
ledId = 66 -> byteId = 8, bitId = 2
ledId = 67 -> byteId = 8, bitId = 3
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6

digit 1 :
ledId =  4 -> byteId = 0, bitId = 4
ledId =  5 -> byteId = 0, bitId = 5
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 11 -> byteId = 1, bitId = 3
ledId = 15 -> byteId = 1, bitId = 7
ledId = 17 -> byteId = 2, bitId = 1
ledId = 18 -> byteId = 2, bitId = 2
ledId = 19 -> byteId = 2, bitId = 3
ledId = 20 -> byteId = 2, bitId = 4
ledId = 21 -> byteId = 2, bitId = 5
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 29 -> byteId = 3, bitId = 5
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 51 -> byteId = 6, bitId = 3
ledId = 52 -> byteId = 6, bitId = 4
ledId = 53 -> byteId = 6, bitId = 5
ledId = 54 -> byteId = 6, bitId = 6
ledId = 55 -> byteId = 6, bitId = 7
ledId = 56 -> byteId = 7, bitId = 0
ledId = 57 -> byteId = 7, bitId = 1
ledId = 59 -> byteId = 7, bitId = 3
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6
ledId = 71 -> byteId = 8, bitId = 7

digit 2 :
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId =  7 -> byteId = 0, bitId = 7
ledId =  8 -> byteId = 1, bitId = 0
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 11 -> byteId = 1, bitId = 3
ledId = 14 -> byteId = 1, bitId = 6
ledId = 16 -> byteId = 2, bitId = 0
ledId = 18 -> byteId = 2, bitId = 2
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 28 -> byteId = 3, bitId = 4
ledId = 29 -> byteId = 3, bitId = 5
ledId = 32 -> byteId = 4, bitId = 0
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 43 -> byteId = 5, bitId = 3
ledId = 44 -> byteId = 5, bitId = 4
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 54 -> byteId = 6, bitId = 6
ledId = 56 -> byteId = 7, bitId = 0
ledId = 59 -> byteId = 7, bitId = 3
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 65 -> byteId = 8, bitId = 1
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6

digit 3 :
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId =  8 -> byteId = 1, bitId = 0
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 14 -> byteId = 1, bitId = 6
ledId = 16 -> byteId = 2, bitId = 0
ledId = 18 -> byteId = 2, bitId = 2
ledId = 19 -> byteId = 2, bitId = 3
ledId = 20 -> byteId = 2, bitId = 4
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 28 -> byteId = 3, bitId = 4
ledId = 29 -> byteId = 3, bitId = 5
ledId = 32 -> byteId = 4, bitId = 0
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 54 -> byteId = 6, bitId = 6
ledId = 55 -> byteId = 6, bitId = 7
ledId = 59 -> byteId = 7, bitId = 3
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 65 -> byteId = 8, bitId = 1
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6

digit 4 :
ledId =  6 -> byteId = 0, bitId = 6
ledId =  7 -> byteId = 0, bitId = 7
ledId =  8 -> byteId = 1, bitId = 0
ledId = 16 -> byteId = 2, bitId = 0
ledId = 17 -> byteId = 2, bitId = 1
ledId = 20 -> byteId = 2, bitId = 4
ledId = 26 -> byteId = 3, bitId = 2
ledId = 27 -> byteId = 3, bitId = 3
ledId = 32 -> byteId = 4, bitId = 0
ledId = 38 -> byteId = 4, bitId = 6
ledId = 42 -> byteId = 5, bitId = 2
ledId = 44 -> byteId = 5, bitId = 4
ledId = 45 -> byteId = 5, bitId = 5
ledId = 46 -> byteId = 5, bitId = 6
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 51 -> byteId = 6, bitId = 3
ledId = 52 -> byteId = 6, bitId = 4
ledId = 53 -> byteId = 6, bitId = 5
ledId = 59 -> byteId = 7, bitId = 3
ledId = 66 -> byteId = 8, bitId = 2
ledId = 67 -> byteId = 8, bitId = 3
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6
ledId = 71 -> byteId = 8, bitId = 7

digit 5 :
ledId =  2 -> byteId = 0, bitId = 2
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId =  5 -> byteId = 0, bitId = 5
ledId =  6 -> byteId = 0, bitId = 6
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 14 -> byteId = 1, bitId = 6
ledId = 19 -> byteId = 2, bitId = 3
ledId = 21 -> byteId = 2, bitId = 5
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 29 -> byteId = 3, bitId = 5
ledId = 32 -> byteId = 4, bitId = 0
ledId = 33 -> byteId = 4, bitId = 1
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 41 -> byteId = 5, bitId = 1
ledId = 42 -> byteId = 5, bitId = 2
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 53 -> byteId = 6, bitId = 5
ledId = 55 -> byteId = 6, bitId = 7
ledId = 59 -> byteId = 7, bitId = 3
ledId = 62 -> byteId = 7, bitId = 6
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6

digit 6 :
ledId =  5 -> byteId = 0, bitId = 5
ledId =  6 -> byteId = 0, bitId = 6
ledId =  7 -> byteId = 0, bitId = 7
ledId =  8 -> byteId = 1, bitId = 0
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 15 -> byteId = 1, bitId = 7
ledId = 16 -> byteId = 2, bitId = 0
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 32 -> byteId = 4, bitId = 0
ledId = 33 -> byteId = 4, bitId = 1
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 41 -> byteId = 5, bitId = 1
ledId = 42 -> byteId = 5, bitId = 2
ledId = 45 -> byteId = 5, bitId = 5
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 52 -> byteId = 6, bitId = 4
ledId = 54 -> byteId = 6, bitId = 6
ledId = 59 -> byteId = 7, bitId = 3
ledId = 62 -> byteId = 7, bitId = 6
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 67 -> byteId = 8, bitId = 3
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6

digit 7 :
ledId =  2 -> byteId = 0, bitId = 2
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId = 14 -> byteId = 1, bitId = 6
ledId = 16 -> byteId = 2, bitId = 0
ledId = 21 -> byteId = 2, bitId = 5
ledId = 22 -> byteId = 2, bitId = 6
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 28 -> byteId = 3, bitId = 4
ledId = 31 -> byteId = 3, bitId = 7
ledId = 32 -> byteId = 4, bitId = 0
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 40 -> byteId = 5, bitId = 0
ledId = 41 -> byteId = 5, bitId = 1
ledId = 42 -> byteId = 5, bitId = 2
ledId = 46 -> byteId = 5, bitId = 6
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 56 -> byteId = 7, bitId = 0
ledId = 57 -> byteId = 7, bitId = 1
ledId = 62 -> byteId = 7, bitId = 6
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 65 -> byteId = 8, bitId = 1
ledId = 66 -> byteId = 8, bitId = 2
ledId = 67 -> byteId = 8, bitId = 3

digit 8 :
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId =  5 -> byteId = 0, bitId = 5
ledId =  7 -> byteId = 0, bitId = 7
ledId =  8 -> byteId = 1, bitId = 0
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 14 -> byteId = 1, bitId = 6
ledId = 18 -> byteId = 2, bitId = 2
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 28 -> byteId = 3, bitId = 4
ledId = 32 -> byteId = 4, bitId = 0
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 40 -> byteId = 5, bitId = 0
ledId = 41 -> byteId = 5, bitId = 1
ledId = 44 -> byteId = 5, bitId = 4
ledId = 45 -> byteId = 5, bitId = 5
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 54 -> byteId = 6, bitId = 6
ledId = 59 -> byteId = 7, bitId = 3
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 65 -> byteId = 8, bitId = 1
ledId = 67 -> byteId = 8, bitId = 3
ledId = 68 -> byteId = 8, bitId = 4
ledId = 69 -> byteId = 8, bitId = 5
ledId = 70 -> byteId = 8, bitId = 6

digit 9 :
ledId =  3 -> byteId = 0, bitId = 3
ledId =  4 -> byteId = 0, bitId = 4
ledId =  5 -> byteId = 0, bitId = 5
ledId =  6 -> byteId = 0, bitId = 6
ledId =  9 -> byteId = 1, bitId = 1
ledId = 10 -> byteId = 1, bitId = 2
ledId = 11 -> byteId = 1, bitId = 3
ledId = 14 -> byteId = 1, bitId = 6
ledId = 19 -> byteId = 2, bitId = 3
ledId = 21 -> byteId = 2, bitId = 5
ledId = 23 -> byteId = 2, bitId = 7
ledId = 26 -> byteId = 3, bitId = 2
ledId = 28 -> byteId = 3, bitId = 4
ledId = 31 -> byteId = 3, bitId = 7
ledId = 32 -> byteId = 4, bitId = 0
ledId = 35 -> byteId = 4, bitId = 3
ledId = 38 -> byteId = 4, bitId = 6
ledId = 40 -> byteId = 5, bitId = 0
ledId = 41 -> byteId = 5, bitId = 1
ledId = 47 -> byteId = 5, bitId = 7
ledId = 50 -> byteId = 6, bitId = 2
ledId = 57 -> byteId = 7, bitId = 1
ledId = 58 -> byteId = 7, bitId = 2
ledId = 63 -> byteId = 7, bitId = 7
ledId = 64 -> byteId = 8, bitId = 0
ledId = 65 -> byteId = 8, bitId = 1
ledId = 66 -> byteId = 8, bitId = 2
ledId = 67 -> byteId = 8, bitId = 3
ledId = 68 -> byteId = 8, bitId = 4

const uint8_t digits[][9] PROGMEM =
{
	{ 0b11111000, 0b11000111, 0b10000000, 0b10100100, 0b01001011, 0b10010111, 0b00001100, 0b10001000, 0b01111111 },
	{ 0b00110000, 0b10001110, 0b10111110, 0b00100100, 0b01001000, 0b10000000, 0b11111100, 0b00001011, 0b11100000 },
	{ 0b10011000, 0b01001111, 0b10000101, 0b00110100, 0b01001001, 0b10011000, 0b01000100, 0b10001001, 0b01110011 },
	{ 0b00011000, 0b01000111, 0b10011101, 0b00110100, 0b01001001, 0b10000000, 0b11000100, 0b10001000, 0b01110011 },
	{ 0b11000000, 0b00000001, 0b00010011, 0b00001100, 0b01000001, 0b11110100, 0b00111100, 0b00001000, 0b11111100 },
	{ 0b01111100, 0b01000110, 0b10101000, 0b00100100, 0b01001011, 0b10000110, 0b10100100, 0b11001000, 0b01110001 },
	{ 0b11100000, 0b10000111, 0b10000001, 0b00000100, 0b01001011, 0b10100110, 0b01010100, 0b11001000, 0b01111001 },
	{ 0b00011100, 0b01000000, 0b11100001, 0b10010100, 0b01001001, 0b11000111, 0b00000100, 0b11000011, 0b00001111 },
	{ 0b10111000, 0b01000111, 0b10000100, 0b00010100, 0b01001001, 0b10110011, 0b01000100, 0b10001000, 0b01111011 },
	{ 0b01111000, 0b01001110, 0b10101000, 0b10010100, 0b01001001, 0b10000011, 0b00000100, 0b10000110, 0b00011111 }
};