aboutsummaryrefslogtreecommitdiff
path: root/libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde')
-rw-r--r--libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde42
1 files changed, 42 insertions, 0 deletions
diff --git a/libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde b/libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde
new file mode 100644
index 0000000..6f78ccd
--- /dev/null
+++ b/libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde
@@ -0,0 +1,42 @@
+/* This firmware supports as many servos as possible using the Servo library
+ * included in Arduino 0017
+ *
+ * TODO add message to configure minPulse/maxPulse/degrees
+ *
+ * This example code is in the public domain.
+ */
+
+#include <Servo.h>
+#include <Firmata.h>
+
+Servo servos[MAX_SERVOS];
+
+void analogWriteCallback(byte pin, int value)
+{
+ if (IS_PIN_SERVO(pin)) {
+ servos[PIN_TO_SERVO(pin)].write(value);
+ }
+}
+
+void setup()
+{
+ byte pin;
+
+ Firmata.setFirmwareVersion(0, 2);
+ Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
+
+ for (pin=0; pin < TOTAL_PINS; pin++) {
+ if (IS_PIN_SERVO(pin)) {
+ servos[PIN_TO_SERVO(pin)].attach(PIN_TO_DIGITAL(pin));
+ }
+ }
+
+ Firmata.begin(57600);
+}
+
+void loop()
+{
+ while(Firmata.available())
+ Firmata.processInput();
+}
+