Honmaka Astro MicroControler sample PluseMotor Sample Ver 3
Fork of PulseMotor2 by
main.cpp
00001 #include "mbed.h" 00002 00003 PwmOut PulseMotor(p21); 00004 DigitalIn MotorSpeedSw(p5); 00005 DigitalIn MotorDirectionSw(p6); 00006 DigitalOut MotorDirectionOut(p7); 00007 00008 //Add push SW 00009 DigitalIn WestPushSw(p8); 00010 DigitalIn EastPushSw(p9); 00011 00012 int main() { 00013 //Add 00014 int PreStateWest = 1; 00015 int PreStateEast = 1; 00016 00017 MotorSpeedSw.mode(PullUp); 00018 MotorDirectionSw.mode(PullUp); 00019 //Dorection 00020 MotorDirectionOut = MotorDirectionSw; 00021 //Speed 00022 if (MotorSpeedSw == 1) { //Normal Speed 00023 PulseMotor.period_us(83140); 00024 PulseMotor.pulsewidth_us(83140/2); 00025 } 00026 else { //Half Speed 00027 PulseMotor.period_us(83140*2); 00028 PulseMotor.pulsewidth_us((83140*2)/2); 00029 } 00030 00031 //Add 00032 WestPushSw.mode(PullUp); 00033 EastPushSw.mode(PullUp); 00034 00035 while(1) { 00036 if (WestPushSw != PreStateWest) { 00037 if (WestPushSw == 0) { 00038 //pushed West SW 00039 //double speed 00040 PulseMotor.period_us(83140/2); 00041 PulseMotor.pulsewidth_us((83140/2) /2); 00042 } 00043 else { 00044 //relese West SW 00045 //normal speed 00046 PulseMotor.period_us(83140); 00047 PulseMotor.pulsewidth_us(83140 /2); 00048 } 00049 } 00050 if (EastPushSw != PreStateEast) { 00051 if (EastPushSw == 0) { 00052 //pushed East SW 00053 //Stop 00054 PulseMotor.period_us(83140); 00055 PulseMotor.pulsewidth_us(0); 00056 } 00057 else { 00058 //relese East SW 00059 //normal speed 00060 PulseMotor.period_us(83140); 00061 PulseMotor.pulsewidth_us(83140 /2); 00062 } 00063 } 00064 //Save SW state 00065 PreStateWest = WestPushSw; 00066 PreStateEast = EastPushSw; 00067 00068 wait(0.01); 00069 } 00070 } 00071 00072
Generated on Thu Jul 21 2022 15:01:34 by 1.7.2