Honmaka Astro MicroControler sample PluseMotor Sample Ver 3

Dependencies:   mbed

Fork of PulseMotor2 by Honmaka Astro

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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