22

Dependencies:   DebounceIn mbed

Committer:
turumputum
Date:
Mon Sep 10 13:55:57 2018 +0000
Revision:
0:44cbfa681c36
222

Who changed what in which revision?

UserRevisionLine numberNew 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 }