Александр Селифонов
/
martishki
22
main.cpp@0:44cbfa681c36, 2018-09-10 (annotated)
- Committer:
- turumputum
- Date:
- Mon Sep 10 13:55:57 2018 +0000
- Revision:
- 0:44cbfa681c36
222
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
turumputum | 0:44cbfa681c36 | 1 | #include "mbed.h" |
turumputum | 0:44cbfa681c36 | 2 | #include "DebounceIn.h" |
turumputum | 0:44cbfa681c36 | 3 | |
turumputum | 0:44cbfa681c36 | 4 | #define MAX_SPEED 12800 //16oborotov na 800 shagov/sek |
turumputum | 0:44cbfa681c36 | 5 | #define MIN_SPEED 250 // |
turumputum | 0:44cbfa681c36 | 6 | |
turumputum | 0:44cbfa681c36 | 7 | #define SPD_INCREMENT 5 |
turumputum | 0:44cbfa681c36 | 8 | #define PULSE_DELAY 15 |
turumputum | 0:44cbfa681c36 | 9 | |
turumputum | 0:44cbfa681c36 | 10 | unsigned int speed=MIN_SPEED; |
turumputum | 0:44cbfa681c36 | 11 | float delay; |
turumputum | 0:44cbfa681c36 | 12 | |
turumputum | 0:44cbfa681c36 | 13 | DebounceIn btn1(A0); |
turumputum | 0:44cbfa681c36 | 14 | DebounceIn btn2(A1); |
turumputum | 0:44cbfa681c36 | 15 | DigitalIn sns1(A2,PullUp); |
turumputum | 0:44cbfa681c36 | 16 | DigitalIn sns2(A3,PullUp); |
turumputum | 0:44cbfa681c36 | 17 | |
turumputum | 0:44cbfa681c36 | 18 | DigitalOut dir(D5); |
turumputum | 0:44cbfa681c36 | 19 | DigitalOut pul(D4); |
turumputum | 0:44cbfa681c36 | 20 | |
turumputum | 0:44cbfa681c36 | 21 | void moving(int DIR, int MODE){ |
turumputum | 0:44cbfa681c36 | 22 | if (MODE == 0){ |
turumputum | 0:44cbfa681c36 | 23 | //accel |
turumputum | 0:44cbfa681c36 | 24 | dir=DIR; |
turumputum | 0:44cbfa681c36 | 25 | pul=1; |
turumputum | 0:44cbfa681c36 | 26 | wait_us(PULSE_DELAY); |
turumputum | 0:44cbfa681c36 | 27 | pul=0; |
turumputum | 0:44cbfa681c36 | 28 | speed += SPD_INCREMENT; |
turumputum | 0:44cbfa681c36 | 29 | delay = 1000000/speed; |
turumputum | 0:44cbfa681c36 | 30 | wait_us(delay); |
turumputum | 0:44cbfa681c36 | 31 | } |
turumputum | 0:44cbfa681c36 | 32 | |
turumputum | 0:44cbfa681c36 | 33 | if (MODE == 1){ |
turumputum | 0:44cbfa681c36 | 34 | //moving |
turumputum | 0:44cbfa681c36 | 35 | dir=DIR; |
turumputum | 0:44cbfa681c36 | 36 | pul=1; |
turumputum | 0:44cbfa681c36 | 37 | wait_us(PULSE_DELAY); |
turumputum | 0:44cbfa681c36 | 38 | pul=0; |
turumputum | 0:44cbfa681c36 | 39 | delay = 1000000/speed; |
turumputum | 0:44cbfa681c36 | 40 | wait_us(delay); |
turumputum | 0:44cbfa681c36 | 41 | } |
turumputum | 0:44cbfa681c36 | 42 | |
turumputum | 0:44cbfa681c36 | 43 | if (MODE == 2){ |
turumputum | 0:44cbfa681c36 | 44 | //decel |
turumputum | 0:44cbfa681c36 | 45 | //dir=DIR; |
turumputum | 0:44cbfa681c36 | 46 | while(speed>MIN_SPEED){ |
turumputum | 0:44cbfa681c36 | 47 | pul=1; |
turumputum | 0:44cbfa681c36 | 48 | wait_us(PULSE_DELAY); |
turumputum | 0:44cbfa681c36 | 49 | pul=0; |
turumputum | 0:44cbfa681c36 | 50 | speed -= SPD_INCREMENT; |
turumputum | 0:44cbfa681c36 | 51 | delay = 1000000/speed; |
turumputum | 0:44cbfa681c36 | 52 | wait_us(delay); |
turumputum | 0:44cbfa681c36 | 53 | } |
turumputum | 0:44cbfa681c36 | 54 | } |
turumputum | 0:44cbfa681c36 | 55 | |
turumputum | 0:44cbfa681c36 | 56 | } |
turumputum | 0:44cbfa681c36 | 57 | |
turumputum | 0:44cbfa681c36 | 58 | int main() |
turumputum | 0:44cbfa681c36 | 59 | { |
turumputum | 0:44cbfa681c36 | 60 | btn1.mode(PullUp); |
turumputum | 0:44cbfa681c36 | 61 | btn1.set_debounce_us(30000); |
turumputum | 0:44cbfa681c36 | 62 | btn1.set_samples(40); |
turumputum | 0:44cbfa681c36 | 63 | btn2.mode(PullUp); |
turumputum | 0:44cbfa681c36 | 64 | btn2.set_debounce_us(30000); |
turumputum | 0:44cbfa681c36 | 65 | btn2.set_samples(40); |
turumputum | 0:44cbfa681c36 | 66 | |
turumputum | 0:44cbfa681c36 | 67 | while(1){ |
turumputum | 0:44cbfa681c36 | 68 | |
turumputum | 0:44cbfa681c36 | 69 | if((!btn1)&&(btn2)&&(sns1)&&(speed<MAX_SPEED)){ |
turumputum | 0:44cbfa681c36 | 70 | //razgon vverh |
turumputum | 0:44cbfa681c36 | 71 | //printf("accel up speed: %d \n", speed); |
turumputum | 0:44cbfa681c36 | 72 | moving(1,0); |
turumputum | 0:44cbfa681c36 | 73 | } |
turumputum | 0:44cbfa681c36 | 74 | |
turumputum | 0:44cbfa681c36 | 75 | if((!btn1)&&(btn2)&&(sns1)&&(speed>=MAX_SPEED)){ |
turumputum | 0:44cbfa681c36 | 76 | //movingUp |
turumputum | 0:44cbfa681c36 | 77 | //printf("moving up speed: %d \n", speed); |
turumputum | 0:44cbfa681c36 | 78 | moving(1,1); |
turumputum | 0:44cbfa681c36 | 79 | } |
turumputum | 0:44cbfa681c36 | 80 | |
turumputum | 0:44cbfa681c36 | 81 | if(((btn1)&&(btn2)||(!sns1))&&(speed>MIN_SPEED)){ |
turumputum | 0:44cbfa681c36 | 82 | //breakUp |
turumputum | 0:44cbfa681c36 | 83 | //printf("braek up speed: %d \n", speed); |
turumputum | 0:44cbfa681c36 | 84 | moving(1,2); |
turumputum | 0:44cbfa681c36 | 85 | } |
turumputum | 0:44cbfa681c36 | 86 | |
turumputum | 0:44cbfa681c36 | 87 | if((btn1)&&(!btn2)&&(sns2)&&(speed<MAX_SPEED)){ |
turumputum | 0:44cbfa681c36 | 88 | //razgon vniz |
turumputum | 0:44cbfa681c36 | 89 | //printf("accel up speed: %d \n", speed); |
turumputum | 0:44cbfa681c36 | 90 | moving(0,0); |
turumputum | 0:44cbfa681c36 | 91 | } |
turumputum | 0:44cbfa681c36 | 92 | |
turumputum | 0:44cbfa681c36 | 93 | if((btn1)&&(!btn2)&&(sns2)&&(speed>=MAX_SPEED)){ |
turumputum | 0:44cbfa681c36 | 94 | //movingDown |
turumputum | 0:44cbfa681c36 | 95 | //printf("moving up speed: %d \n", speed); |
turumputum | 0:44cbfa681c36 | 96 | moving(0,1); |
turumputum | 0:44cbfa681c36 | 97 | } |
turumputum | 0:44cbfa681c36 | 98 | |
turumputum | 0:44cbfa681c36 | 99 | if(((btn1)&&(btn2)||(!sns2))&&(speed>MIN_SPEED)){ |
turumputum | 0:44cbfa681c36 | 100 | //breakDown |
turumputum | 0:44cbfa681c36 | 101 | //printf("braek up speed: %d \n", speed); |
turumputum | 0:44cbfa681c36 | 102 | moving(0,2); |
turumputum | 0:44cbfa681c36 | 103 | } |
turumputum | 0:44cbfa681c36 | 104 | |
turumputum | 0:44cbfa681c36 | 105 | |
turumputum | 0:44cbfa681c36 | 106 | } |
turumputum | 0:44cbfa681c36 | 107 | } |