Code for Longboard

Dependencies:   mbed

main.cpp

Committer:
OliviaR
Date:
2018-04-26
Revision:
2:b150c439e583
Parent:
1:e47cc3d6d036

File content as of revision 2:b150c439e583:

#include "mbed.h"
#include "Servo.h"
#include "rtos.h"
#include "ultrasonic.h"

/// Objects
DigitalIn pb(p22);
Serial blue(p28,p27); // Bluetooh
Servo myservo(p21); // Motor
Serial pc(USBTX,USBRX); // PC
Thread t1;
Thread t2;
Thread t3;

Mutex off;
bool close=false;

void bluetooth()
{
    char bnum = 0;
    myservo=0.5;
    Thread::wait(2000);
    while(1) {

        Thread::wait(50);
        if (blue.getc() == '!') {
            if (blue.getc()=='B') {
                bnum = blue.getc();
                pc.printf("%s",bnum);
                // Up Arrow

                if ((bnum == '5') && (myservo <= 1.0)) {
                    myservo = myservo + 0.05;
                    pc.printf("\n Servo up\n ");

                }

                // Down Arrow
                else if ((bnum == '6') && (myservo >= 0.54)) {
                    myservo = myservo - 0.05;
                    pc.printf("\n Servo down\n ");
                }

                // Left Arrow

                else if (bnum == '7') {
                    pc.printf("\n brake \n ");

                    while (myservo > 0.0) {
                         if (myservo < 0.05)
                             myservo = 0.0;
                         else
                             myservo = myservo - 0.005; // Brake
                              pc.printf("brekae");
                     }  

                }

                // Right Arrow

                else if (bnum == '8') {
                    //servo.lock();
                    myservo = 0.5; // Neutral
                    pc.printf("\n neutral");


                }
            }
        }
    }


}// ends bluetooh



void dist(int distance)
{
    //put code here to execute when the distance has changed
    pc.printf("Distance %d mm\r\n", distance);
    if(distance<400) {
        close=true;

    }
}

ultrasonic mu(p6, p7, .1, 1, &dist);

void stop()
{


 while (myservo > 0.0) {
                         if (myservo < 0.05)
                             myservo = 0.0;
                         else
                             myservo = myservo - 0.008; // Brake
                              pc.printf("brake");
                     }  





}//ends stop

int main()
{
    pb.mode(PullUp);
    pc.printf("Program Begins ");
    myservo = 0.0;
    wait(0.5); //detects signal
//Required ESC Calibration/Arming sequence
//sends longest and shortest PWM pulse to learn and arm at power on
    myservo = 1.0; //send longest PWM
    wait(8);
    myservo = 0.0; //send shortest PWM
    wait(8);
//ESC now operational using standard servo PWM signals
    pc.printf("Before");


    pc.printf("\n SETUP \n ");

    t1.start(bluetooth);

    mu.startUpdates();

    while (true) {

        if(close) {
            pc.printf("\n Thread released \n ");
            t2.start(stop);
            Thread::wait(1000);
            close=false;
        }

        mu.checkDistance();

    }//ends While

}// ends Main