root / arduino-1.0 / libraries / Firmata / examples / ServoFirmata / ServoFirmata.ino @ 58d82c77
History | View | Annotate | Download (1.15 KB)
| 1 |
/* |
|---|---|
| 2 |
* Firmata is a generic protocol for communicating with microcontrollers |
| 3 |
* from software on a host computer. It is intended to work with |
| 4 |
* any host computer software package. |
| 5 |
* |
| 6 |
* To download a host software package, please clink on the following link |
| 7 |
* to open the download page in your default browser. |
| 8 |
* |
| 9 |
* http://firmata.org/wiki/Download |
| 10 |
*/ |
| 11 |
|
| 12 |
/* This firmware supports as many servos as possible using the Servo library |
| 13 |
* included in Arduino 0017 |
| 14 |
* |
| 15 |
* TODO add message to configure minPulse/maxPulse/degrees |
| 16 |
* |
| 17 |
* This example code is in the public domain. |
| 18 |
*/ |
| 19 |
|
| 20 |
#include <Servo.h> |
| 21 |
#include <Firmata.h> |
| 22 |
|
| 23 |
Servo servos[MAX_SERVOS]; |
| 24 |
|
| 25 |
void analogWriteCallback(byte pin, int value) |
| 26 |
{
|
| 27 |
if (IS_PIN_SERVO(pin)) {
|
| 28 |
servos[PIN_TO_SERVO(pin)].write(value); |
| 29 |
} |
| 30 |
} |
| 31 |
|
| 32 |
void setup() |
| 33 |
{
|
| 34 |
byte pin; |
| 35 |
|
| 36 |
Firmata.setFirmwareVersion(0, 2); |
| 37 |
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); |
| 38 |
|
| 39 |
for (pin=0; pin < TOTAL_PINS; pin++) {
|
| 40 |
if (IS_PIN_SERVO(pin)) {
|
| 41 |
servos[PIN_TO_SERVO(pin)].attach(PIN_TO_DIGITAL(pin)); |
| 42 |
} |
| 43 |
} |
| 44 |
|
| 45 |
Firmata.begin(57600); |
| 46 |
} |
| 47 |
|
| 48 |
void loop() |
| 49 |
{
|
| 50 |
while(Firmata.available()) |
| 51 |
Firmata.processInput(); |
| 52 |
} |
| 53 |
|