NRF52_ISR_Servo Library

NRF52_ISR_Servo library GitHub release
arduino-library-badge

Why do we need this NRF52_ISR_Servo library

Features

This library enables you to use 1 Hardware PWM module on an nRF52-based board to control up to 16 independent servo motors.


Currently supported Boards

  • AdaFruit Feather nRF52832, nRF52840 Express, BlueFruit Sense, Itsy-Bitsy nRF52840 Express, Metro nRF52840 Express, NINA_B302_ublox, NINA_B112_ublox etc.


Changelog

Releases v1.0.0

  1. Basic 16 ISR-based servo controllers using 1 hardware PWM module for nRF52-based board
  2. Support to both nRF52832 and nRF52840

Examples:

  1. nRF52_MultipleRandomServos
  2. nRF52_MultipleServos

Example nRF52_MultipleRandomServos Adafruit NRF52840_FEATHER

The following is the sample terminal output when running example nRF52_MultipleRandomServos on Adafruit NRF52840_FEATHER to demonstrate how to control multiple Servos.

Starting NRF52_MultipleRandomServos on NRF52840_FEATHER
NRF52_ISR_Servo v1.0.0
Setup OK Servo index = 0
Setup OK Servo index = 1
Setup OK Servo index = 2
Setup OK Servo index = 3
Setup OK Servo index = 4
Setup OK Servo index = 5
Servos @ 0 degree
Servos idx = 0, act. pos. (deg) = [ISR_SERVO] Idx = 0
800, pulseWidth (us) = [ISR_SERVO] Idx = 0
800
Servos idx = 1, act. pos. (deg) = [ISR_SERVO] Idx = 1
800, pulseWidth (us) = [ISR_SERVO] Idx = 1
800
Servos idx = 2, act. pos. (deg) = [ISR_SERVO] Idx = 2
800, pulseWidth (us) = [ISR_SERVO] Idx = 2
800
Servos idx = 3, act. pos. (deg) = [ISR_SERVO] Idx = 3
800, pulseWidth (us) = [ISR_SERVO] Idx = 3
800
Servos idx = 4, act. pos. (deg) = [ISR_SERVO] Idx = 4
800, pulseWidth (us) = [ISR_SERVO] Idx = 4
800
Servos idx = 5, act. pos. (deg) = [ISR_SERVO] Idx = 5
800, pulseWidth (us) = [ISR_SERVO] Idx = 5
800
Servos @ 90 degree
Servos idx = 0, act. pos. (deg) = [ISR_SERVO] Idx = 0
1625, pulseWidth (us) = [ISR_SERVO] Idx = 0
1625
Servos idx = 1, act. pos. (deg) = [ISR_SERVO] Idx = 1
1625, pulseWidth (us) = [ISR_SERVO] Idx = 1
1625
Servos idx = 2, act. pos. (deg) = [ISR_SERVO] Idx = 2
1625, pulseWidth (us) = [ISR_SERVO] Idx = 2
1625
Servos idx = 3, act. pos. (deg) = [ISR_SERVO] Idx = 3
1625, pulseWidth (us) = [ISR_SERVO] Idx = 3
1625
Servos idx = 4, act. pos. (deg) = [ISR_SERVO] Idx = 4
1625, pulseWidth (us) = [ISR_SERVO] Idx = 4
1625
Servos idx = 5, act. pos. (deg) = [ISR_SERVO] Idx = 5
1625, pulseWidth (us) = [ISR_SERVO] Idx = 5
1625
Servos @ 180 degree
Servos idx = 0, act. pos. (deg) = [ISR_SERVO] Idx = 0
2450, pulseWidth (us) = [ISR_SERVO] Idx = 0
2450
Servos idx = 1, act. pos. (deg) = [ISR_SERVO] Idx = 1
2450, pulseWidth (us) = [ISR_SERVO] Idx = 1
2450
Servos idx = 2, act. pos. (deg) = [ISR_SERVO] Idx = 2
2450, pulseWidth (us) = [ISR_SERVO] Idx = 2
2450
Servos idx = 3, act. pos. (deg) = [ISR_SERVO] Idx = 3
2450, pulseWidth (us) = [ISR_SERVO] Idx = 3
2450
Servos idx = 4, act. pos. (deg) = [ISR_SERVO] Idx = 4
2450, pulseWidth (us) = [ISR_SERVO] Idx = 4
2450
Servos idx = 5, act. pos. (deg) = [ISR_SERVO] Idx = 5
2450, pulseWidth (us) = [ISR_SERVO] Idx = 5
2450
Servos sweeps from 0-180 degree