void setPinMode(int pin, PinMode mode) { if (pin >= 0 && pin < NUM_DIGITAL_PINS) { if (getPinMode(pin) != mode) { resetPinMode(pin); switch (mode) { case PinModeUnused: if (setPinModeUnused != NULL) { setPinModeUnused(pin); } goto change; case PinModeInput: if (setPinModeInput != NULL) { setPinModeInput(pin); } goto change; case PinModeOutput: if (setPinModeOutput != NULL) { setPinModeOutput(pin); } goto change; case PinModeInputPullUp: if (setPinModeInputPullUp != NULL) { setPinModeInputPullUp(pin); } goto change; case PinModeOutputHigh: if (setPinModeOutputHigh != NULL) { setPinModeOutputHigh(pin); } goto change; case PinModeOutputOpenDrain: if (setPinModeOutputOpenDrain != NULL) { setPinModeOutputOpenDrain(pin); } goto change; case PinModeAnalogRead: if (setPinModeAnalogRead != NULL) { setPinModeAnalogRead(pin); } goto change; case PinModeAnalogWrite: if (setPinModeAnalogWrite != NULL) { setPinModeAnalogWrite(pin); } goto change; case PinModeTone: if (setPinModeTone != NULL) { setPinModeTone(pin); } goto change; case PinModeServo: if (setPinModeServo != NULL) { setPinModeServo(pin); } goto change; case PinModeDac: if (setPinModeDac != NULL) { setPinModeDac(pin); } goto change; case PinModeOther: if (setPinModeOther != NULL) { setPinModeOther(pin); } change: changePinMode(pin, mode); break; default: break; } } } }
//************************************************** // アナログDACピン初期化: initDac // initDac() //************************************************** mrb_value mrb_kernel_initDac(mrb_state *mrb, mrb_value self) { setPinModeDac(RB_PIN9); return mrb_nil_value(); //戻り値は無しですよ。 }