PageRenderTime 49ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/cube_driver/cube_driver_bak/cubeDriver/cubeDriver.ino

https://github.com/vgx32/ledCube4x4
C++ | 180 lines | 117 code | 45 blank | 18 comment | 6 complexity | 447fbcc9090d5838259215769a1f1ec5 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. void loop() {
  40. writeCube(testAll);
  41. // writeLayer(0xff,0xff,L1);
  42. }
  43. //char x[8] ={0x90,0x09,0x06,0x60,0x06,0x60,0x90,0x09};
  44. //char outline[8] = {0xf9, 0x9f, 0x90,0x09,0x90,0x09,0xf9,0x9f};
  45. void writeCube(char cube[]){
  46. // cube =x;
  47. // writeLayer(cube[0],cube[1],L0);
  48. int frameDelay = 10;
  49. for(int i =0; i <frameDelay; i++){
  50. writeLayer(0x90,0x09,L0);
  51. writeLayer(0x06,0x60,L1);
  52. writeLayer(0x06,0x60,L2);
  53. writeLayer(0x90,0x09,L3);
  54. }
  55. for(int i =0; i <frameDelay; i++){
  56. writeLayer(0x90,0x09,L0);
  57. writeLayer(0x00,0x00,L1);
  58. writeLayer(0x06,0x60,L2);
  59. writeLayer(0x96,0x69,L3);
  60. }
  61. for(int i =0; i <frameDelay; i++){
  62. writeLayer(0x90,0x09,L0);
  63. writeLayer(0x00,0x00,L1);
  64. writeLayer(0x00,0x00,L2);
  65. writeLayer(0x96,0x69,L3);
  66. }
  67. for(int i =0; i <frameDelay; i++){
  68. writeLayer(0x90,0x09,L0);
  69. writeLayer(0x00,0x00,L1);
  70. writeLayer(0x00,0x00,L2);
  71. writeLayer(0x90,0x09,L3);
  72. }
  73. for(int i =0; i <frameDelay; i++){
  74. writeLayer(0x96,0x69,L0);
  75. writeLayer(0x00,0x00,L1);
  76. writeLayer(0x00,0x00,L2);
  77. writeLayer(0x90,0x09,L3);
  78. }
  79. for(int i =0; i <frameDelay; i++){
  80. writeLayer(0x96,0x69,L0);
  81. writeLayer(0x06,0x60,L1);
  82. writeLayer(0x00,0x00,L2);
  83. writeLayer(0x90,0x09,L3);
  84. }
  85. // delay(100);
  86. // writeLayer(cube[2],cube[3] ,L1);
  87. //delay(100);
  88. //writeLayer(cube[4],cube[5],L2);
  89. //delay(100);
  90. //writeLayer(cube[6],cube[7] ,L3);
  91. //delay(100);
  92. }
  93. void writeLayer(char bottom, char top, int layerNum){
  94. digitalWrite(layerNum,1);
  95. //delay(10);
  96. writeByte(bottom & 1,
  97. (bottom >> 1) & 1,
  98. (bottom >> 2) & 1,
  99. (bottom >> 3) & 1,
  100. (bottom >> 4) & 1,
  101. (bottom >> 5) & 1,
  102. (bottom >> 6) & 1,
  103. (bottom >> 7) & 1, bottomRow);
  104. writeByte(top & 1,
  105. (top >> 1) & 1,
  106. (top >> 2) & 1,
  107. (top >> 3) & 1,
  108. (top >> 4) & 1,
  109. (top >> 5) & 1,
  110. (top >> 6) & 1,
  111. (top >> 7) & 1, topRow);
  112. //turnOnLayer(layerNum);
  113. digitalWrite(layerNum,0);
  114. delay(5);
  115. digitalWrite(layerNum,1);
  116. }
  117. void turnOnLayer(int layerNum){
  118. // digitalWrite(layerNum,0);
  119. // delay(10);
  120. // digitalWrite(layerNum,1);
  121. // delay(10);
  122. }
  123. void writeByte(int b0, int b1, int b2, int b3,
  124. int b4, int b5, int b6, int b7, int regNo){
  125. digitalWrite(regNo, 0);
  126. digitalWrite(LB0,b0);
  127. digitalWrite(LB1,b1);
  128. digitalWrite(LB2,b2);
  129. digitalWrite(LB3,b3);
  130. digitalWrite(LB4,b4);
  131. digitalWrite(LB5,b5);
  132. digitalWrite(LB6,b6);
  133. digitalWrite(LB7,b7);
  134. digitalWrite(regNo, 1);
  135. }