Advertisement
desentcare

Untitled

Dec 10th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. int inputPinRed = 2;
  2. int inputPinGreen = 3;
  3. int inputPinBlue = 4;
  4.  
  5. int outputPinRed = 9;
  6. int outputPinGreen = 10;
  7. int outputPinBlue = 11;
  8.  
  9. int dutyCycleRed = 0;
  10. int dutyCycleGreen = 0;
  11. int dutyCycleBlue = 0;
  12.  
  13. int upDutyCycleRed = 0;
  14. int upDutyCycleGreen = 0;
  15. int upDutyCycleBlue = 0;
  16.  
  17. int buttonPressedRed = 0;
  18. int buttonPressedGreen = 0;
  19. int buttonPressedBlue = 0;
  20.  
  21. void setup()
  22. {
  23.     Serial.begin(9600);
  24.  
  25.     pinMode(inputPinRed, INPUT);
  26.     pinMode(inputPinGreen, INPUT);
  27.     pinMode(inputPinBlue, INPUT);
  28.  
  29.     pinMode(outputPinRed, OUTPUT);
  30.     pinMode(outputPinGreen, OUTPUT);
  31.     pinMode(outputPinBlue, OUTPUT);
  32. }
  33.  
  34. void loop()
  35. {
  36.     checkButtons();
  37.     changeDutyCycles();
  38.     delay(200);
  39. }
  40.  
  41. void checkButtons()
  42. {
  43.     checkButton(&buttonPressedRed, &inputPinRed, &upDutyCycleRed);
  44.     checkButton(&buttonPressedBlue, &inputPinBlue, &upDutyCycleBlue);
  45.     checkButton(&buttonPressedGreen, &inputPinGreen, &upDutyCycleGreen);
  46. }
  47.  
  48. void checkButton(int* buttonPressed, int* inputPin, int* upDutyCycle)
  49. {
  50.     int buttonPressedBefore = *buttonPressed;
  51.     *buttonPressed = digitalRead(*inputPin) == LOW;
  52.     if(!buttonPressedBefore && *buttonPressed)
  53.         *upDutyCycle = !*upDutyCycle;
  54. }
  55.  
  56. void changeDutyCycles()
  57. {
  58.     if (buttonPressedRed) changeDutyCycle(&dutyCycleRed, &upDutyCycleRed, &outputPinRed);
  59.     if (buttonPressedBlue) changeDutyCycle(&dutyCycleBlue, &upDutyCycleBlue, &outputPinBlue);
  60.     if (buttonPressedGreen) changeDutyCycle(&dutyCycleGreen, &upDutyCycleGreen, &outputPinGreen);
  61. }
  62.  
  63. void changeDutyCycle(int* dutyCycle, int* upDutyCycle, int* outputPin)
  64. {
  65.     *dutyCycle += *upDutyCycle ? 4 : -4;
  66.     if (*dutyCycle > 255) *dutyCycle = 255;
  67.     if (*dutyCycle < 0) *dutyCycle = 0;
  68.     analogWrite(*outputPin, *dutyCycle);
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement