Water Balloon Launcher

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

main.cpp

Committer:
mhennessy3
Date:
2016-05-02
Revision:
0:3388913dec04

File content as of revision 0:3388913dec04:

#include <mbed.h>
#include <Servo.h>
#include <string>
#include <list>
#include <mpr121.h>
#include <SDFileSystem.h>
#include <wave_player.h>

DigitalOut myled(LED1); //use for indication
DigitalOut myled2(LED2);
DigitalOut myled3(LED3);
DigitalOut myled4(LED4);

DigitalOut ledSignal(p24);
DigitalOut passReady(p22);
 
Servo myservo(p21);
Serial pc(USBTX, USBRX);  //kinect USB


// Create the interrupt receiver object on pin 26
InterruptIn interrupt(p26);
// Setup the i2c bus on pins 9 and 10
I2C i2c(p9, p10);
// Setup the Mpr121:
// constructor(i2c object, i2c address of the mpr121)
Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);

//PwmOut speaker(p23); //create a PwmOut object for the speaker
SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
AnalogOut DACout(p18);
wave_player waver(&DACout);


int detect = 0; //detect a human or not
char c;
int key_code_p[4];
int j = 0;
int password[4] = {1, 2, 3, 4};
int passAccept = 0;
 

// Key hit/release interrupt routine
void fallInterrupt() {

  int key_code=0;
  int i=0;
  int value=mpr121.read(0x00);
  value +=mpr121.read(0x01)<<8;
  // LED demo mod
  i=0;
  // puts key number out to LEDs for demo
  for (i=0; i<12; i++) {
        if (((value>>i)&0x01)==1) {
            key_code=i;
            key_code_p[j] =  key_code;
            j = j+1;
            if(j==4){
                j=0; 
                passReady = 1;     
            }
            else {
                passReady = 0;
            }
        }
  }

            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])){
                passAccept = 1;
                ledSignal = 1;
                
            }
            else{
                passAccept = 0;
                ledSignal = 0;      
            }
            
}

int main() { 
    
    passReady = 1;
 
    interrupt.fall(&fallInterrupt); //Touch
    interrupt.mode(PullUp); //Touch

    while(1) {

        float range = 0.0025;
        myservo.calibrate(range, 360.0); 
        myservo = 1;
        
        
        if(pc.readable()){
            detect = pc.getc(); //if 1 someone has been detected
        }
            
        if(detect == 1 && ledSignal==0 ) {
            FILE *wave_file; 
            wave_file=fopen("/sd/mydir/scarface_say_hello.wav","r");
            waver.play(wave_file);
            fclose(wave_file);
            
            myservo = .3;
            wait(30);
            myservo = 1;
        }
    }
}