Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.89 KB | None | 0 0
  1. int SER_Pin = 0;   // blue
  2. int RCLK_Pin = 1;  // green
  3. int SRCLK_Pin = 2; // yellow
  4. int PWM_Pin = 11;  // black
  5. int BTN_Pin = 4; // orange
  6.  
  7. #define number_of_74hc595s 1
  8. #define number_of_leds 8
  9. #define numOfRegisterPins number_of_74hc595s * 8
  10.  
  11. boolean registers[numOfRegisterPins];
  12. int buttonState = 0;
  13. boolean cocked = false;
  14.  
  15. void setup() {
  16.   // put your setup code here, to run once:
  17.   pinMode(SER_Pin, OUTPUT);
  18.   pinMode(RCLK_Pin, OUTPUT);
  19.   pinMode(SRCLK_Pin, OUTPUT);
  20.   pinMode(PWM_Pin, OUTPUT);
  21.   pinMode(BTN_Pin, INPUT);
  22.   effect_testLights();
  23.  
  24.   clearRegisters();
  25.   writeRegisters();    
  26.  
  27. }
  28.  
  29.  
  30. void loop() {
  31.  
  32.  
  33.   // read the state of the pushbutton value:
  34.   buttonState = digitalRead(BTN_Pin);
  35.  
  36.   // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  37.   if (buttonState == HIGH) {
  38.     if (!cocked){
  39.       effect_brightness();
  40.       cocked = true;
  41.     } else {
  42.       effect_fastflash();
  43.     }
  44.   } else {
  45.     if (cocked) {
  46.       effect_launch();
  47.     }
  48.   }
  49.  
  50. }
  51.  
  52. void effect_fastflash(){
  53.   clearRegisters();
  54.   writeRegisters();
  55.   delay(100);
  56.   setRegisterPin(7, HIGH);
  57.   writeRegisters();
  58.   delay(100);
  59. }
  60.  
  61. void effect_launch() {
  62.  
  63.   for (int i = 6; i >= 0; i--) {
  64.     clearRegisters();
  65.     setRegisterPin(i+1, HIGH);
  66.     setRegisterPin(i, HIGH);
  67.     writeRegisters();
  68.     delay(100);
  69.   }
  70.   clearRegisters();
  71.   writeRegisters();
  72.   cocked = false;
  73. }
  74.  
  75. void effect_brightness() {
  76.   int len, amt;
  77.  
  78.   for (len = 0; len < number_of_leds; ++len) {
  79.     setRegisterPin(len, LOW);
  80.   }
  81.   writeRegisters();
  82.   setRegisterPin(7, HIGH);
  83.   writeRegisters();
  84.   for (amt = 255; amt > 1; amt-=1) {
  85.     analogWrite(PWM_Pin, amt);  
  86.     delay(10);
  87.   }
  88. }
  89.  
  90.  
  91.  
  92. void effect_testLights() {
  93.   int len, i;
  94.  
  95.   for (len = 0; len < number_of_leds; ++len) {
  96.     clearRegisters();
  97.     setRegisterPin(len, HIGH);
  98.     writeRegisters();
  99.     delay(125);
  100.   }
  101.  
  102.   for (i = 0; i < 2; i++) {
  103.     clearRegisters();
  104.     for (len = 0; len < number_of_leds; ++len) {
  105.       setRegisterPin(len, HIGH);
  106.     }
  107.     writeRegisters();
  108.     delay(500);
  109.     clearRegisters();
  110.     writeRegisters();
  111.     delay(500);
  112.   }
  113.  
  114.  
  115. }
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. ////////////////////////////////
  124. // SHIFT REGISTER
  125. ////////////////////////////////
  126.  
  127. // Set and display registers
  128. // Only call AFTER all values are set how you would like (slow otherwise)
  129. void writeRegisters(){
  130.   digitalWrite(RCLK_Pin, LOW);
  131.   for(int i = numOfRegisterPins - 1; i >=  0; i--){
  132.     digitalWrite(SRCLK_Pin, LOW);
  133.     int val = registers[i];
  134.     digitalWrite(SER_Pin, val);
  135.     digitalWrite(SRCLK_Pin, HIGH);
  136.   }
  137.   digitalWrite(RCLK_Pin, HIGH);
  138. }
  139. // set an individual pin HIGH or LOW
  140. void setRegisterPin(int index, int value){
  141.   registers[index] = value;
  142. }
  143. // set all register pins to LOW
  144. void clearRegisters(){
  145.   for(int i = numOfRegisterPins - 1; i >=  0; i--){
  146.      registers[i] = LOW;
  147.   }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement