PageRenderTime 52ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/cube_driver/cubeDriver/cubeDriver.ino

https://github.com/vgx32/ledCube4x4
C++ | 184 lines | 84 code | 34 blank | 66 comment | 0 complexity | c47e2db0e0deb6d1621a829f701e2f5a MD5 | raw file
  1. int LB0 = 7;
  2. int LB1 = 6;
  3. int LB2 = 5;
  4. int LB3 = 4;
  5. int LB4 = 3;
  6. int LB5 = 2;
  7. int LB6 = 1;
  8. int LB7 = 0;
  9. int topRow = 8;
  10. int bottomRow = 9;
  11. int L0= 10;
  12. int L1= 11;
  13. int L2= 12;
  14. int L3= 13;
  15. //char testAll[8] ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  16. char x[8] ={0x90,0x09,0x06,0x60,0x06,0x60,0x90,0x09};
  17. char box[8] = {0x00,0x00,0x06,0x60,0x06,0x60,0x00,0x00};
  18. char outline[8] = {0xf9, 0x9f, 0x90,0x09,0x90,0x09,0xf9,0x9f};
  19. void setup() {
  20. pinMode(LB0, OUTPUT);
  21. pinMode(LB1, OUTPUT);
  22. pinMode(LB2, OUTPUT);
  23. pinMode(LB3, OUTPUT);
  24. pinMode(LB4, OUTPUT);
  25. pinMode(LB5, OUTPUT);
  26. pinMode(LB6, OUTPUT);
  27. pinMode(LB7, OUTPUT);
  28. pinMode(topRow, OUTPUT);
  29. pinMode(bottomRow, OUTPUT);
  30. pinMode(L0, OUTPUT);
  31. pinMode(L1, OUTPUT);
  32. pinMode(L2, OUTPUT);
  33. pinMode(L3, OUTPUT);
  34. digitalWrite(L0, 1);
  35. digitalWrite(L1, 1);
  36. digitalWrite(L2, 1);
  37. digitalWrite(L3, 1);
  38. }
  39. int testAll[8] ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  40. void loop() {
  41. writeCube(testAll);
  42. // writeLayer(0xff,0xff,L1);
  43. }
  44. //char x[8] ={0x90,0x09,0x06,0x60,0x06,0x60,0x90,0x09};
  45. //char outline[8] = {0xf9, 0x9f, 0x90,0x09,0x90,0x09,0xf9,0x9f};
  46. void writeCube(int cube[]){
  47. // char testAll[8] ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  48. //0 cube = testAll;
  49. writeLayer(cube[0], cube[1], L0);
  50. writeLayer(cube[2], cube[3], L1);
  51. writeLayer(cube[4], cube[5], L2);
  52. writeLayer(cube[6], cube[7], L3);
  53. // writeLayer(0xff,0xff,L0);
  54. // writeLayer(0xff,0xff ,L1);
  55. // writeLayer(0xff,0xff,L2);
  56. // writeLayer(0xff,0xff,L3);
  57. // cube =x;
  58. //
  59. //// writeLayer(cube[0],cube[1],L0);
  60. // int frameDelay = 5;
  61. //
  62. // for(int i =0; i <frameDelay; i++){
  63. // writeLayer(0x90,0x09,L0);
  64. // writeLayer(0x06,0x60,L1);
  65. // writeLayer(0x06,0x60,L2);
  66. // writeLayer(0x90,0x09,L3);
  67. // }
  68. //
  69. // for(int i =0; i <frameDelay; i++){
  70. // writeLayer(0x90,0x09,L0);
  71. // writeLayer(0x00,0x00,L1);
  72. // writeLayer(0x06,0x60,L2);
  73. // writeLayer(0x96,0x69,L3);
  74. // }
  75. //
  76. // for(int i =0; i <frameDelay; i++){
  77. // writeLayer(0x90,0x09,L0);
  78. // writeLayer(0x00,0x00,L1);
  79. // writeLayer(0x00,0x00,L2);
  80. // writeLayer(0x96,0x69,L3);
  81. // }
  82. //
  83. // for(int i =0; i <frameDelay; i++){
  84. // writeLayer(0x90,0x09,L0);
  85. // writeLayer(0x00,0x00,L1);
  86. // writeLayer(0x00,0x00,L2);
  87. // writeLayer(0x90,0x09,L3);
  88. // }
  89. //
  90. //
  91. // for(int i =0; i <frameDelay; i++){
  92. // writeLayer(0x96,0x69,L0);
  93. // writeLayer(0x00,0x00,L1);
  94. // writeLayer(0x00,0x00,L2);
  95. // writeLayer(0x90,0x09,L3);
  96. // }
  97. //
  98. //
  99. // for(int i =0; i <frameDelay; i++){
  100. // writeLayer(0x96,0x69,L0);
  101. // writeLayer(0x06,0x60,L1);
  102. // writeLayer(0x00,0x00,L2);
  103. // writeLayer(0x90,0x09,L3);
  104. // }
  105. //
  106. //
  107. }
  108. void writeLayer(char bottom, char top, int layerNum){
  109. digitalWrite(layerNum,1);
  110. //delay(10);
  111. writeByte(bottom & 1,
  112. (bottom >> 1) & 1,
  113. (bottom >> 2) & 1,
  114. (bottom >> 3) & 1,
  115. (bottom >> 4) & 1,
  116. (bottom >> 5) & 1,
  117. (bottom >> 6) & 1,
  118. (bottom >> 7) & 1, bottomRow);
  119. writeByte(top & 1,
  120. (top >> 1) & 1,
  121. (top >> 2) & 1,
  122. (top >> 3) & 1,
  123. (top >> 4) & 1,
  124. (top >> 5) & 1,
  125. (top >> 6) & 1,
  126. (top >> 7) & 1, topRow);
  127. //turnOnLayer(layerNum);
  128. digitalWrite(layerNum,0);
  129. delay(5);
  130. digitalWrite(layerNum,1);
  131. }
  132. void turnOnLayer(int layerNum){
  133. // digitalWrite(layerNum,0);
  134. // delay(10);
  135. // digitalWrite(layerNum,1);
  136. // delay(10);
  137. }
  138. void writeByte(int b0, int b1, int b2, int b3,
  139. int b4, int b5, int b6, int b7, int regNo){
  140. digitalWrite(regNo, 0);
  141. digitalWrite(LB0,b0);
  142. digitalWrite(LB1,b1);
  143. digitalWrite(LB2,b2);
  144. digitalWrite(LB3,b3);
  145. digitalWrite(LB4,b4);
  146. digitalWrite(LB5,b5);
  147. digitalWrite(LB6,b6);
  148. digitalWrite(LB7,b7);
  149. digitalWrite(regNo, 1);
  150. }