A community-driven, open-source initiative with the aim of demystifying Field Oriented Control (FOC) for user-friendly motor control. The project aims to provide well-documented, modular, and cross-platform solutions both in software and hardware.

Arduino SimpleFOClibrary

A Cross-Platform Field Oriented Control (FOC) implementation for BLDC and Stepper motors
based on the Arduino IDE and PlatformIO

This Arduino library implements Field Oriented Control (FOC) algorithm for BLDC and Stepper motors. FOC algorithm produces incomparably smooth operation and high degree of torque, velocity and position control. The library is intended both for:

  • Beginners searching for a simple and user-friendly way to learn how to control BLDC and Stepper motors
  • Advanced users ready to dig deeper into the FOC algorithm and optimize the code for their particular application/hardware.


Arduino IDE Compatible

The code of Arduino SimpleFOClibrary is available as Arduino sketch or through Arduino Library Manager. Installation docs.

PlatformIO Compatible

The code of SimpleFOClibrary can be directly integrated with PlatfromIO. Installation docs.

Open Source

The code and full documentation is available on Github.


The library supports more than 15 microcontroller architectures. See more in docs.

Easy configuration

SimpleFOClibrary makes it very simple to configure for different types of motors, position sensors and microcontrollers. Coding docs.

Well documented

Our philosophy is not to release any new features without documenting them properly. In our docs we try to document not just the code API but also a lot of example projects, suggestions and tutorials. Find out more here.


SimpleFOC is a community-driven project made of FOC enthusiasts in all shapes and forms 😃 We are really proud that the library has more than 50 contributors and an actively growing SimpleFOC Community.
SimpleFOClibrary has been used by the community to build many cool projects. Here is a short video (its a bit old now as it's from 2020) showcasing some interesting projects from the community.

Join us on this journey by becoming a part of our community at

📢 Find more example projects in here!

Supported hardware

Arduino SimpleFOClibrary is made with a goal to enable using Field Oriented Control algorithm with as wide range of hardware solutions as possible.
With that in mind, the library is in constant development to support as many motor + sensor + driver + microcontroller combinations out there.


- BLDC motors
- Stepper motors
Read more

Drivers boards

- BLDC drivers
- Gimbal drivers
- Stepper drivers
Read more

Position Sensors

- Encoders
- Magnetic sensors
- Hall sensors
- Open-loop control
Read more


- Arduino
- STM32
- ESP32
- Teensy
- Portenta H7
- Raspberry pi Pico
- SAMD21/ SAMD51
Read more


Low cost, modular, FOC supporting motor drivers

Successful deployment of FOC algorithms requires good hardware, which can be crucial and sometimes difficult to find, especially when starting to learn about FOC. To address this, SimpleFOC team members have developed a set of boards, designed specifically for ease of use, to help you kickstart your FOC journey.

In addition to the official boards, there are many other boards compatible with SimpleFOC that you can explore, see the docs. Additionally, some other cool hardware designs have been proposed by the community. Check out our community forum for more info.

If you are interested in one of these boards, check their availability in our shop!

Arduino SimpleFOCShield

This is an open-source low-cost Brushless DC (BLDC) motor driver board intended primarily for low-power FOC applications up to 5Amps. The board is fully compatible with the Arduino UNO and all the boards with the standard Arduino headers. Arduino SimpleFOCShield, in combination with the SimpleFOClibrary provides user-friendly way to control BLDC motors both in hardware and software.


Possibility of stacking 2 shields (2 BLDC motors + 2 position sensors)

Configurable pinout

Possible to choose all the pins used by the board.

Sensor Interfaces

Encoder/Hall senosor pull-ups (3kOhm), I2C pullups (4.7kOhm).

Current Sensing ( from version > v2.0 )

3A/5A in-line current sensing

On-board voltage regulator ( from version > v2.0 )

5V/8V linear voltage regulator

Open Source

The code and full documentation is available on Github.


This is a miniature low-cost Brushless DC (BLDC) motor driver board intended primarily for low-power FOC applications up to 3Amps.


Possibility of staking the board to the Arduino R3 Headers (not shield shaped).

Small footprint



Production cost of around 3-5€ (depending on the batch size)

Open Source

The code and full documentation is available on Github.

📢 NEWS! New batch of SimpleFOCMini v1.1 is now available in the shop! Read more ...


Community of FOC enthusiasts with more than 1500 members.

SimpleFOC is a community-driven project made up of FOC enthusiasts ranging from novices to seasoned experts. With over 1500 members and 50 contributors, the SimpleFOC Community is constantly growing. Various software and hardware components of SimpleFOC have been utilized in student projects (which makes us particularly proud, as SimpleFOC began as a student project), products for companies in various domains, and even by the research community.

We are excited to see what the future holds for SimpleFOC! Join us on this journey by becoming a part of our community at

Our community platforms

Community Forum

Join our community forum with 1500+ members!

Discourse users Discourse posts Discourse topics

Discord server

Join our discord server with 1000+ members!

write a description depending on your usage