Water Balloon Launcher
Dependencies: 4DGL-uLCD-SE SDFileSystem Servo mbed wave_player
main.cpp@0:3388913dec04, 2016-05-02 (annotated)
- Committer:
- mhennessy3
- Date:
- Mon May 02 05:04:17 2016 +0000
- Revision:
- 0:3388913dec04
Water Balloon Launcher Code
Who changed what in which revision?
User | Revision | Line number | New 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 | } |