PWM Library for H3/H2+ Sunxi SoC
The Mainline Kernel provides a PWM driver as an Overlay driver.
Mainline Kernel no longer requires this library.
Mainline KernelではOverlay driverとしてPWMドライバーが提供されています。
Mainline Kernelではこのツールはもはや不要です。
このライブラリはOrangePiやNanoPiなど、H3/H2+ベースのボードでハードウェアPWMを使うためのライブラリです。
以下のボードで動作を確認しています。
OrangePi PC(H3)
OrangePi ZERO(H2+)
NanoPi M1(H3)
このライブラリを使うためには以下のドライバーを有効にする必要が有ります。
https://github.com/iboguslavsky/pwm-sunxi-opi0
以下のプログラムでSG90マイクロサーボモータが 0°→ -90° → +90° → 0° に動きます。
cc -o pwmt pwmt.c pwm.c -lwiringPi
sudo ./pwmt
サーボモータを使う場合、全体のパルス幅とActiveパルス幅で制御することができます。
void pwm_begin(float period)
period : 全体のパルス幅(mSec)
void pwm_active(float period)
period : Activeのパルス幅(mSec)
サーバプロセスをバックグラウンドで起動することで、コマンドラインからサーボモータを制御することができます。
cc -o pwmd pwmd.c pwm.c -lwiringPi
su
./pwmd &
exit
cc -o pwmc pwmc.c
./pwmc 20.0 1.45
./pwmc 20.0 2.35
./pwmc 20.0 0.625
This is the library to use hardware PWM by a board of H3/H2+ base such as OrangePi and NanoPi.
It works by the following board.
OrangePi PC(H3)
OrangePi ZERO(H2+)
NanoPi M1(H3)
You have to make the following driver effective to use this library.
https://github.com/iboguslavsky/pwm-sunxi-opi0
SG90 micro servomotor (http://akizukidenshi.com/download/ds/towerpro/SG90.pdf) works by the following program.
SG90 | Opi | |
---|---|---|
Vcc | -- | 5V |
Gnd | -- | GND |
PWM | -- | UART0_RX |
cc -o pwmt pwmt.c pwm.c -lwiringPi
sudo ./pwmt
When using a servomotor, you can control with entire pulse width and active pulse width.
void pwm_begin(float period)
period : entire pulse width(mSec)
void pwm_active(float period)
period : active pulse width(mSec)
You can control servomotor from command-line with background server process like pigpio.
cc -o pwmd pwmd.c pwm.c -lwiringPi
su
./pwmd &
exit
cc -o pwmc pwmc.c
./pwmc 20.0 1.45
./pwmc 20.0 2.35
./pwmc 20.0 0.625
pwmc don't need delay time.