Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Control a servo using a timer on a ESP32 (no ledc stuff)
- // by misan April 2018
- int servo=1500;
- #define SERVO T2 // pin D11 on UC406 ESP32 UNO
- hw_timer_t * timer1 = NULL; // servo
- volatile boolean flip = false;
- void IRAM_ATTR itr1(void) {
- if(flip) {
- digitalWrite(SERVO,LOW);
- flip = false;
- timerAlarmWrite(timer1, 20000, true); // 20 ms between pulses
- }
- else {
- timerAlarmWrite(timer1, servo, true); // servo pulse in microseconds
- flip = true;
- digitalWrite(SERVO,HIGH);
- }
- }
- void setup() {
- pinMode(SERVO,OUTPUT);
- timer1 = timerBegin(1, 80, true);
- timerAttachInterrupt(timer1, &itr1, true);
- timerAlarmWrite(timer1, 20000, true);
- timerAlarmEnable(timer1);
- }
- int angle=0;
- void loop() {
- servo=1400+sin((angle++)/57.7)*800;
- delay(5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement