Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Arduino UNO系でも動くLISP実装 uLISP その2:Digital/Analog Pinを扱う

Arduinoの上で動いているので、DigitalやAnalogも使えます。
公式リファレンスによると以下のような関数があります。

Arduino interface
millis, for-millis, with-i2c, restart-i2c, with-serial, with-spi, with-sd-card, pinmode, digitalread, digitalwrite, analogread, analogwrite, delay, note

今回は、このうちDigital PinとAnalog Pinの扱いについて

実際のところ

pinmode

13番ピンを出力(=1 or t)に。

;; OUT :: 1 or t
 (pinmode 13 t) 

;; IN :: 0 or nil
 (pinmode 13 nil)

digitalread

D4を入力に。番号はボードを参照してください。

(digitalread 4)

digitalwrite

13番をHIGH/LOWに

;; OUT :: 1 or t
(digitalwrite 13 t)

;; IN :: 0 or nil
(digitalwrite 13 nil)

analogread

UNOのA3(3番)を読むのは以下の通り。
結果はt (HIGH) または nil (LOW)でかえってきます。

(analogread 3)

公式によると、"A0"等の記法を使いたいのなら変数を使え……とのこと。
たとえばArduino ZeroでA0は15番なので

(defvar A0 15)

analogwrite

PWMでアナログ出力を実行します。

;; 3番に512を
(analogwrite 3 512)

ピンの対応関係はArduino IDEでやるときと同じ筈……ですが、一応確認してから使ってください。
uLisp - Language reference
Arduino Reference