Servo library based on Timer instead of PWM. Fork of original https://os.mbed.com/users/jdenkers/code/Servo/ and modified for compatibility with MbedOS6+

Files at this revision

API Documentation at this revision

Comitter:
JohnnyK
Date:
Fri Jun 10 04:22:15 2022 +0000
Parent:
1:352133517ccc
Commit message:
First release under MbedOS6+

Changed in this revision

Servo.cpp Show annotated file Show diff for this revision Revisions of this file
Servo.h Show annotated file Show diff for this revision Revisions of this file
--- a/Servo.cpp	Sun Oct 17 13:34:19 2010 +0000
+++ b/Servo.cpp	Fri Jun 10 04:22:15 2022 +0000
@@ -9,7 +9,7 @@
 
     void Servo::StartPulse() {
         ServoPin = 1;
-        PulseStop.attach_us(this, &Servo::EndPulse, Position);
+        PulseStop.attach(callback(this, &Servo::EndPulse), std::chrono::microseconds(Position));
     }
 
     void Servo::EndPulse() {
@@ -18,7 +18,7 @@
 
     void Servo::Enable(int StartPos, int Period) {
         Position = StartPos;
-        Pulse.attach_us(this, &Servo::StartPulse, Period);
+        Pulse.attach(callback(this, &Servo::StartPulse), std::chrono::microseconds(Period));
     }
 
     void Servo::Disable() {
--- a/Servo.h	Sun Oct 17 13:34:19 2010 +0000
+++ b/Servo.h	Fri Jun 10 04:22:15 2022 +0000
@@ -1,5 +1,6 @@
 /* mbed Servo Library without using PWM pins
  * Copyright (c) 2010 Jasper Denkers
+ * Copyright (c) 2022 Jan Kamidra
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -20,8 +21,8 @@
  * THE SOFTWARE.
  */
 
-#ifndef MBED_SERVO_H
-#define MBED_SERVO_H
+#ifndef SERVO_H
+#define SERVO_H
 
 #include "mbed.h"
 
@@ -40,11 +41,11 @@
  * while(1) {
  *     for (int pos = 1000; pos < 2000; pos += 25) {
  *         Servo1.SetPosition(pos);  
- *         wait_ms(20);
+ *         thread_sleep_for(20);
  *     }
  *     for (int pos = 2000; pos > 1000; pos -= 25) {
  *         Servo1.SetPosition(pos); 
- *         wait_ms(20); 
+ *         thread_sleep_for(20);
  *     }
  * }
  * @endcode