NHK2021_ikarashiSolenoidValve
Dependents: NHK2021_ikarashiSV_code NHK2021_ikarashiSV_code_withservo 2021NHK_B_syudo
Diff: ikarashiSV.cpp
- Revision:
- 0:2b253298d427
- Child:
- 1:696f7c0ab1bd
- Child:
- 2:d08346d0178a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ikarashiSV.cpp Mon Oct 11 07:48:12 2021 +0000 @@ -0,0 +1,94 @@ +#include "ikarashiSV.h" + +ikarashiSV::ikarashiSV(PinName pin_a,PinName pin_b,PinName pin_c,PinName pin_d): + port_a(pin_a), port_b(pin_b), port_c(pin_c), port_d(pin_d) +{ + state = 0; + solenoid_status = 0; +} + +void ikarashiSV::add_state() +{ + state++; +} + +void ikarashiSV::solenoid(int _state) +{ + switch(_state) { + case 1: + //下だけ上がる + port_a = 0; + port_b = 1; + solenoid_status = 1; + break; + case 2: + //投げる + port_c = 1; + port_d = 0; + solenoid_status = 2; + break; + case 0: + //戻る + port_c = 0; + port_d = 1; + wait(0.3); + + port_a = 1; + port_b = 0; + solenoid_status = 0; + break; + } +} + +void ikarashiSV::solenoid_show() +{ + switch(solenoid_status) { + case 1: + printf("1:push\n\r"); + break; + case 2: + printf("\t2:push\n\r"); + break; + case 0: + printf("1:pull 2:pull\n\r"); + break; + } +} + +int ikarashiSV::state_show() +{ + return state; +} + +/* サンプルコード + +#include "mbed.h" +#include "ikarashiSV.h" + +Serial pc(USBTX, USBRX,115200); + +ikarashiSV slv(PB_1,PB_2,PB_15,PB_14); + +ボタンを押したときor離したときを読み取る定義の仕方 +InterruptIn button(USER_BUTTON); + +void add() +{ + slv.add_state(); +} + +int main() +{ + int val; + while(1) { + button.fall(&add); + val = slv.state_show(); + pc.printf("\t\tstate : %d",val); + if(val >= 1) { + slv.solenoid(val%3); + } + slv.solenoid_show(); + } +} + +*/ \ No newline at end of file