Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. #define PINS 6
  2. #define PATTERNS 5
  3. #define UNDER 1
  4. #define OVER 0
  5. #define SW 12
  6. #define OUT 1
  7. #define IN 0
  8.  
  9.  
  10. int ledPin[PINS] = {2, 3, 4, 5, 6, 7};
  11. int waveCount = 0;
  12. int waveDirection = 1;
  13. int spreadCount = 0;
  14. int nowPattern = 0;
  15.  
  16.  
  17. void AllLedOff(){
  18. for(int i = 2; i < 8; i++){
  19. digitalWrite(i, LOW);
  20. }
  21. }
  22.  
  23. int CheckUsed(int *used, int number, int n){
  24. for(int i = 0; i < n; i++){
  25. if(used[i] == number){
  26. return 0;
  27. }
  28. }
  29. return 1;
  30. }
  31.  
  32. void PatternWave(int startPosition, int delayTime, int pins, int *pin, int *count, int *direction){
  33. if(startPosition){
  34. for(int i = 0; i < *count; i++){
  35. digitalWrite(pin[i], HIGH);
  36. }
  37. for(int i = *count; i < pins; i++){
  38. digitalWrite(pin[i], LOW);
  39. }
  40. }else{
  41. for(int i = 0; i < *count; i++){
  42. digitalWrite(pin[i], LOW);
  43. }
  44. for(int i = *count; i < pins; i++){
  45. digitalWrite(pin[i], HIGH);
  46. }
  47. }
  48. if(*direction){
  49. *count += 1;
  50. if(*count > pins){
  51. *direction = 0;
  52. *count = pins;
  53. }
  54. }else{
  55. *count -= 1;
  56. if(*count < 0){
  57. *direction = 1;
  58. *count = 0;
  59. }
  60. }
  61. delay(delayTime);
  62. }
  63.  
  64. void PatternSpread(int direction, int interval, int delayTime, int pins, int *pin, int *count){
  65. // AllLedOff(pins, pin);
  66. for(int i = *count; i >= 0; i -= interval){
  67. digitalWrite(pin[pins/2-i], HIGH);
  68. digitalWrite(pin[pins/2+i], HIGH);
  69. }
  70. if(direction){
  71. *count += 1;
  72. if(*count > pins/2){
  73. *count -= interval;
  74. }
  75. }else{
  76. *count -= 1;
  77. if(*count < 1){
  78. *count += interval;
  79. }
  80. }
  81. delay(delayTime);
  82. }
  83.  
  84. void PatternRandom(int n, int delayTime, int pins, int *pin){
  85. // AllLedOff(pins, pin);
  86. int used[100];
  87. for(int i = 0; i < n && i < pins; i++){
  88. while(1){
  89. used[i] = random(32767)%pins;
  90. if(CheckUsed(used, used[i], i)){
  91. break;
  92. }
  93. }
  94. digitalWrite(pin[used[i]], HIGH);
  95. }
  96. delay(delayTime);
  97. }
  98.  
  99. void SelectPattern(int pattern){
  100. switch(pattern){
  101. case 0:
  102. PatternWave(UNDER, 60/2, PINS, ledPin, &waveCount, &waveDirection);
  103. break;
  104. case 1:
  105. PatternWave(OVER, 60/2, PINS, ledPin, &waveCount, &waveDirection);
  106. break;
  107. case 2:
  108. PatternSpread(IN, 3, 80/2, PINS, ledPin, &spreadCount);
  109. break;
  110. case 3:
  111. PatternSpread(OUT, 3, 80/2, PINS, ledPin, &spreadCount);
  112. break;
  113. case 4:
  114. PatternRandom(2, 200/2, PINS, ledPin);
  115. break;
  116. }
  117. }
  118.  
  119. void Led(){
  120. digitalWrite(7,HIGH);
  121. delay(50);
  122. digitalWrite(6,HIGH);
  123. delay(50);
  124. digitalWrite(5,HIGH);
  125. delay(50);
  126. digitalWrite(4,HIGH);
  127. delay(50);
  128. digitalWrite(3,HIGH);
  129. delay(50);
  130. digitalWrite(2,HIGH);
  131. delay(50);
  132. }
  133.  
  134. int led1,led2,led3,led4,led5,led6;
  135. void setup() {
  136. for(int i = 0; i < PINS; i++){
  137. pinMode(ledPin[i], OUTPUT);
  138. }
  139. //pinMode(SW, INPUT);
  140. //randomSeed(analogRead(0));
  141. for(int i = 13; i < 20; i++){
  142. pinMode(i, INPUT_PULLUP);
  143. }
  144. Led();
  145. AllLedOff();
  146. Led();
  147. AllLedOff();
  148. Led();
  149. AllLedOff();
  150. }
  151.  
  152. void loop() {
  153. if(digitalRead(14)==LOW){
  154. led1 = !led1;
  155. delay(100);
  156. while(digitalRead(14)==LOW){}
  157. }
  158. if(digitalRead(15)==LOW){
  159. led2 = !led2;
  160. delay(100);
  161. while(digitalRead(15)==LOW){}
  162. }
  163. if(digitalRead(16)==LOW){
  164. led3 = !led3;
  165. delay(100);
  166. while(digitalRead(16)==LOW){}
  167. }
  168. if(digitalRead(17)==LOW){
  169. led4 = !led4;
  170. delay(100);
  171. while(digitalRead(17)==LOW){}
  172. }
  173. if(digitalRead(18)==LOW){
  174. led5 = !led5;
  175. delay(100);
  176. while(digitalRead(18)==LOW){}
  177. }
  178. if(digitalRead(19)==LOW){
  179. led6 = !led6;
  180. delay(100);
  181. while(digitalRead(19)==LOW){}
  182. }
  183.  
  184.  
  185. if(led1 == 1){digitalWrite(7,HIGH);}
  186. if(led2 == 1){digitalWrite(6,HIGH);}
  187. if(led3 == 1){digitalWrite(5,HIGH);}
  188. if(led4 == 1){digitalWrite(4,HIGH);}
  189. if(led5 == 1){digitalWrite(3,HIGH);}
  190. if(led6 == 1){digitalWrite(2,HIGH);}
  191.  
  192.  
  193. if(led1 == 0){digitalWrite(7,LOW);}
  194. if(led2 == 0){digitalWrite(6,LOW);}
  195. if(led3 == 0){digitalWrite(5,LOW);}
  196. if(led4 == 0){digitalWrite(4,LOW);}
  197. if(led5 == 0){digitalWrite(3,LOW);}
  198. if(led6 == 0){digitalWrite(2,LOW);}
  199.  
  200. delay(50);
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement