Tumgik
francisco-furr-blog · 4 years
Text
Horror Game - Update #3 I’ve gathered a lot of the assets I needed in order to begin filming the video. I set everything up in a way that made sense and most closely conveyed what I had in mind for the full scale version. In this case, I had to borrow my mother’s daycare space since it was the most spacious room in the house. I set all 4 of the RGB lights in different spots of the room and set them to their respective colors - red, green, blue, and yellow. Actually being able to power these lights, though, took some maneuvering...all of these can be powered through a normal bulb socket, but due to their unorthodox placement, I needed to figure out a different way of powering them. So we took a couple of spare bases with the slot for the socket, and soldered the ground and power connectors to the bottom as shown in one of the images. There was an average wall plug at the end of the soldered cable, so we just plugged them into the wall afterwards. For filming, I used 2 cameras: The Panasonic G7 and Sony a6400, plus an Emart bi-color soft box in order to have a decent light source. I realize that the room is supposed tobe pitch black, but since everything here is being acted out, I just used that light in order to keep the dark atmosphere going while still being able to visibly show any facial expressions on camera. For the buttons, I used wifi hotspots that I had laying around, as well, and would just press the button on top to pretend like it triggered any of the lights, but the lights were being controlled through my smartphone. Since these are RGB lights, they have the ability to change back to white, which means that once all of the buttons had been pressed in the correct order, I could just change the color of every light to white - which is how I concluded the film, or plan to. I shot pretty much everything I need to edit the short film and hopefully it’ll look okay. Next week, I will either show the whole edited sequence or just screenshots of the acted portions to give some more insight on the progress of this project. Needless to say, I am very close to finishing.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
0 notes
francisco-furr-blog · 4 years
Text
Horror Room - Update
This is a follow-up to my last post on my progress in creating the Horror Room. I would like to start by providing a quick recap of my previous post:
I wanted to create an escape room called Horror Room. The goal of the game is to solve a puzzle where the player has to presses 4 different color coded buttons in a specific order, that would trigger the lights around the room to turn on. If the buttons were pressed in the right order, then every light turns white and the player gets to escape. If the player fails to press the buttons in the correct order, then the lights will turn themselves off every time the pattern is broken. If the player runs out of time, then the player loses.
I originally intended on doing this by having 4 Phillips Hue RGB Light Bulbs and their respective wifi hub connected to an Arduino module. The Arduino would contain a sensor to detect when the player is in the room to trigger a sound queue to begin the game. The buttons would be connected to the Arduino Board and the lights would be powered through wall outlets and would be controlled through the Arduino, essentially. Its a simple set up that could’ve worked if I had access to the right materials. However, I needed to think of something else since the Pandemic has prevented me from accessing the tools provided to me by my school.
The plan now is to reproduce the idea of this escape room by making a quick trailer/movie about it instead. I’ve been able to purchase the RGB light bulbs myself, though they will not have a hub. Instead, they will be controlled through a phone app since these work over Wifi/Bluetooth. The other option for controlling these lights is by purchasing the wire that plugs directly into the wall and into the bulbs - they do use standard connections, after all. I also have access to a light switch that allows me to control 3 lights at a time, but I think that I’m just going to trigger the lights using my smartphone.
I still have to purchase the cables to power the lights, but once I’ve done that, I can give more details about how I plan on executing the trailer. I still to figure out where I’m going to find the buttons to simulate the player pressing them to turn the lights on, which is another challenge ahead.
I’ve decided to include images of everything I have so far, but I still need to purchase more supplies. I will return with an update within the next 2 weeks - a much more substantial update including all of the supplies and some screen shots of the work in progress of the trailer.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
0 notes
francisco-furr-blog · 4 years
Text
Documentation #1: Horror Room: A Complete Turnaround
Initially, I fell in love with the idea of making an escape room. Something that would be very small and simple, but a lot of fun. Allow me to explain my thought process:
I wanted to create a horror room. This would be a very dark room, not very large with very few components inside . I had the idea of making it into a fun puzzle game where the user would step into the dark room and a sound queue would play, stating “find the buttons”. The user had to look for four different buttons inside of this dark room and they have to hit it in a specific order. Every time they press a button, for instance, the blue button, then the blue light bulb would light up and reveal a little bit more of the room, to make it easier to find the other buttons in the darkness. However, they must be pressed in a specific pattern. If the user breaks the pattern, then all of the lights turn themselves off and the user has to try again. If the user fails to solve the puzzle within 5 minutes, then they lose. If the user solves the puzzle and strikes all of the buttons in the correct pattern, then the yellow, green, blue, and red lights turn white uniformly brightening up the room with a sound queue that plays “thank you”. This would indicate that the user wins and gets to leave the room in victory.
I planned on accomplishing this through the use of Phillips Hue light bulbs since they are fully operable through an Arduino interface. So with a single Sparkfun Arduino kit, 4 soldered large buttons, a proximity sensor to detect when the user is inside of the room, and the light bulbs, this plan would’ve been executed rather easily.
However, do to the unfortunate rise of COVID-19 cases in NYC and the order to remain socially isolated, I was forced to leave behind the Arduino kits in school, we were not able to order the Phillips Hue light bulbs, and we no longer had access to the dark room. This project was completely destroyed before it even began.
Therefore, I needed to come up with a different plan - something that would at least deliver on the experience, to an extent, of what could’ve been. So in this case, I decided to prepare a trailer video instead.
This trailer will consist of me, the user, interacting with the escape room as originally intended. I will recreate the set at home, by using some of my own light bulbs, buttons, my living room, and a ton of video work. More details coming soon...
0 notes
francisco-furr-blog · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Francisco, Trevor, and Ricky.
This is the GameMan PS (an obvious parody of the Gameboy Advance SP). This device is made to run an endless runner where the only objective is to doge in-coming obstacles and beat your highest score. This game can be played by just one person (using one display) or by two people (each using one screen). This was done as our group’s final project for our Interactive Project Design class.
This project revolves around making a 2 player portable system using two Arduino boards, two 2x16 LCD screens, two power supplies, and some cardboard! We also used the Arduino desktop app for coding the game. We began with putting the Arduino boards together first. We placed all of the components to their respective places within the bread board and made sure that they were properly powered.
Some of these components include:
- Button: for inputs such as starting the game and jumping.
- Potentiameter: for adjusting the brightness of the display.
- LCD: for displaying the events of the game.
Once we’ve found the proper placement for everything keeping the amount of available pins (data passthroughs) and how comfortable the game is to play into consideration, we began implementing the code. For this, we used things such as:
- Liquidcrystal lcd (for labeling the pins the display will be utilizing).
- Commands for the buttons response (if (buttonPushed))
- Static byte graphic (Drawing the sprites in their respective positions)
- A counter that increases its value by “1″ every second that the player is still active.
After implementing the code, we ran a test to make sure that the game was working properly. Upon verification, we attached a power supply to the Arduino board so that it could work independently from our computer. We then used a second Arduino board and emulated the same code onto that one, with a similar set up (though, the screen, button, and brightness knob had to be positioned differently to accommodate for the second player on the right side of the console).
Now, this is when we started decorating the exterior of the console. We wrapped all of the cables together very gently (because these wires are very fragile), then we used a cardboard box to make the shape for the outer shell. We designed the casing to accommodate for being able to power the Arduino on/off easily. We also added a grip to make it easy to hold and to protect the components as much as possible.
Challenges:
It all seems to work very nicely.  Its suitable for single player and multiplayer. However, we were not able to make the boards communicate with each other properly or power both screens off of one Arduino board as originally intended. Well, we could technically power both screens with one board but both displays could not receive data equally because we were limited in the amount of pins needed. The code that we used, required more pins to be used in order to accommodate for all of the data needed to run the game.
We ended up having to use 2 boards for that reason, however, we were still very happy with the result.
0 notes
francisco-furr-blog · 5 years
Video
undefined
tumblr
Ricky Wu’s Camera Fly-through.
0 notes
francisco-furr-blog · 5 years
Text
vecilla_trevor_camerafly01
0 notes
francisco-furr-blog · 5 years
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Wu_Ricky_Environment(floor is textured)
0 notes
francisco-furr-blog · 5 years
Text
Tumblr media Tumblr media Tumblr media Tumblr media
Ferreira_francisco_environment
0 notes
francisco-furr-blog · 5 years
Text
Tumblr media Tumblr media Tumblr media
vcilla_trevor_environment
0 notes
francisco-furr-blog · 5 years
Text
Our Code
//the right motor will be controlled by the motor A pins on the motor driver const int AIN1 = 13;           //control pin 1 on the motor driver for the right motor const int AIN2 = 12;            //control pin 2 on the motor driver for the right motor const int PWMA = 11;            //speed control pin on the motor driver for the right motor //the left motor will be controlled by the motor B pins on the motor driver const int PWMB = 10;           //speed control pin on the motor driver for the left motor const int BIN2 = 9;           //control pin 2 on the motor driver for the left motor const int BIN1 = 8;           //control pin 1 on the motor driver for the left motor int switchPin = 7;             //switch to turn the robot on and off const int driveTime = 20;      //this is the number of milliseconds that it takes the robot to drive 1 inch                               //it is set so that if you tell the robot to drive forward 25 units, the robot drives about 25 inches const int turnTime = 8;        //this is the number of milliseconds that it takes to turn the robot 1 degree                               //it is set so that if you tell the robot to turn right 90 units, the robot turns about 90 degrees                               //Note: these numbers will vary a little bit based on how you mount your motors, the friction of the                               //surface that your driving on, and fluctuations in the power to the motors.                               //You can change the driveTime and turnTime to make them more accurate String botDirection;           //the direction that the robot will drive in (this change which direction the two motors spin in) String distance;               //the distance to travel in each direction /********************************************************************************/ void setup() {  pinMode(switchPin, INPUT_PULLUP);   //set this as a pullup to sense whether the switch is flipped  //set the motor control pins as outputs  pinMode(AIN1, OUTPUT);  pinMode(AIN2, OUTPUT);  pinMode(PWMA, OUTPUT);  pinMode(BIN1, OUTPUT);  pinMode(BIN2, OUTPUT);  pinMode(PWMB, OUTPUT);  Serial.begin(9600);           //begin serial communication with the computer  //prompt the user to enter a command  Serial.println("Enter a direction followed by a distance.");  Serial.println("f = forward, b = backward, r = turn right, l = turn left");  Serial.println("Example command: f 50"); } /********************************************************************************/ void loop() {  if(digitalRead(7) == LOW)  {                                                     //if the switch is in the ON position    if (Serial.available() > 0)                         //if the user has sent a command to the RedBoard    {      botDirection = Serial.readStringUntil(' ');       //read the characters in the command until you reach the first space      distance = Serial.readStringUntil(' ');           //read the characters in the command until you reach the second space      //print the command that was just received in the serial monitor      Serial.print(botDirection);                            Serial.print(" ");                                      Serial.println(distance.toInt());                      if(botDirection == "f")                          //if the entered direction is forward                                {        rightMotor(200);                                //drive the right wheel forward        leftMotor(200);                                 //drive the left wheel forward        delay(driveTime * distance.toInt());            //drive the motors long enough travel the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }      else if(botDirection == "b")                     //if the entered direction is backward        {        rightMotor(-200);                               //drive the right wheel forward        leftMotor(-200);                                //drive the left wheel forward        delay(driveTime * distance.toInt());            //drive the motors long enough travel the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }      else if(botDirection == "r")                      //if the entered direction is right        {        rightMotor(-200);                               //drive the right wheel forward        leftMotor(255);                                 //drive the left wheel forward        delay(turnTime * distance.toInt());             //drive the motors long enough turn the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }      else if(botDirection == "l")                    //if the entered direction is left        {        rightMotor(255);                                //drive the right wheel forward        leftMotor(-200);                                //drive the left wheel forward        delay(turnTime * distance.toInt());             //drive the motors long enough turn the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }    }  }  else  {     rightMotor(255);                                  //turn the right motor off     leftMotor(255);                                   //turn the left motor off  } } /********************************************************************************/ void rightMotor(int motorSpeed)                       //function for driving the right motor {  if (motorSpeed > 0)                                 //if the motor should drive forward (positive speed)  {    digitalWrite(AIN1, HIGH);                         //set pin 1 to high    digitalWrite(AIN2, LOW);                          //set pin 2 to low  }  else if (motorSpeed < 0)                            //if the motor should drive backward (negative speed)  {    digitalWrite(AIN1, LOW);                          //set pin 1 to low    digitalWrite(AIN2, HIGH);                         //set pin 2 to high  }  else                                                //if the motor should stop  {    digitalWrite(AIN1, LOW);                          //set pin 1 to low    digitalWrite(AIN2, LOW);                          //set pin 2 to low  }  analogWrite(PWMA, abs(motorSpeed));                 //now that the motor direction is set, drive it at the entered speed } /********************************************************************************/ void leftMotor(int motorSpeed)                        //function for driving the left motor {  if (motorSpeed > 0)                                 //if the motor should drive forward (positive speed)  {    digitalWrite(BIN1, HIGH);                         //set pin 1 to high    digitalWrite(BIN2, LOW);                          //set pin 2 to low  }  else if (motorSpeed < 0)                            //if the motor should drive backward (negative speed)  {    digitalWrite(BIN1, LOW);                          //set pin 1 to low    digitalWrite(BIN2, HIGH);                         //set pin 2 to high  }  else                                                //if the motor should stop  {    digitalWrite(BIN1, LOW);                          //set pin 1 to low    digitalWrite(BIN2, LOW);                          //set pin 2 to low  }  analogWrite(PWMB, abs(motorSpeed));                 //now that the motor direction is set, drive it at the entered speed }
0 notes
francisco-furr-blog · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media
Finally, after stabalizing the wheels, we applied the same code to both Arduino boards so that they would follow the same instructions. Once that was completed, we wrapped the combined Arduino boards in cardboard in order to replicate the aesthetics of an actual vehicle. In this case, since our project turned out to be rather large, we adapted the shape of a van to sensibly accommodate for the larger-than-usual size.
This vehicle is set to move on its own, at a rather speedy rate.
0 notes
francisco-furr-blog · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media
We used 2 Arduino boards for this project in order to power 4 wheels. Each Arduino board can power up to 2 wheels due to space constraints with the wires/connections.
Then we taped the Arduino boards together, along with paperclips for support. Then we had to connect both Arduino boards so that they could work together even if they have to be powered separately.
Both Arduino boards, however, can not reliably depend on a single power source hence we used to different power supplies to power individually.
0 notes
francisco-furr-blog · 5 years
Text
Exercise 3C motion alarm
0 notes
francisco-furr-blog · 5 years
Text
Exercise 3B distance sensor
0 notes
francisco-furr-blog · 5 years
Text
Exercise 3A servo motors
0 notes
francisco-furr-blog · 5 years
Text
Circuit 2c Simon Says Game
0 notes
francisco-furr-blog · 5 years
Text
Circuit 2B digital trumpet
0 notes