If you want to interface a lot of devices, you would typically adopt mux/demux technique, with a middle-level "device aggregator". See this: https://www.instructables.com/id/Tims-PCA9685-Controller One side (the micro-controller -uC- facing side) is I2C, while the "physical device" facing side is PWM. The micro-controller talks to 9685 (device aggregator), which in turn would talk to the devices connected to its 16 channels. Note that the above URL has Atmel 8-bit uC/Arduino as the "controlling platform". The point is that, we are making use of the I2C interface which is present in almost any uC . Further, the data sheet of the 9685 provided in the above link: https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf says that, "The PCA9685 operates with a supply voltage range of 2.3 V to 5.5 V and the inputs and outputs are 5.5 V tolerant". So, you can drive it using 3.3v. Picking the the right hardware to meet a "specific requirement" is an art, that takes time to get anywhere near the mastery. Getting used to the "datasheet" is the basic requirement. Luckily, the Internet has tons of resources providing implementation details of various project.