исправился, делэймикросек может работать только с константами или регистровыми переменными видимо
#define SERVO_PIN 3
volatile uint16_t angle;
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
for (uint8_t pos = 0; pos < 180; pos++) {
angle = 300 + pos * 14;
pulseOut(SERVO_PIN);
delay(20);
}
}
void pulseOut(uint8_t pin) {
digitalWrite(pin, HIGH);
for(int i = 1; i <= angle; i++) delayMicroseconds(1);
digitalWrite(pin, LOW);
}