An advanced PID that uses Series and Ideal algorithm, which can be tuned theoretically unlike Parallel algorithm. To use you need a DC motor and Encoder library, optitionally you can get PLX-DAQ to note various data from Arduino.
If you use this code, please cite with:
@INPROCEEDINGS{8751768,
author={A. E. {Taşören} and H. {Örenbaş} and S. {Şahin}},
booktitle={2018 6th International Conference on Control Engineering Information Technology (CEIT)},
title={Analyze and Comparison of Different PID Tuning Methods on a Brushless DC Motor Using Atmega328 Based Microcontroller Unit},
year={2018}
}