void modifiedSineWave(float dutyCycle)
{
if (dutyCycle > 0.5) dutyCycle = 0.5;
else if (dutyCycle < 0) dutyCycle = 0;
cli();
TCCR1B = _BV(WGM13) | _BV(CS11) | _BV(CS10) | _BV(ICNC1);
//f0 = fclk / (2 * N * Top)
long topv = (long) (F_CPU /(60.0 * 2.0 * 64.0));
ICR1 = topv;
OCR1A = (int) ((float) topv * dutyCycle);
OCR1B = (int) ((float) topv * (1 - dutyCycle));
DDRB |= _BV(PORTB1) | _BV(PORTB2);
TCCR1A = _BV(COM1A1) | _BV(COM1B1);
sei();
}
int pin1 = 7;
int pin2 = 8;
int pin3 = 9;
int pin4 = 10;
void setup() {
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
}
void loop()
{
digitalWrite(pin1, HIGH);
digitalWrite(pin2, LOW);
digitalWrite(pin3, HIGH);
digitalWrite(pin4, LOW);
delay(8);
digitalWrite(pin1, LOW);
digitalWrite(pin2, HIGH);
digitalWrite(pin3, LOW);
digitalWrite(pin4, HIGH);
delay(8);
}