Water Balloon Launcher

Dependencies:   4DGL-uLCD-SE SDFileSystem Servo mbed wave_player

Committer:
mhennessy3
Date:
Mon May 02 05:04:17 2016 +0000
Revision:
0:3388913dec04
Water Balloon Launcher Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mhennessy3 0:3388913dec04 1 #include <mbed.h>
mhennessy3 0:3388913dec04 2 #include <Servo.h>
mhennessy3 0:3388913dec04 3 #include <string>
mhennessy3 0:3388913dec04 4 #include <list>
mhennessy3 0:3388913dec04 5 #include <mpr121.h>
mhennessy3 0:3388913dec04 6 #include <SDFileSystem.h>
mhennessy3 0:3388913dec04 7 #include <wave_player.h>
mhennessy3 0:3388913dec04 8
mhennessy3 0:3388913dec04 9 DigitalOut myled(LED1); //use for indication
mhennessy3 0:3388913dec04 10 DigitalOut myled2(LED2);
mhennessy3 0:3388913dec04 11 DigitalOut myled3(LED3);
mhennessy3 0:3388913dec04 12 DigitalOut myled4(LED4);
mhennessy3 0:3388913dec04 13
mhennessy3 0:3388913dec04 14 DigitalOut ledSignal(p24);
mhennessy3 0:3388913dec04 15 DigitalOut passReady(p22);
mhennessy3 0:3388913dec04 16
mhennessy3 0:3388913dec04 17 Servo myservo(p21);
mhennessy3 0:3388913dec04 18 Serial pc(USBTX, USBRX); //kinect USB
mhennessy3 0:3388913dec04 19
mhennessy3 0:3388913dec04 20
mhennessy3 0:3388913dec04 21 // Create the interrupt receiver object on pin 26
mhennessy3 0:3388913dec04 22 InterruptIn interrupt(p26);
mhennessy3 0:3388913dec04 23 // Setup the i2c bus on pins 9 and 10
mhennessy3 0:3388913dec04 24 I2C i2c(p9, p10);
mhennessy3 0:3388913dec04 25 // Setup the Mpr121:
mhennessy3 0:3388913dec04 26 // constructor(i2c object, i2c address of the mpr121)
mhennessy3 0:3388913dec04 27 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
mhennessy3 0:3388913dec04 28
mhennessy3 0:3388913dec04 29 //PwmOut speaker(p23); //create a PwmOut object for the speaker
mhennessy3 0:3388913dec04 30 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
mhennessy3 0:3388913dec04 31 AnalogOut DACout(p18);
mhennessy3 0:3388913dec04 32 wave_player waver(&DACout);
mhennessy3 0:3388913dec04 33
mhennessy3 0:3388913dec04 34
mhennessy3 0:3388913dec04 35 int detect = 0; //detect a human or not
mhennessy3 0:3388913dec04 36 char c;
mhennessy3 0:3388913dec04 37 int key_code_p[4];
mhennessy3 0:3388913dec04 38 int j = 0;
mhennessy3 0:3388913dec04 39 int password[4] = {1, 2, 3, 4};
mhennessy3 0:3388913dec04 40 int passAccept = 0;
mhennessy3 0:3388913dec04 41
mhennessy3 0:3388913dec04 42
mhennessy3 0:3388913dec04 43 // Key hit/release interrupt routine
mhennessy3 0:3388913dec04 44 void fallInterrupt() {
mhennessy3 0:3388913dec04 45
mhennessy3 0:3388913dec04 46 int key_code=0;
mhennessy3 0:3388913dec04 47 int i=0;
mhennessy3 0:3388913dec04 48 int value=mpr121.read(0x00);
mhennessy3 0:3388913dec04 49 value +=mpr121.read(0x01)<<8;
mhennessy3 0:3388913dec04 50 // LED demo mod
mhennessy3 0:3388913dec04 51 i=0;
mhennessy3 0:3388913dec04 52 // puts key number out to LEDs for demo
mhennessy3 0:3388913dec04 53 for (i=0; i<12; i++) {
mhennessy3 0:3388913dec04 54 if (((value>>i)&0x01)==1) {
mhennessy3 0:3388913dec04 55 key_code=i;
mhennessy3 0:3388913dec04 56 key_code_p[j] = key_code;
mhennessy3 0:3388913dec04 57 j = j+1;
mhennessy3 0:3388913dec04 58 if(j==4){
mhennessy3 0:3388913dec04 59 j=0;
mhennessy3 0:3388913dec04 60 passReady = 1;
mhennessy3 0:3388913dec04 61 }
mhennessy3 0:3388913dec04 62 else {
mhennessy3 0:3388913dec04 63 passReady = 0;
mhennessy3 0:3388913dec04 64 }
mhennessy3 0:3388913dec04 65 }
mhennessy3 0:3388913dec04 66 }
mhennessy3 0:3388913dec04 67
mhennessy3 0:3388913dec04 68 if((password[0]== key_code_p[0]) &&(password[1]== key_code_p[1])&&(password[2]== key_code_p[2])&&(password[3]== key_code_p[3])){
mhennessy3 0:3388913dec04 69 passAccept = 1;
mhennessy3 0:3388913dec04 70 ledSignal = 1;
mhennessy3 0:3388913dec04 71
mhennessy3 0:3388913dec04 72 }
mhennessy3 0:3388913dec04 73 else{
mhennessy3 0:3388913dec04 74 passAccept = 0;
mhennessy3 0:3388913dec04 75 ledSignal = 0;
mhennessy3 0:3388913dec04 76 }
mhennessy3 0:3388913dec04 77
mhennessy3 0:3388913dec04 78 }
mhennessy3 0:3388913dec04 79
mhennessy3 0:3388913dec04 80 int main() {
mhennessy3 0:3388913dec04 81
mhennessy3 0:3388913dec04 82 passReady = 1;
mhennessy3 0:3388913dec04 83
mhennessy3 0:3388913dec04 84 interrupt.fall(&fallInterrupt); //Touch
mhennessy3 0:3388913dec04 85 interrupt.mode(PullUp); //Touch
mhennessy3 0:3388913dec04 86
mhennessy3 0:3388913dec04 87 while(1) {
mhennessy3 0:3388913dec04 88
mhennessy3 0:3388913dec04 89 float range = 0.0025;
mhennessy3 0:3388913dec04 90 myservo.calibrate(range, 360.0);
mhennessy3 0:3388913dec04 91 myservo = 1;
mhennessy3 0:3388913dec04 92
mhennessy3 0:3388913dec04 93
mhennessy3 0:3388913dec04 94 if(pc.readable()){
mhennessy3 0:3388913dec04 95 detect = pc.getc(); //if 1 someone has been detected
mhennessy3 0:3388913dec04 96 }
mhennessy3 0:3388913dec04 97
mhennessy3 0:3388913dec04 98 if(detect == 1 && ledSignal==0 ) {
mhennessy3 0:3388913dec04 99 FILE *wave_file;
mhennessy3 0:3388913dec04 100 wave_file=fopen("/sd/mydir/scarface_say_hello.wav","r");
mhennessy3 0:3388913dec04 101 waver.play(wave_file);
mhennessy3 0:3388913dec04 102 fclose(wave_file);
mhennessy3 0:3388913dec04 103
mhennessy3 0:3388913dec04 104 myservo = .3;
mhennessy3 0:3388913dec04 105 wait(30);
mhennessy3 0:3388913dec04 106 myservo = 1;
mhennessy3 0:3388913dec04 107 }
mhennessy3 0:3388913dec04 108 }
mhennessy3 0:3388913dec04 109 }