test

Dependencies:   HC_SR04_Ultrasonic_Library Servo mbed-rtos mbed

Fork of rtos_basic by mbed official

Committer:
jmendoza33
Date:
Thu Apr 19 17:51:35 2018 +0000
Revision:
12:7a9903be8988
Parent:
11:0309bef74ba8
TEST

Who changed what in which revision?

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