boolean StepperFirmata::handlePinMode(byte pin, int mode) { if (mode == STEPPER) { if (IS_PIN_DIGITAL(pin)) { digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM pinMode(PIN_TO_DIGITAL(pin), OUTPUT); return true; } } return false; }
void ServoFirmata::attach(byte pin, int minPulse, int maxPulse) { Servo *servo = servos[PIN_TO_SERVO(pin)]; if (!servo) { servo = new Servo(); servos[PIN_TO_SERVO(pin)] = servo; } if (servo->attached()) servo->detach(); if (minPulse>=0 || maxPulse>=0) servo->attach(PIN_TO_DIGITAL(pin),minPulse,maxPulse); else servo->attach(PIN_TO_DIGITAL(pin)); }
boolean AnalogInputFirmata::handlePinMode(byte pin, int mode) { if (IS_PIN_ANALOG(pin)) { if (mode == PIN_MODE_ANALOG) { reportAnalog(PIN_TO_ANALOG(pin), 1); // turn on reporting if (IS_PIN_DIGITAL(pin)) { pinMode(PIN_TO_DIGITAL(pin), INPUT); // disable output driver } return true; } else { reportAnalog(PIN_TO_ANALOG(pin), 0); // turn off reporting } } return false; }