arduino stuffs
Diffstat (limited to 'libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino')
| -rw-r--r-- | libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino b/libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino new file mode 100644 index 0000000..52b1f1b --- /dev/null +++ b/libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino @@ -0,0 +1,65 @@ +/* + * Firmata is a generic protocol for communicating with microcontrollers + * from software on a host computer. It is intended to work with + * any host computer software package. + * + * To download a host software package, please click on the following link + * to open the list of Firmata client libraries in your default browser. + * + * https://github.com/firmata/arduino#firmata-client-libraries + */ + +/* This firmware supports as many servos as possible using the Servo library + * included in Arduino 0017 + * + * This example code is in the public domain. + */ + +#include <Servo.h> +#include <Firmata.h> + +Servo servos[MAX_SERVOS]; +byte servoPinMap[TOTAL_PINS]; +byte servoCount = 0; + +void analogWriteCallback(byte pin, int value) +{ + if (IS_PIN_DIGITAL(pin)) { + servos[servoPinMap[pin]].write(value); + } +} + +void systemResetCallback() +{ + servoCount = 0; +} + +void setup() +{ + byte pin; + + Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); + Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); + Firmata.attach(SYSTEM_RESET, systemResetCallback); + + Firmata.begin(57600); + systemResetCallback(); + + // attach servos from first digital pin up to max number of + // servos supported for the board + for (pin = 0; pin < TOTAL_PINS; pin++) { + if (IS_PIN_DIGITAL(pin)) { + if (servoCount < MAX_SERVOS) { + servoPinMap[pin] = servoCount; + servos[servoPinMap[pin]].attach(PIN_TO_DIGITAL(pin)); + servoCount++; + } + } + } +} + +void loop() +{ + while (Firmata.available()) + Firmata.processInput(); +} |