Skip to content

Instantly share code, notes, and snippets.

@PhilOwen
Last active July 9, 2017 03:18
Show Gist options
  • Save PhilOwen/a61d8c803b18f61720ce to your computer and use it in GitHub Desktop.
Save PhilOwen/a61d8c803b18f61720ce to your computer and use it in GitHub Desktop.
ArduinoをFirmataでScalaから制御

FirmataでArduinoを制御。

Processingを、ScalaとSBTから使う。ので、かなりハイレベルな処理もできる(もうarduinoぽくない…)。
今回は、マウスを押している間、Arduinoの13ピンをハイにして光らせている。

Usage

制御される側のArduinoに、事前にStandardFirmataをインストールしておくこと。

SBTのlibフォルダにarduino.jarを配置しておくこと。
Processingのアプリの機能でArduino(Firmata)のライブラリを ダウンロードすると、Processingのlibrariesフォルダにそのライブラリのフォルダができる。 arduino.jarは、そのlibraryフォルダの中にある。

また、SBTはrunのときに静的ライブラリを読み、 SBTから中断後二回目runするときにもライブラリを読もうとするらしい。 このとき、二重ロードになって、アプリが起動できないのに注意。
SBTインタプリタを一旦中断して再起動すること。

import processing.core._
import processing.serial._
import cc.arduino._
class FirmataApp extends PApplet {
var ard: Arduino = null
override def settings() {
size(300, 300)
}
override def setup() {
val ports = Arduino.list()
ports.foreach(println)
ard = new Arduino(this, ports.head, 57600)
ard.pinMode(13, Arduino.OUTPUT)
}
override def draw() {
if(mousePressed) {
ard.digitalWrite(13, Arduino.HIGH)
background(220)
} else {
ard.digitalWrite(13, Arduino.LOW)
background(30)
}
}
}
import processing.core._
object Main extends App {
PApplet.main("FirmataApp")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment