• 1
    Like
  • 0
    Comment

ArcSoft_画像17.PNG

はじめに

自作のProlog処理系(O-Prolog)のラズパイバージョンにWiringPIを操作する組込み述語を追加しました。LチカなどがPrologからお手軽にできます。仕様の覚書です。

組み込み関数

O-Prolog                                    C言語

wiringpi_spi_setup(ch,speed)  <===>  wiringPiSPISetup (SPI_CH, SPI_SPEED)
wiringpi_setup_gpio(X)  <===>  X=wiringPiSetupGpio()
pin-mode(N,output)  <====> pinMode(N, OUTPUT)  or input -> INPUT or pwm_output ->PWM-OUTPUT
digital_write(n,v)  <===> digitalWrite(n, v);
digital_write_byte(value)  <===>  digitalWriteByte(value)
digital_read(pin,X)  <===> X=digitalRead(pin) 
delay(howlong) <===> void delay(unsigned int howLong)
delay_microseconds(howlong) <===> void delayMicroseconds(unsigned int howLong)
pull_up_dn_control(pin, pud)  <===> pullUpDnControl(pin,pud)
pwm_set_mode(pwm_mode_ms)  <===> pwmSetMode(PWM_MODE_MS) or pwm_mode_bal -> PWM_MODE_BAL
pwm_set_clock(n) <===>  pwmSetClock(n);
pwm_set_range(n) <===>  pwmSetRange(n);
pwm_write(pin,value)  <===> pwmWrite(pin , value) 

Lチカ Prologコード

wiringPiのセットアップをするにはroot権限が必要です。次のようにして起動してください。

sudo ./opl

コード

setup :-
    not(flag),wiringpi_setup_gpio(X),assert(flag),
    pin_mode(5,output).

test(0).
test(N) :-
    digital_write(5,1),
    delay(1000),
    digital_write(5,0),
    delay(1000),
    N1 is N - 1,
    test(N1).

実行
プロンプトから次のように入力してください。

setup.
test(10).

サーボを動かす例

setup :-
    not(flag),wiringpi_setup_gpio(X),assert(flag),
    pin_mode(18,pwm_output),
    pwm_set_mode(pwm_mode_ms),
    pwm_set_clock(400),
    pwm_set_range(1024).


test1(N) :-
    pwm_write(18,N).

次のように実行します。

setup.
test1(24).
test1(115).

サーボとPWMについては下記の記事がわかりやすいです。
http://qiita.com/locatw/items/f15fd9df40153bbb4d27

wiringPi参考ページ
http://nya03n.hatenablog.com/entry/2015/07/05/114301

実行ファイル

以下のページにて無償提供しております。

なお、個人的な楽しみのための非商用利用に限っております。また、本ソフトウェアを使用したことによる損害には責任を負いません。自己責任でお願いします。
http://eisl.kan-be.com/library/oprolog.html

簡易エディタ

ラズパイで実験をするのに、簡易なCUIエディタを装備しました。
http://qiita.com/sym_num/items/4af619de02191c95e3b9

ソースコード

電子書籍の付録として販売しております。
https://www.amazon.co.jp/dp/B01M3TVQ5M

ラズパイバージョンをコンパイルするにはUbuntu版を解凍した後に次のようにしてmakeしてください。function.c のinitbuiltin関数にて組み込み関数の定義をしています。wiringPi関係はコメントアウトしてあります。このコメントを外してからmakeをしますとwiringPiの組込み述語が機能するようになります。

make -f rasmake