uint32_t ct;
uint32_t pre0;
uint32_t pre1;
uint16_t task0 = 20;
uint16_t task1 = 20;
void setup() {
// put your setup code here, to run once:
Serial1.begin(115200);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
// analogReadResolution(12);
analogWriteResolution(12);
analogWriteFreq(500);
}
uint16_t duty0 = 0;
uint16_t duty1 = 0;
bool duty1up = 1;
void loop() {
ct = millis();
// sawtooth
if(ct - pre0 >= task0) {
pre0 = ct;
duty0 += 70;
if(duty0 >= 4000) duty0 = 0;
analogWrite(2, duty0);
}
// triangle
if(ct - pre1 >= task1) {
Serial1.print(duty1up);
Serial1.print(" : ");
Serial1.println(duty1);
pre1 = ct;
if(duty1up == 1) {
if(duty1 >= 4000) {
duty1up = 0;
} else {
duty1 += 70;
}
} else {
if(duty1 <= 50) {
duty1up = 1;
}
else {
duty1 -= 70;
}
}
analogWrite(3, duty1);
}
}