Jack the Ripper - Escape Room
by ruben.berenguer.abrego in Circuits > Arduino
1026 Views, 8 Favorites, 0 Comments
Jack the Ripper - Escape Room
Dare to embark on this adventure against the clock and be able to save one future victim from Jack the Ripper.
Get ready and open the box to begin this interactive experience, made using various electronic components controlled by an Arduino board. At the beginning, a countdown will be activated, which turns it into an escape room set in Victorian London, where a sinister character terrorized the residents of Whitechapel.
To complete the experience, you must successfully carry out 5 quests following the escape room script that you will listen, only then you will save the next objective from Jack the Ripper.
We hope you enjoy, hurry up.
Supplies
Electronic parts
General electronic parts
•Arduino One Board
•Proto Board
•Jumpers
Quest 1
•Morse Code Sticker
•Padlock
Quest 2
•Resistor x2
•Red Led
•Green Led
•Arduino Keypad 4x4
Quest 3
•Potentiometer
•Buzzer Quest 4
•Resistor x6
•Red Led x3
•Potentiometer x3
Quest 5
•Photoresistor
•Resistor
•Servomotor
Materials
Tools
•Wooden Boards
•Spray Paint
•Rubber Handle
•Wood Glue
•Hinges
•Solder Tin
•Glue
•Paper to make the letter
•Saw •Welder
ELECTRICAL CONNECTION DIAGRAM. Quest 2
ELECTRICAL CONNECTION DIAGRAM. Quest 3
ELECTRICAL CONNECTION DIAGRAM. Quest 4
ELECTRICAL CONNECTION DIAGRAM. Quest 4
STEP 3: FLOW DIAGRAM AND CODE.
Code
#include
#include int start = 35; //PROVA 2 DATA const byte FILES = 4;
const byte COLUMNES = 4;
char keys[FILES][COLUMNES] = { {‘1’,’2’,’3’,’A’}, {‘4’,’5’,’6’,’B’}, {‘7’,’8’,’9’,’C’}, {‘*’,’0’,’#’,’D’} };
byte filesPins[FILES] = {23, 25, 27, 29};
byte columnesPins[COLUMNES] = {22, 24, 26, 28};
Keypad keypad = Keypad( makeKeymap(keys), filesPins, columnesPins, FILES, COLUMNES );
int correcte = 52;
int incorrecte = 53;
int contador = 0; //PROVA 3 SO int buzzer = A7; int tono = A8; int Re = 39; int boto = 38;
//PROVA 4 RGB
const int Potenciometre1 = A0;
int entrada1 = 0;
int sortida1 = 0;
const int Potenciometre2 = A1;
int entrada2 = 0; int sortida2 = 0;
const int Potenciometre3 = A2;
int entrada3 = 0; int sortida3 = 0;
// PROVA 5 LDR
int pinLDR = A6;
int sortida = 0;
int valorLDR = 0;
Servo ull;
void setup(){ Serial.begin(9600);
pinMode(start, INPUT);
//PROVA 2 DATA
pinMode(correcte, OUTPUT);
pinMode(incorrecte, OUTPUT);
contador = 0;
digitalWrite(incorrecte, HIGH);
//PROVA 3 SO
pinMode(buzzer,OUTPUT);
pinMode(tono, INPUT);
pinMode(boto, INPUT);
pinMode(Re, OUTPUT);
//PROVA 4 RGB
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(51, OUTPUT);
pinMode(49, OUTPUT);
pinMode(47, OUTPUT);
//PROVA 5 LDR
ull.attach(43);
} void loop(){ if(digitalRead(start) == HIGH){ // PROVA 2 DATA char key = keypad.getKey();
if (key){ Serial.println(“BOTO:”);
Serial.println(key);
} if (keypad.isPressed(‘3’)) { delay(50);
contador = 1;
delay(50); Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (contador == 1 && keypad.isPressed(‘1’)) { delay(50);
contador = 2; delay(50); Serial.println(“CONTADOR:”);
Serial.println(contador); } if (contador == 2 && keypad.isPressed(‘0’)) {delay(50);
contador = 3; delay(50);
Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (contador == 3 && keypad.isPressed(‘8’)) { delay(50);
contador = 4;
delay(50);
Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (contador == 4){ digitalWrite(correcte, HIGH);
digitalWrite(incorrecte, LOW);
} if (keypad.isPressed(‘5’)) { delay(50); contador = 0;
delay(50); Serial.println(“CONTADOR:”); Serial.println(contador);
} if (keypad.isPressed(‘6’)) { delay(50); contador = 0;
delay(50);
Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (keypad.isPressed(‘7’)) { delay(50);contador = 0;
delay(50);
Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (keypad.isPressed(‘2’)) { delay(50); contador = 0;
delay(50); Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (keypad.isPressed(‘9’)) { delay(50);
contador = 0; delay(50);
Serial.println(“CONTADOR:”);
Serial.println(contador);
} if (keypad.isPressed(‘4’)) { delay(50);
contador = 0; delay(50); Serial.println(“CONTADOR:”);
Serial.println(contador);
} // PROVA 3 SO int sensor = analogRead(tono);
int frecuencia = map(sensor,0,1023,-100,500);
int duracion = 250;
tone(buzzer, frecuencia, duracion);
delay(100); Serial.print(“Frecuencia:”);
Serial.println(frecuencia);
if (frecuencia < 310 && frecuencia > 270 && digitalRead(boto) == HIGH){
digitalWrite(Re, HIGH);
} // Re: 294Hz // PROVA 4 RGB entrada1 = analogRead(Potenciometre1);
sortida1 = map(entrada1, 0, 1023, 0, 255);
entrada2 = analogRead(Potenciometre2);
sortida2 = map(entrada2, 0, 1023, 0, 255);
entrada3 = analogRead(Potenciometre3);
sortida3 = map(entrada3, 0, 1023, 0, 255);
analogWrite(A3, sortida1);
analogWrite(A4, sortida2);
analogWrite(A5, sortida3);
/*Serial.print(“Entrada: “);
Serial.println(entrada1);
Serial.println(entrada2);
Serial.println(entrada3);
Serial.print(“Sortida: “);
Serial.println(sortida1);
Serial.println(sortida2);
Serial.println(sortida3);
*/ delay(10);
if(sortida1 >= 240 && sortida2 >= 240 && sortida3 >= 240){ digitalWrite(51, HIGH);
} if(digitalRead(51) == HIGH && sortida1 >= 240 && sortida2 <= 15 && sortida3 >= 240){ digitalWrite(49,HIGH);
} if(digitalRead(51) == HIGH && digitalRead(49) == HIGH && sortida1 >= 240 && sortida2 <= 15 && sortida3 <= 15){digitalWrite(47, HIGH);
}
// PROVA 5 LDR
valorLDR = analogRead(pinLDR);
//Serial.print(“LDR: “);
//Serial.println(valorLDR);
sortida = map(valorLDR, 6, 679, 0, 180);
//Serial.print(“Sortida: “);
//Serial.println(sortida);
ull.write(sortida);
delay(100);
} } // Rellotge: //Boto start: DONE // Prova 2 DATA: DONE // Prova 3 SO: DONE // Prova 4 RGB: DONE // Prova 5 LDR: DONE
STEP 4: HOW TO BUILD THE PROJECT.
1. Construction of the box
2. Decoration of the box
3. Assembling the components in the box
4. Preparation of the letter where the story of the escape room is explained
CONCLUSIONS.
As a conclusion to this Halloween-based midcourse project, we have learned how easy it is to materialize the ideas that we have when making functional prototypes.
This is thanks to the ease and convenience that the Arduino board offers us, since thanks to the libraries and the great community it has, programming all the components that it makes available to you, becomes a very quick and simple process. In addition, the variety of components that can be used allows us a great variety of possibilities.