test
Dependencies: HC_SR04_Ultrasonic_Library Servo mbed-rtos mbed
Fork of rtos_basic by
main.cpp@12:7a9903be8988, 2018-04-19 (annotated)
- Committer:
- jmendoza33
- Date:
- Thu Apr 19 17:51:35 2018 +0000
- Revision:
- 12:7a9903be8988
- Parent:
- 11:0309bef74ba8
TEST
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
jmendoza33 | 12:7a9903be8988 | 2 | #include "Servo.h" |
mbed_official | 11:0309bef74ba8 | 3 | #include "rtos.h" |
jmendoza33 | 12:7a9903be8988 | 4 | #include "ultrasonic.h" |
jmendoza33 | 12:7a9903be8988 | 5 | |
jmendoza33 | 12:7a9903be8988 | 6 | |
jmendoza33 | 12:7a9903be8988 | 7 | /// Objects |
jmendoza33 | 12:7a9903be8988 | 8 | DigitalOut led1(LED1); // Used For testsing |
jmendoza33 | 12:7a9903be8988 | 9 | DigitalOut led2(LED2); // Used For tesitng |
jmendoza33 | 12:7a9903be8988 | 10 | Serial blue(p28,p27); // Bluetooh |
jmendoza33 | 12:7a9903be8988 | 11 | Servo myservo(p21); // Motor |
jmendoza33 | 12:7a9903be8988 | 12 | Serial pc(USBTX,USBRX); // PC |
jmendoza33 | 12:7a9903be8988 | 13 | Thread t1; |
jmendoza33 | 12:7a9903be8988 | 14 | Thread t2; |
jmendoza33 | 12:7a9903be8988 | 15 | Thread t3; |
jmendoza33 | 12:7a9903be8988 | 16 | |
jmendoza33 | 12:7a9903be8988 | 17 | Mutex off; |
jmendoza33 | 12:7a9903be8988 | 18 | bool close=false; |
jmendoza33 | 12:7a9903be8988 | 19 | |
jmendoza33 | 12:7a9903be8988 | 20 | void bluetooth(){ |
jmendoza33 | 12:7a9903be8988 | 21 | char bnum = 0; |
jmendoza33 | 12:7a9903be8988 | 22 | while(1) { |
jmendoza33 | 12:7a9903be8988 | 23 | // off.lock(); |
jmendoza33 | 12:7a9903be8988 | 24 | Thread::wait(50); |
jmendoza33 | 12:7a9903be8988 | 25 | if (blue.getc() == '!') { |
jmendoza33 | 12:7a9903be8988 | 26 | if (blue.getc()=='B') { |
jmendoza33 | 12:7a9903be8988 | 27 | bnum = blue.getc(); |
jmendoza33 | 12:7a9903be8988 | 28 | pc.printf("%s",bnum); |
jmendoza33 | 12:7a9903be8988 | 29 | // Up Arrow |
jmendoza33 | 12:7a9903be8988 | 30 | |
jmendoza33 | 12:7a9903be8988 | 31 | if ((bnum == '5') && (myservo <= 1.0)) { |
jmendoza33 | 12:7a9903be8988 | 32 | myservo = myservo + 0.05; |
jmendoza33 | 12:7a9903be8988 | 33 | pc.printf("\n Servo up\n "); |
jmendoza33 | 12:7a9903be8988 | 34 | |
jmendoza33 | 12:7a9903be8988 | 35 | } |
jmendoza33 | 12:7a9903be8988 | 36 | |
jmendoza33 | 12:7a9903be8988 | 37 | // Down Arrow |
jmendoza33 | 12:7a9903be8988 | 38 | else if ((bnum == '6') && (myservo >= 0.54)) { |
jmendoza33 | 12:7a9903be8988 | 39 | myservo = myservo - 0.05; |
jmendoza33 | 12:7a9903be8988 | 40 | pc.printf("\n Servo down\n "); |
jmendoza33 | 12:7a9903be8988 | 41 | } |
jmendoza33 | 12:7a9903be8988 | 42 | |
jmendoza33 | 12:7a9903be8988 | 43 | // Left Arrow |
jmendoza33 | 12:7a9903be8988 | 44 | |
jmendoza33 | 12:7a9903be8988 | 45 | else if (bnum == '7') { |
jmendoza33 | 12:7a9903be8988 | 46 | myservo=0.00; |
jmendoza33 | 12:7a9903be8988 | 47 | pc.printf("\n brake \n "); |
jmendoza33 | 12:7a9903be8988 | 48 | |
jmendoza33 | 12:7a9903be8988 | 49 | /* while (myservo > 0.0) { |
jmendoza33 | 12:7a9903be8988 | 50 | if (myservo < 0.05) |
jmendoza33 | 12:7a9903be8988 | 51 | myservo = 0.0; |
jmendoza33 | 12:7a9903be8988 | 52 | else |
jmendoza33 | 12:7a9903be8988 | 53 | myservo = myservo - 0.05; // Brake |
jmendoza33 | 12:7a9903be8988 | 54 | pc.printf("brekae"); |
jmendoza33 | 12:7a9903be8988 | 55 | } */ |
jmendoza33 | 12:7a9903be8988 | 56 | |
jmendoza33 | 12:7a9903be8988 | 57 | } |
jmendoza33 | 12:7a9903be8988 | 58 | |
jmendoza33 | 12:7a9903be8988 | 59 | // Right Arrow |
jmendoza33 | 12:7a9903be8988 | 60 | |
jmendoza33 | 12:7a9903be8988 | 61 | else if (bnum == '8') { |
jmendoza33 | 12:7a9903be8988 | 62 | //servo.lock(); |
jmendoza33 | 12:7a9903be8988 | 63 | myservo = 0.5; // Neutral |
jmendoza33 | 12:7a9903be8988 | 64 | pc.printf("\n netrual"); |
jmendoza33 | 12:7a9903be8988 | 65 | //servo.unlock(); |
jmendoza33 | 12:7a9903be8988 | 66 | |
jmendoza33 | 12:7a9903be8988 | 67 | } |
jmendoza33 | 12:7a9903be8988 | 68 | } |
jmendoza33 | 12:7a9903be8988 | 69 | } |
jmendoza33 | 12:7a9903be8988 | 70 | // off.unlock(); |
emilmont | 1:491820ee784d | 71 | } |
jmendoza33 | 12:7a9903be8988 | 72 | |
jmendoza33 | 12:7a9903be8988 | 73 | |
jmendoza33 | 12:7a9903be8988 | 74 | }// ends bluetooh |
jmendoza33 | 12:7a9903be8988 | 75 | |
jmendoza33 | 12:7a9903be8988 | 76 | |
jmendoza33 | 12:7a9903be8988 | 77 | |
jmendoza33 | 12:7a9903be8988 | 78 | void dist(int distance) |
jmendoza33 | 12:7a9903be8988 | 79 | { |
jmendoza33 | 12:7a9903be8988 | 80 | //put code here to execute when the distance has changed |
jmendoza33 | 12:7a9903be8988 | 81 | pc.printf("Distance %d mm\r\n", distance); |
jmendoza33 | 12:7a9903be8988 | 82 | if(distance<300){ |
jmendoza33 | 12:7a9903be8988 | 83 | close=true; |
jmendoza33 | 12:7a9903be8988 | 84 | |
jmendoza33 | 12:7a9903be8988 | 85 | } |
emilmont | 1:491820ee784d | 86 | } |
emilmont | 1:491820ee784d | 87 | |
jmendoza33 | 12:7a9903be8988 | 88 | ultrasonic mu(p6, p7, .1, 1, &dist); |
jmendoza33 | 12:7a9903be8988 | 89 | |
jmendoza33 | 12:7a9903be8988 | 90 | void stop(){ |
emilmont | 1:491820ee784d | 91 | |
jmendoza33 | 12:7a9903be8988 | 92 | pc.printf("\n STOP MOTOR"); |
jmendoza33 | 12:7a9903be8988 | 93 | //off.lock(); |
jmendoza33 | 12:7a9903be8988 | 94 | myservo=0.0; |
jmendoza33 | 12:7a9903be8988 | 95 | Thread::wait(2000); |
jmendoza33 | 12:7a9903be8988 | 96 | //off.unlock(); |
jmendoza33 | 12:7a9903be8988 | 97 | |
jmendoza33 | 12:7a9903be8988 | 98 | |
jmendoza33 | 12:7a9903be8988 | 99 | }//ends stop |
jmendoza33 | 12:7a9903be8988 | 100 | |
jmendoza33 | 12:7a9903be8988 | 101 | |
jmendoza33 | 12:7a9903be8988 | 102 | |
jmendoza33 | 12:7a9903be8988 | 103 | int main() { |
jmendoza33 | 12:7a9903be8988 | 104 | |
jmendoza33 | 12:7a9903be8988 | 105 | |
jmendoza33 | 12:7a9903be8988 | 106 | myservo = 0.0; |
jmendoza33 | 12:7a9903be8988 | 107 | wait(0.5); //detects signal |
jmendoza33 | 12:7a9903be8988 | 108 | //Required ESC Calibration/Arming sequence |
jmendoza33 | 12:7a9903be8988 | 109 | //sends longest and shortest PWM pulse to learn and arm at power on |
jmendoza33 | 12:7a9903be8988 | 110 | myservo = 1.0; //send longest PWM |
jmendoza33 | 12:7a9903be8988 | 111 | wait(5); |
jmendoza33 | 12:7a9903be8988 | 112 | myservo = 0.0; //send shortest PWM |
jmendoza33 | 12:7a9903be8988 | 113 | wait(5); |
jmendoza33 | 12:7a9903be8988 | 114 | //ESC now operational using standard servo PWM signals |
jmendoza33 | 12:7a9903be8988 | 115 | myservo = 0.5; |
jmendoza33 | 12:7a9903be8988 | 116 | wait(2); |
jmendoza33 | 12:7a9903be8988 | 117 | |
jmendoza33 | 12:7a9903be8988 | 118 | pc.printf("\n SETUP \n "); |
jmendoza33 | 12:7a9903be8988 | 119 | t1.start(bluetooth); |
jmendoza33 | 12:7a9903be8988 | 120 | t2.start(stop); |
jmendoza33 | 12:7a9903be8988 | 121 | |
jmendoza33 | 12:7a9903be8988 | 122 | mu.startUpdates(); |
jmendoza33 | 12:7a9903be8988 | 123 | while (true) { |
jmendoza33 | 12:7a9903be8988 | 124 | |
jmendoza33 | 12:7a9903be8988 | 125 | if(close){ |
jmendoza33 | 12:7a9903be8988 | 126 | pc.printf("\n Thread realsed \n "); |
jmendoza33 | 12:7a9903be8988 | 127 | t2.start(stop); |
jmendoza33 | 12:7a9903be8988 | 128 | Thread::wait(1000); |
jmendoza33 | 12:7a9903be8988 | 129 | close=false; |
jmendoza33 | 12:7a9903be8988 | 130 | |
jmendoza33 | 12:7a9903be8988 | 131 | } |
jmendoza33 | 12:7a9903be8988 | 132 | mu.checkDistance(); |
jmendoza33 | 12:7a9903be8988 | 133 | |
jmendoza33 | 12:7a9903be8988 | 134 | }//ends While |
jmendoza33 | 12:7a9903be8988 | 135 | |
jmendoza33 | 12:7a9903be8988 | 136 | }// ends Main |
jmendoza33 | 12:7a9903be8988 | 137 | |
jmendoza33 | 12:7a9903be8988 | 138 |