Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int redDuty = 0;
- int greenDuty = 0;
- int blueDuty = 0;
- int pwmPhase = 0;
- int state = 0;
- int cycles = 50;
- int curCycle = 0;
- void setup() {
- pinMode(PC13, OUTPUT);
- pinMode(PC14, OUTPUT);
- pinMode(PC15, OUTPUT);
- digitalWrite(PC13, HIGH);
- digitalWrite(PC14, HIGH);
- digitalWrite(PC15, HIGH);
- }
- void loop() {
- if(blueDuty > 0) digitalWrite(PC13, LOW); else digitalWrite(PC13, HIGH);
- if(greenDuty > 0) digitalWrite(PC14, LOW); else digitalWrite(PC14, HIGH);
- if(redDuty > 0) digitalWrite(PC15, LOW); else digitalWrite(PC15, HIGH);
- for(pwmPhase=0;pwmPhase < 255; pwmPhase++) {
- if(pwmPhase == blueDuty)
- digitalWrite(PC13, HIGH);
- if(pwmPhase == greenDuty)
- digitalWrite(PC14, HIGH);
- if(pwmPhase == redDuty)
- digitalWrite(PC15, HIGH);
- delayMicroseconds(20);
- }
- if(curCycle++ >= cycles) {
- switch(state) {
- case 0:
- if(++redDuty >= 255) {
- curCycle = 0;
- state = 1;
- }
- break;
- case 1:
- if(++greenDuty >= 255) {
- curCycle = 0;
- state = 2;
- }
- break;
- case 2:
- if(--redDuty == 0) {
- curCycle = 0;
- state = 3;
- }
- break;
- case 3:
- if(++blueDuty >= 255) {
- curCycle = 0;
- state = 4;
- }
- break;
- case 4:
- if(--greenDuty == 0) {
- curCycle = 0;
- state = 5;
- }
- break;
- case 5:
- if(++redDuty >= 255) {
- curCycle = 0;
- state = 6;
- }
- break;
- case 6:
- if(++greenDuty >= 255) {
- curCycle = 0;
- state = 7;
- }
- break;
- case 7:
- greenDuty--;
- if(--blueDuty == 0) {
- curCycle = 0;
- state = 1;
- }
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement