77
edits
Changes
→FINAL Proposal
I want to create something that actively engages the user in some manner, get the user involved, and speaks to the user, even if it’s not in a language most people would understand or know. In order to interact with the box a particular motion/interaction has to be done, and the box will only respond to that interaction. To initiate this interaction I'm going to use a piezo sensor. For now what the sensor is going to do is detect if the user taps or knocks on the box and the black box will respond in Morse code and say something to the user. Once I get that code and circuit established I'll work on adding to its to make it more complex.
== FINAL Code ==
/* Joeny Thipsidakhom
VIS 147A Final Project
BlackBox
*/
const int ledPinred = 13; //Red LED Pin 13
const int knockSensor = 0; //Piezo Sensor Pin 0
const int threshold = 100; //Sound threshold for Piezo Sensor
const int buttonPin1 = 1; //Second Button Pin 1
const int buttonPin2 = 2; //Second Button Pin 2
const int ledPinyellow1 = 3; //Yellow LED Pin 3
const int motor = 4; //Motor Pin 4
int buttonState1 = 0;
int buttonState2 = 0; // Variable to read button
int sensorReading = 0; // Variable to store the value read from the sensor
int ledState = LOW; // Variable used to store the last LED status
void setup() {
pinMode(ledPinred, OUTPUT); //Sets Red LED as Output
pinMode(ledPinyellow1, OUTPUT); //Sets Yellow LED as Output
pinMode(motor, OUTPUT); //Sets Motor as output
pinMode(buttonPin1, INPUT); //Sets Button 1 as Input
pinMode(buttonPin2, INPUT); //Sets Button 2 as Input
Serial.begin(9600); //Use the serial port
}
void loop() {
sensorReading = analogRead(knockSensor); // Read the sensor and set it in the variable sensorReading
buttonState1 = digitalRead(buttonPin1); // Read the button's state
buttonState2 = digitalRead(buttonPin2);
if (sensorReading >= threshold) { //If the sensor reading is greater than the threshold/hit,tapped,etc. do bellow
//H
digitalWrite(ledPinred, HIGH); //Turn Red LED ON
delay(250); //Wait 250ms
digitalWrite(ledPinred, LOW); //Turn Red LED OFF
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(750);
//E
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(750);
//Y
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(750);
}
if (buttonState1 == LOW){ //When button 1 is pressed do bellow
//H User
digitalWrite(ledPinyellow1, HIGH);
delay(250);
digitalWrite(ledPinyellow1, LOW);
delay(250);
digitalWrite(ledPinyellow1, HIGH);
delay(250);
digitalWrite(ledPinyellow1, LOW);
delay(250);
digitalWrite(ledPinyellow1, HIGH);
delay(250);
digitalWrite(ledPinyellow1, LOW);
delay(250);
digitalWrite(ledPinyellow1, HIGH);
delay(250);
digitalWrite(ledPinyellow1, LOW);
delay(750);
//I User
digitalWrite(ledPinyellow1, HIGH);
delay(250);
digitalWrite(ledPinyellow1, LOW);
delay(250);
digitalWrite(ledPinyellow1, HIGH);
delay(250);
digitalWrite(ledPinyellow1, LOW);
delay(750);
//H Blackbox
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(750);
//I Blackbox
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(750);
}
if (buttonState2 == HIGH){ //Loops unless button is pressed down and held
delay(1000); //Delays for 1 second
digitalWrite(motor, HIGH); //Run Motor
//H
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW); //Stop Motor
delay(750);
//E
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//L
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//L
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//O
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//A
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//R
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//E
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//Y
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//O
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//U
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//T
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//H
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//E
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//R
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(750);
digitalWrite(ledPinred, LOW);
delay(250);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
//E
digitalWrite(motor, HIGH);
digitalWrite(ledPinred, HIGH);
delay(250);
digitalWrite(ledPinred, LOW);
digitalWrite(motor, LOW);
delay(750);
}
delay(100); //Delay for 100ms before restarting loop
}