loading
Picture of Voice activated Rocket Launcher
This project combines an Emic 2 text- to- Speech module, a ultrasonic Ping))) distance sensor, the MAKE compressed air rocket launcher, and an Arduino Uno.
This project could be used for security, pranks, and many more fun things.  







Step 1: Materials

Picture of Materials
You will need to acquire the following materials:

-  Arduino Uno R3 (x1)

-  Breadboard (x1)

-  Emic 2 (Rev. A) Text- to – Speech module (x1)

-  PING))) Ultrasonic Distance Sensor (x1)

-  Jumper Wires

-  NPN transistor (MP 2222A) (x1)

-  100 Ohm resistor (x1)

-  8 AA battery holder (x1)

-  AA batteries (x8)

-   9V battery clip (x1)

-8 Ohm speaker (x1) (not shown)

-  Compressed Air Rocket Launcher (from Makershed) (x1)

-  Bicycle pump (x1)

-  Paper rocket

 



 
electroman90 (author) 1 year ago
There was a problem and the code for this project was not attached. I am attaching it in this comment:





/*

This program is based off the demonstration of the Emic 2 module by
Joe Grand [www.grandideastudio.com]

*/
#include

#define rxPin 2 // Serial input (connects to Emic 2 SOUT)
#define txPin 3 // Serial output (connects to Emic 2 SIN)

// set up a new serial port
SoftwareSerial emicSerial = SoftwareSerial(rxPin, txPin);
const int pingPin = 7;
long int duration, distanceInches, distanceCm;
byte LimitCm= 30;
byte ledPin = 12;

long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}



void setup() // Set up code called once on start-up
{
// define pin modes
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(ledPin,OUTPUT);

// set the data rate for the SoftwareSerial port
emicSerial.begin(9600);

/*
When the Emic 2 powers on, it takes about 3 seconds for it to successfully
intialize. It then sends a ":" character to indicate it's ready to accept
commands. If the Emic 2 is already initialized, a CR will also cause it
to send a ":"
*/
emicSerial.print('\n'); // Send a CR in case the system is already up
while (emicSerial.read() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':' character, so wait here until we receive it
delay(10); // Short delay
emicSerial.flush(); // Flush the receive buffer
}

void loop() // Main code, to run repeatedly
{
//check distance with Ping)))
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);

pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);

distanceInches = microsecondsToInches(duration);
distanceCm = microsecondsToCentimeters(duration);


check();
delay(100);

}

void check()
{
if (distanceCm > 30)
{
emicSerial.print('S');
emicSerial.print();
emicSerial.print('\n');
while (emicSerial.read() != ':');
}
if (distanceCm < 30)
{

emicSerial.print('S');
emicSerial.print("object detected. Fire.");
emicSerial.print('\n');
while (emicSerial.read() != ':');

digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);

}
}