Changeset 224 for rtos_arduino/trunk/arduino_lib/libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino
- Timestamp:
- Apr 30, 2016, 11:29:25 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rtos_arduino/trunk/arduino_lib/libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino
r136 r224 13 13 * included in Arduino 0017 14 14 * 15 * TODO add message to configure minPulse/maxPulse/degrees16 *17 15 * This example code is in the public domain. 18 16 */ … … 22 20 23 21 Servo servos[MAX_SERVOS]; 22 byte servoPinMap[TOTAL_PINS]; 23 byte servoCount = 0; 24 24 25 25 void analogWriteCallback(byte pin, int value) 26 26 { 27 if (IS_PIN_ SERVO(pin)) {28 servos[ PIN_TO_SERVO(pin)].write(value);27 if (IS_PIN_DIGITAL(pin)) { 28 servos[servoPinMap[pin]].write(value); 29 29 } 30 } 31 32 void systemResetCallback() 33 { 34 servoCount = 0; 30 35 } 31 36 … … 34 39 byte pin; 35 40 36 Firmata.setFirmwareVersion( 0, 2);41 Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); 37 42 Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); 43 Firmata.attach(SYSTEM_RESET, systemResetCallback); 38 44 45 Firmata.begin(57600); 46 systemResetCallback(); 47 48 // attach servos from first digital pin up to max number of 49 // servos supported for the board 39 50 for (pin = 0; pin < TOTAL_PINS; pin++) { 40 if (IS_PIN_SERVO(pin)) { 41 servos[PIN_TO_SERVO(pin)].attach(PIN_TO_DIGITAL(pin)); 51 if (IS_PIN_DIGITAL(pin)) { 52 if (servoCount < MAX_SERVOS) { 53 servoPinMap[pin] = servoCount; 54 servos[servoPinMap[pin]].attach(PIN_TO_DIGITAL(pin)); 55 servoCount++; 56 } 42 57 } 43 58 } 44 45 Firmata.begin(57600);46 59 } 47 60 … … 51 64 Firmata.processInput(); 52 65 } 53
Note:
See TracChangeset
for help on using the changeset viewer.