Skip to content

Instantly share code, notes, and snippets.

@PhilOwen
Last active April 5, 2017 12:35
Show Gist options
  • Save PhilOwen/c28d0758ab72a4c24bef to your computer and use it in GitHub Desktop.
Save PhilOwen/c28d0758ab72a4c24bef to your computer and use it in GitHub Desktop.
MacのMonoでSerial通信

Mac上のMono F#からシリアルポートを使って、 Arduinoと通信する。

Macのシリアルポートから適当な周期で文字列を書き出して、 Arduinoはそれに合わせてLEDを点けたり消したりする。
ポート名とボーレートは、環境に合わせて変えること。

F#は、monoをbrewで普通にインストールしたら付いてきた。

fsharpc serial.fs && mono serial.exe

で簡単に実行できる。

Arduinoは処理が遅いのか何なのか、 思ったように送受信されていないことがあった。 アクが強いので注意。

open System.IO.Ports
open System.Threading
let portname = "/dev/cu.usbmodem1461"
let rate = 9600
let sleep (msec: int) = Thread.Sleep msec
let loop (sp: SerialPort) =
printfn "TICK"
sp.Write("HIGH")
sleep 800
printfn "RESPONSE: %s" <| sp.ReadExisting()
sp.Write("LOW")
sleep 1200
printfn "RESPONSE: %s" <| sp.ReadExisting()
let main =
printfn "starting... %s %d" portname rate
use sp = new SerialPort(portname, rate)
sp.Open()
while true do
loop sp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment