for publish
Dependencies: HC_SR04_Ultrasonic_Library mbed
main.cpp
- Committer:
- jasonbx
- Date:
- 2017-03-14
- Revision:
- 0:fded9bf799e2
File content as of revision 0:fded9bf799e2:
#include "mbed.h"
#include "motordriver.h"
#include "ultrasonic.h"
#include "SongPlayer.h"
int x=1;
void dist(int distance)
{
if (distance<100){
x=0;
}
//put code here to execute when the distance has changed
printf("Distance %d mm\r\n", distance);
}
ultrasonic mu(p9, p10, .1, 1, &dist);
//BusOut myled(LED1,LED2,LED3,LED4);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
Serial blue(p28,p27);
AnalogIn ain(A0); //p15
SongPlayer mySpeaker(p26);
Motor A(p23, p6, p5, 1); // pwm, fwd, rev, can brake
Motor B(p21, p7, p8, 1); // pwm, fwd, rev, can brake
float note[18]= {1568.0,1396.9,1244.5,1244.5,1396.9,1568.0,1568.0,1568.0,1396.9,
1244.5,1396.9,1568.0,1396.9,1244.5,1174.7,1244.5,1244.5, 0.0
};
float duration[18]= {0.48,0.24,0.72,0.48,0.24,0.48,0.24,0.24,0.24,
0.24,0.24,0.24,0.24,0.48,0.24,0.48,0.48, 0.0
};
int main()
{
mu.startUpdates();//start measuring the distance
char bnum=0;
char bhit=0;
while(x==1){
mu.checkDistance();
led1 = (ain > 0.15f) ? 1 : 0;
led2 = (ain > 0.30f) ? 1 : 0;
led3 = (ain > 0.45f) ? 1 : 0;
led4 = (ain > 0.7f) ? 1 : 0;
A.speed(0.4);
B.speed(0.4);
// printf("Distance %d mm\r\n", distance);
}
mySpeaker.PlaySong(note,duration);
// loops forever while song continues to play to end using interrupts
A.speed(0);
B.speed(0);
while(1){
if (blue.getc()=='!') {
if (blue.getc()=='B') { //button data packet
bnum = blue.getc(); //button number
bhit = blue.getc(); //1=hit, 0=release
if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK?
// myled = bnum - '0'; //current button number will appear on LEDs
switch (bnum) {
case '1': //number button 1
if (bhit=='1') {
A.speed(0);
B.speed(0);
} else {
//add release code here
}
break;
case '2': //number button 2
if (bhit=='1') {
//add hit code here
} else {
//add release code here
}
break;
case '3': //number button 3
if (bhit=='1') {
//add hit code here
} else {
//add release code here
}
break;
case '4': //number button 4
if (bhit=='1') {
//add hit code here
} else {
//add release code here
}
break;
case '5': //button 5 up arrow
if (bhit=='1') {
A.speed(1);
B.speed(1);
wait(0.02);
} else {
//add release code here
}
break;
case '6': //button 6 down arrow
if (bhit=='1') {
A.speed(-1);
B.speed(-1);
wait(0.02);
} else {
//add release code here
}
break;
case '7': //button 7 left arrow
if (bhit=='1') {
A.speed(-1);
B.speed(1);
wait(0.02);
} else {
//add release code here
}
break;
case '8': //button 8 right arrow
if (bhit=='1') {
A.speed(1);
B.speed(-1);
wait(0.02);
} else {
//add release code here
}
break;
default:
A.speed(0.3);
B.speed(0.3);
break;
}
}
}
}
}
}