Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //version ovs11
- int inputPinRed = 2;
- int inputPinGreen = 3;
- int inputPinBlue = 4;
- int outputPinRed = 9;
- int outputPinGreen = 10;
- int outputPinBlue = 11;
- int dutyCycleRed = 0;
- int dutyCycleGreen = 0;
- int dutyCycleBlue = 0;
- int upDutyCycleRed = 0;
- int upDutyCycleGreen = 0;
- int upDutyCycleBlue = 0;
- int buttonPressedRed = 0;
- int buttonPressedGreen = 0;
- int buttonPressedBlue = 0;
- void setup()
- {
- pinMode(inputPinRed, INPUT);
- pinMode(inputPinGreen, INPUT);
- pinMode(inputPinBlue, INPUT);
- pinMode(outputPinRed, OUTPUT);
- pinMode(outputPinGreen, OUTPUT);
- pinMode(outputPinBlue, OUTPUT);
- }
- void loop()
- {
- checkButtons();
- changeDutyCycles();
- delay(200);
- }
- void checkButtons()
- {
- checkButton(&buttonPressedRed, &inputPinRed, &upDutyCycleRed);
- checkButton(&buttonPressedBlue, &inputPinBlue, &upDutyCycleBlue);
- checkButton(&buttonPressedGreen, &inputPinGreen, &upDutyCycleGreen);
- }
- void checkButton(int* buttonPressed, int* inputPin, int* upDutyCycle)
- {
- int buttonPressedBefore = *buttonPressed;
- *buttonPressed = digitalRead(*inputPin) == LOW;
- if(!buttonPressedBefore && *buttonPressed)
- *upDutyCycle = !*upDutyCycle;
- }
- void changeDutyCycles()
- {
- if (buttonPressedRed) changeDutyCycle(&dutyCycleRed, &upDutyCycleRed, &outputPinRed);
- if (buttonPressedBlue) changeDutyCycle(&dutyCycleBlue, &upDutyCycleBlue, &outputPinBlue);
- if (buttonPressedGreen) changeDutyCycle(&dutyCycleGreen, &upDutyCycleGreen, &outputPinGreen);
- }
- void changeDutyCycle(int* dutyCycle, int* upDutyCycle, int* outputPin)
- {
- *dutyCycle += *upDutyCycle ? 4 : -4;
- if (*dutyCycle > 255) *dutyCycle = 255;
- if (*dutyCycle < 0) *dutyCycle = 0;
- analogWrite(*outputPin, *dutyCycle);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement