showShapeLap.ino 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. void showShapeLAP(int shape)
  2. {
  3. // - A
  4. // / / F/B
  5. // - G
  6. // / / E/C
  7. // -. D/DP
  8. #define a 1<<0
  9. #define b 1<<6
  10. #define c 1<<5
  11. #define d 1<<4
  12. #define e 1<<3
  13. #define f 1<<1
  14. #define g 1<<2
  15. #define dp 1<<7
  16. byte segmentsLAP1;
  17. byte segmentsLAP2;
  18. switch (shape)
  19. {
  20. //
  21. case 0:
  22. segmentsLAP1 = a | f | b | e | c | d;
  23. segmentsLAP2 = a | f | b | e | c | d;
  24. break;
  25. // . .
  26. case 1:
  27. segmentsLAP1 = dp;
  28. segmentsLAP2 = dp;
  29. break;
  30. // _ _
  31. case 2:
  32. segmentsLAP1 = d;
  33. segmentsLAP2 = d;
  34. break;
  35. // Double 88
  36. case 3:
  37. segmentsLAP1 = a | f | b | e | c | d | g;
  38. segmentsLAP2 = a | f | b | e | c | d | g;
  39. break;
  40. // - -
  41. case 4:
  42. segmentsLAP1 = g;
  43. segmentsLAP2 = g;
  44. break;
  45. // NOTHING
  46. case 5:
  47. segmentsLAP1 = 0;
  48. segmentsLAP2 = 0;
  49. break;
  50. case 20:
  51. segmentsLAP1 = a;
  52. segmentsLAP2 = a;
  53. break;
  54. case 21:
  55. segmentsLAP1 = a | b;
  56. segmentsLAP2 = 0;
  57. break;
  58. case 22:
  59. segmentsLAP1 = b | c;
  60. segmentsLAP2 = 0;
  61. break;
  62. case 23:
  63. segmentsLAP1 = c | d;
  64. segmentsLAP2 = 0;
  65. break;
  66. case 24:
  67. segmentsLAP1 = d;
  68. segmentsLAP2 = d;
  69. break;
  70. case 25:
  71. segmentsLAP1 = 0;
  72. segmentsLAP2 = d | e;
  73. break;
  74. case 26:
  75. segmentsLAP1 = 0;
  76. segmentsLAP2 = e | f;
  77. break;
  78. case 27:
  79. segmentsLAP1 = 0;
  80. segmentsLAP2 = f | a;
  81. break;
  82. }
  83. //Clock these bits out to the drivers
  84. // SegmentLAP1
  85. for (byte x = 0 ; x < 8 ; x++)
  86. {
  87. digitalWrite(segmentClockLAP, LOW);
  88. digitalWrite(segmentDataLAP, segmentsLAP1 & 1 << (7 - x));
  89. digitalWrite(segmentClockLAP, HIGH); //Data transfers to the register on the rising edge of SRCK
  90. }
  91. // digitalWrite(segmentLatchLAP, LOW);
  92. // digitalWrite(segmentLatchLAP, HIGH); //Register moves storage register on the rising edge of RCK
  93. // SegmentLAP2
  94. for (byte x = 0 ; x < 8 ; x++)
  95. {
  96. digitalWrite(segmentClockLAP, LOW);
  97. digitalWrite(segmentDataLAP, segmentsLAP2 & 1 << (7 - x));
  98. digitalWrite(segmentClockLAP, HIGH); //Data transfers to the register on the rising edge of SRCK
  99. }
  100. digitalWrite(segmentLatchLAP, LOW);
  101. digitalWrite(segmentLatchLAP, HIGH); //Register moves storage register on the rising edge of RCK
  102. }