Ignore:
Timestamp:
Apr 30, 2016, 11:29:25 PM (8 years ago)
Author:
ertl-honda
Message:

1.7.10のファイルに更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rtos_arduino/trunk/arduino_lib/libraries/Firmata/examples/ServoFirmata/ServoFirmata.ino

    r136 r224  
    1313 * included in Arduino 0017
    1414 *
    15  * TODO add message to configure minPulse/maxPulse/degrees
    16  *
    1715 * This example code is in the public domain.
    1816 */
     
    2220
    2321Servo servos[MAX_SERVOS];
     22byte servoPinMap[TOTAL_PINS];
     23byte servoCount = 0;
    2424
    2525void analogWriteCallback(byte pin, int value)
    2626{
    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);
    2929  }
     30}
     31
     32void systemResetCallback()
     33{
     34  servoCount = 0;
    3035}
    3136
     
    3439  byte pin;
    3540
    36   Firmata.setFirmwareVersion(0, 2);
     41  Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
    3742  Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
     43  Firmata.attach(SYSTEM_RESET, systemResetCallback);
    3844
     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
    3950  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      }
    4257    }
    4358  }
    44 
    45   Firmata.begin(57600);
    4659}
    4760
     
    5164    Firmata.processInput();
    5265}
    53 
Note: See TracChangeset for help on using the changeset viewer.