環境
Raspberry pi zero
エディターはラズパイに初めから付いている、Thonnyを使ってます。
今回は
前回、プログラムを実行しても、動かなかったから、プログラムの解読に励みます。
今回はwiringpiをやります。
wiringpiとは
WiringPiはRaspberry PiのGPIOを制御するためのC言語ライブラリです。他の言語のPythonやPHPなどからもこのライブラリにアクセスできるようになっていてとても便利です。また、ライブラリだけではなく、コマンドラインから実行できるツール(gpioコマンド)も用意されて使いやすい印象です。いずれもGPIO制御を意識してつくられていますので、プログラミングやコマンドがechoコマンドを使う場合よりわかりやすくなっています。
wiringpiの関数
wiringPiSetupGpio()
初期化の関数です。何か問題がある場合は「-1」が返ってきます。
pinMode()
pinMode(GPIOピン番号,モード)。
モードにはOUTPUTかINPUTを指定します。
モードは数字でも表されていて、
「0」はINPUT。
「1」はOUTPUT。
「2」はalternutive function。*GPIOピン番号”18″を使う場合は”2″でいいみたい。
という意味です。
softPwmCreate()
softPwmCreate(int output_pin, int initial_phase, int palse_cycle)
int output_pinは出力するピンをwiringPi番号で指定。
int initial_phaseは初期値を指定。とりあえず、「0」でいいらしい。
int palse_cycleはpwm波の周期を100us単位で指定。
pwmSetMode()
pwmSetMode(int mode)。
モードには、PWM_MODE_BAL と PWM_MODE_MSがあります。
デフォルトでは、Balanceモードになっているようです。
Balanceモードは、Duty比ベースで制御するモードでLEDの制御には向いているそうですが、サーボモータの制御には不向きとあります。
pwmSetRange()
pwmSetRange(unsigned int range)。
pwmジェネレータ内の範囲レジスタを指定。デフォルトは「1024」なので、それでいいらしいです。
pwmSetClock()
pwmSetClock(int divisor)。
pwmクロックの除数を設定。よくわかりません(T . T)とりあえず、「375」にしときます。
softPwmWrite()
softPwmWrite(int pin, palse_width)。
int pinは出力ピンのことです。
palse_widthはパルス幅を100[μs]単位で指定しなければなりません。サーボモータはこのパルス幅によってどの位置を向くかが決まってきます。sg90なら0.5~2.4[ms]でそれぞれ0~180度を向くことになります。
とまぁこんな感じ
わからない関数もありましたが、wiringpiについてはこれくらいで。
また、つまづいた時、追記します。